protected void Blur(RenderTexture source, eBlurType blurType) { RenderTexture tmpBlurTexture = RenderTexture.GetTemporary(source.width, source.height, source.depth, source.format); Blur(source, tmpBlurTexture, blurType); RenderTexture.ReleaseTemporary(tmpBlurTexture); }
protected void Blur(RenderTexture source, RenderTexture destination, eBlurType blurType) { float widthOverHeight = source.width / (1.0f * source.height); float oneOverBaseSize = 1.0f / 512.0f; int pass = (int)blurType; for (int i = 0; i < m_blurIteration; ++i) { float offsetScale = (1.0f + (i * 0.25f)) * m_blurRange; BlurMat.SetVector(ShaderPropertyID.BlurOffset, new Vector4(0, offsetScale * oneOverBaseSize, 0, 0)); Graphics.Blit(source, destination, BlurMat, pass); BlurMat.SetVector(ShaderPropertyID.BlurOffset, new Vector4((offsetScale / widthOverHeight) * oneOverBaseSize, 0, 0, 0)); Graphics.Blit(destination, source, BlurMat, pass); } Graphics.Blit(source, destination, BlurMat, pass); }