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 }
PostEffectRenderer

相关文章: