屏幕后处理方案
后处理效果的性能问题主要在:
1. 屏幕每个像素都要进行计算。
2. 可能会创建多张RenderTexture的空间占用。
3. 多次Blit操作,比如高斯模糊多次迭代。
4. 偶尔还需要新建摄像机渲染到RenderTexture。
方法一:
Camera的Target Texture保持为空,通过在OnRenderImage函数内,调用Graphics.Blit方法实现后处理。
缺点:If you did not supply a RenderTexture to the camera's targetTexture, Unity will trigger CPU ReadPixel (Get data back from GPU), which will stall the whole GPU until finish. Super slow
参考:Post Process Mobile Performance : Alternatives To Graphics.Blit , OnRenderImage
方法二:
为Camera的Target Texture指定一个RT,直接渲染到RT。
问题:当Camera开启MSAA或者HDR的时候,会导致后处理不起效果,猜测在开启HDR的时候,会创建一个HDR RenderTexture,相机的绘制都会写入HDR的RT里。
引用: