4 namespace UnityStandardAssets.ImageEffects
7 [AddComponentMenu(
"Image Effects/Blur/Blur")]
8 public class Blur : MonoBehaviour
12 public int iterations = 3;
18 public float blurSpread = 0.6f;
27 public Shader blurShader = null;
29 static Material m_Material = null;
30 protected Material material {
32 if (m_Material == null) {
33 m_Material =
new Material(blurShader);
34 m_Material.hideFlags = HideFlags.DontSave;
40 protected void OnDisable() {
42 DestroyImmediate( m_Material );
48 protected void Start()
51 if (!SystemInfo.supportsImageEffects) {
56 if (!blurShader || !material.shader.isSupported) {
63 public void FourTapCone (RenderTexture source, RenderTexture dest,
int iteration)
65 float off = 0.5f + iteration*blurSpread;
66 Graphics.BlitMultiTap (source, dest, material,
67 new Vector2(-off, -off),
68 new Vector2(-off, off),
69 new Vector2( off, off),
70 new Vector2( off, -off)
75 private void DownSample4x (RenderTexture source, RenderTexture dest)
78 Graphics.BlitMultiTap (source, dest, material,
79 new Vector2(-off, -off),
80 new Vector2(-off, off),
81 new Vector2( off, off),
82 new Vector2( off, -off)
87 void OnRenderImage (RenderTexture source, RenderTexture destination) {
88 int rtW = source.width/4;
89 int rtH = source.height/4;
90 RenderTexture buffer = RenderTexture.GetTemporary(rtW, rtH, 0);
93 DownSample4x (source, buffer);
96 for(
int i = 0; i < iterations; i++)
98 RenderTexture buffer2 = RenderTexture.GetTemporary(rtW, rtH, 0);
99 FourTapCone (buffer, buffer2, i);
100 RenderTexture.ReleaseTemporary(buffer);
103 Graphics.Blit(buffer, destination);
105 RenderTexture.ReleaseTemporary(buffer);