Unity的屏幕后期处理效果,使用MonoBehaviour.OnRenderImage来实现。
转载请注明出处:http://www.cnblogs.com/jietian331/p/7228063.html
如代码如下:
基类:
1 using UnityEngine; 2 3 [RequireComponent(typeof(Camera))] 4 public abstract class PostEffectRenderer : GameBehaviour 5 { 6 protected abstract string ShaderName { get; } 7 8 Material m_mat; 9 10 void Start() 11 { 12 if (!SystemInfo.supportsImageEffects) 13 NotSupport(); 14 } 15 16 protected virtual void OnRenderImage(RenderTexture src, RenderTexture dest) 17 { 18 Graphics.Blit(src, dest, Mat); 19 } 20 21 protected void NotSupport() 22 { 23 enabled = false; 24 } 25 26 protected Material Mat 27 { 28 get 29 { 30 if (!m_mat) 31 { 32 Shader shader = Shader.Find(ShaderName); 33 if (shader != null && shader.isSupported) 34 m_mat = new Material(shader); 35 else 36 NotSupport(); 37 } 38 return m_mat; 39 } 40 } 41 }