1.设置Camera加layer来拍摄RTT,然后给shader处理,如果不是所有layer都拍摄,就不会处理遮挡,如果为了遮挡所有层都拍摄效率就很低了,其实也可以通过前景、背景的深度比较来处理遮挡。
2.用RenderWithShader,处理遮挡,相当于场景从新渲染遍,效率低。
3.GrabPass,使用简单,但不是所有硬件都支持。
4.CommandBuffer:通过在渲染循环中插入自己渲染内容来实现,
int screenCopyID = Shader.PropertyToID("_ScreenCopyTexture");
buf.GetTemporaryRT (screenCopyID, -1, -1, 0, FilterMode.Bilinear);
buf.Blit (BuiltinRenderTextureType.CurrentActive, screenCopyID);
buf.Blit (screenCopyID, blurredID);
新版Unity这一功能才比较稳定,老版本有bug。
5.ReflectProbe:速度快、操作麻烦,要矫正指标需要使用射线和包围盒求交点,Unity中可以用boxProjectCubemapDirection。
6.后处理:类似扭曲这种不要求精准对像素,直接不拍摄了,放在后处理中来实现。