关于unity后处理那点事
1、后处理本质上是绘制一个与屏幕同宽高的面片。
2、使用onRenderImage接口来进行前后渲染纹理的处理,该函数处在LateUpdate(常用于相机变换操作)之后,以及辅助线和UI绘制之前,该函数会在所有的透明和不透明的pass执行完后被调用。
3、通过Graphics.Blit函数来选择传入给定的材质,根据材质的shader来对src纹理进行后处理的各种操作,操作完之后存放在dest纹理中,unity会用封装好的函数把dest绘制在屏幕中。
4、后处理shader的pass中,需要关闭裁剪,关闭深度写入,深度测试总是通过,不关闭深度写入的话,就会拿深度值和深度缓冲中的值比较,但是由于透明的物体关闭了深度写入,所以比较的是和透明物体混合的不透明物体的深度缓冲的值,那么透明物体的混合操作可能就会没用了。
5、用于传入参数的C#脚本建议挂在相机上,因为需要获取到camera组件。