9 namespace UnityStandardAssets.ImageEffects
12 [AddComponentMenu(
"Image Effects/Blur/Motion Blur (Color Accumulation)")]
13 [RequireComponent(typeof(Camera))]
17 public float blurAmount = 0.8f;
18 public bool extraBlur =
false;
20 private RenderTexture accumTexture;
22 override protected void Start()
24 if (!SystemInfo.supportsRenderTextures)
32 override protected void OnDisable()
35 DestroyImmediate(accumTexture);
39 void OnRenderImage (RenderTexture source, RenderTexture destination)
42 if (accumTexture == null || accumTexture.width != source.width || accumTexture.height != source.height)
44 DestroyImmediate(accumTexture);
45 accumTexture =
new RenderTexture(source.width, source.height, 0);
46 accumTexture.hideFlags = HideFlags.HideAndDontSave;
47 Graphics.Blit( source, accumTexture );
53 RenderTexture blurbuffer = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
54 accumTexture.MarkRestoreExpected();
55 Graphics.Blit(accumTexture, blurbuffer);
56 Graphics.Blit(blurbuffer,accumTexture);
57 RenderTexture.ReleaseTemporary(blurbuffer);
61 blurAmount = Mathf.Clamp( blurAmount, 0.0f, 0.92f );
64 material.SetTexture(
"_MainTex", accumTexture);
65 material.SetFloat(
"_AccumOrig", 1.0F-blurAmount);
69 accumTexture.MarkRestoreExpected();
72 Graphics.Blit (source, accumTexture, material);
73 Graphics.Blit (accumTexture, destination);