这是我在《游戏架构-核心技术与面试精粹》看的,记录一下~
后处理是啥?
后处理(Post-Process Effect)是一种对渲染之后的画面进行再加工的技术
针对每一个摄像机,在绘制到用户窗口之前,都有机会对整个画面进行二次夹工,再将装饰后的画面呈现给用户
后处理能方便地制作全局效果,也会带来性能消耗
通常覆盖全场景的想过,都会在摄像机上想办法实现
改变画面风格,通常使用后处理技术来实现
将摄像机照射出的内容渲染到一张图中,就是 RT(RenderTexture,渲染图)
将摄像机内容绘制到渲染图的过程被称为 RTT(Render to Texture)
unity中 RT 对应的就是RendererTexture 就对应的 RenderTexture
既可以动态创建内存中的RT,也可以在工程目录下创建一个RT资源
eg:
Create->RenderTexture 可以赋值到 Camera 的渲染目标(Render Target)上,运行游戏就可以看到图片内容被修改了
渲染接口
unity中有专门编写后处理的专门接口
在任何继承自MonoBehaviour的子类中,都可以重写下面的函数来改变最终的渲染效果
Void OnRenderImage(RenderTextrue sourceTextrue, RenderTexture destTexture_
每次程序渲染之前,都会调用这个函数
其中sourceTexture就是RT
可通过下面的接口函数直接渲染给destTexture,则就是默认的渲染方式
Graphics.Blit(sourceTexture, destTexture);//blit 位块传送
也可以指定某个材质 renderMaterial 进行渲染,输出到 destTextrue 中
Graphics.Blit(sourceTexture, destTexture, renderMaterial);
如果想实现某种效果,只需在对应 shader 中实现渲染算法即可