HDRP UI上渲染模型的解决方式及常见问题
综述1.RT+RawImage2.CameraStacking/Compositor
综述
这是个很常见的需求,在SRP中一般有两种方式,分别是CameraStacking和使用RenderTexture缓存纹理,输出到RawImag进行渲染的方式,但由于SRP的版本迭代,当前主流的UnityLTS版本所适配的URP/HDRP版本都有些老旧,甚至没有CameraStacking功能,所以经常需要使用常规的RT+RawImage方案,过程中又会遇到SRP中的各种问题。笔者会基于不同的版本进行讲解。
1.RT+RawImage
Unity:.2019.4.10f HDRP 7.3.1(verified version) 由于官方消息显示2020.2版本才会正式加入HDRP Compositor,而笔者为了稳定性使用的都是LTS版本进行开发,所以只能使用常规方案。
新建RT相机,RawImage,先使用默认设置 区分SkyFog以及PPV2的Layer,同时修改MainCamera的VolumeLayerMask,保证GameInspector的显示正确 对于RTCamera同样也要设置VolumeLayerMask,每一层Layer都对应着相应的图像处理,如果遭遇了类似的问题,很有可能是Layer设置有误所致,ProbeLayerMask类似,不再赘述
变更前SkyFogPPV2![在这里插入图片描述](https://img-blog.csdnimg.cn/2020121914023781.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219140801983.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219140955739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219140717641.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219140827394.png)
剔除Background显示
通常做法减去Fog![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219141739408.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219142512457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219141832784.png) 通常设置Background为None,但是HDRP中存在Volume,所以需要剔除SkyFog部分(也可能是其他Layer,需要一一排查)去除多余的Layer后,仍然有莫名其妙的图像存在于下层,根据FrameDebugger分析,这是其他相机(MainCamera)纹理叠加所致,目测是HDRP的相机规则
所以要换个思路,采用Color背景,再用HDRenderPipelineAsset.ColorBufferFormat设置解决.
切换为Color背景修改ColorBuffer![在这里插入图片描述](https://img-blog.csdnimg.cn/2020121914380467.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219143907887.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201219143827536.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3NDYwMw==,size_16,color_FFFFFF,t_70) 需要开启A通道的Buffer用以剔除Background 背景色 Alpha可以调节Background的透明度
2.CameraStacking/Compositor
笔者所用版本无法使用,先占个坑。
|