URP14全屏Blit后处理改动,如何实现效果优化?

摘要:最近用回URP,发现RendererFeature这部分改动很大,启用了之前HDRP的RTHandle,RTHandle的设计类似于优化版本的RenderTexture, 可以统一控制缩放或者并非一对一的RT内存申请。 并且Blit的方式变
最近用回URP,发现RendererFeature这部分改动很大,启用了之前HDRP的RTHandle,RTHandle的设计类似于优化版本的RenderTexture, 可以统一控制缩放或者并非一对一的RT内存申请。 并且Blit的方式变成了先SetTarget后做一次绘制,也是和HDRP对齐。 在新的URP中实现全屏后处理效果可以走StackPostProcessing的扩展或者写RendererFeature, 这篇文章写的很详细: https://zhuanlan.zhihu.com/p/621840900 官方对于新的RenderFeature修改,给出了完整Demo案例: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/renderer-features/how-to-fullscreen-blit.html 但是,真正使用时会发现这个教程有点问题,用的是_CameraOpaqueTexture,如果屏幕内有半透明内容则会出现错误。 目前的解决方法是拷贝FullscreenPass自己修改。但该Pass对应的ShaderGraph材质仍有问题, 若是正交相机求世界空间位置则内部未做判断(或是因为过早点击生成代码所致)。 而自定义StackPostProcessing做法,可能相比RendererFeature更方便一些: https://docs.unity3d.com/Packages/com.unity.postprocessing@3.4/manual/Writing-Custom-Effects.html Tips: 若需要Texture2D传入,可使用接口Shader.SetGlobalTexture,SharedPropertyBlock无效