4 namespace UnityStandardAssets.ImageEffects
6 [RequireComponent (typeof(Camera))]
7 [AddComponentMenu (
"Image Effects/Camera/Tilt Shift (Lens Blur)")]
9 public enum TiltShiftMode
14 public enum TiltShiftQuality
21 public TiltShiftMode mode = TiltShiftMode.TiltShiftMode;
22 public TiltShiftQuality quality = TiltShiftQuality.Normal;
25 public float blurArea = 1.0f;
28 public float maxBlurSize = 5.0f;
31 public int downsample = 0;
33 public Shader tiltShiftShader = null;
34 private Material tiltShiftMaterial = null;
37 public override bool CheckResources () {
40 tiltShiftMaterial = CheckShaderAndCreateMaterial (tiltShiftShader, tiltShiftMaterial);
47 void OnRenderImage (RenderTexture source, RenderTexture destination) {
48 if (CheckResources() ==
false) {
49 Graphics.Blit (source, destination);
53 tiltShiftMaterial.SetFloat(
"_BlurSize", maxBlurSize < 0.0f ? 0.0f : maxBlurSize);
54 tiltShiftMaterial.SetFloat(
"_BlurArea", blurArea);
55 source.filterMode = FilterMode.Bilinear;
57 RenderTexture rt = destination;
58 if (downsample > 0f) {
59 rt = RenderTexture.GetTemporary (source.width>>downsample, source.height>>downsample, 0, source.format);
60 rt.filterMode = FilterMode.Bilinear;
63 int basePassNr = (int) quality; basePassNr *= 2;
64 Graphics.Blit (source, rt, tiltShiftMaterial, mode == TiltShiftMode.TiltShiftMode ? basePassNr : basePassNr + 1);
67 tiltShiftMaterial.SetTexture (
"_Blurred", rt);
68 Graphics.Blit (source, destination, tiltShiftMaterial, 6);
71 if (rt != destination)
72 RenderTexture.ReleaseTemporary (rt);