避免半透明模型自身透明叠加的一种方法。

        最近开发的内容需要给选择的物体额外渲染一层叠加的颜色,最开始想到的办法是把这个物体是哦那个URP的RenderObjects使用透明材质额外再渲染一次。但是由于场景使用了去色功能的PostProcessing,而要求这个物体不能受到这个PostProcessing效果的影响,本来以为把RenderObjects的Event设置到AfterPostProcessing或者更后面,但是实际上都不可行(Unity的渲染机制还是不够了解啊)。只能让这些透明物体在额外添加的摄像机上渲染,让这个渲染结果去覆盖前面的摄像机(必须是和原来主摄像机没关系的摄像机,不能是作为主摄像机Stack列表里面的摄像机)。但是这样就出现一个问题,渲染这些透明物体的时候,无法使用已经被渲染的物体的深度(应该说能利用,只是我不会:(,呵呵)。思来想去,在额外渲染的摄像机上使用单独的渲染设置,默认渲染内容为空,并额外添加两次RenderObjects,第一次使用一个完全黑色且完全透明但是强制写入深度的覆盖材质(有没有更好的办法),这样就只有深度被实际上保留,第二次使用透明材质渲染,不必写入深度,这样就得到了自身不会叠加的透明结果。

好吧,希望没有把自己说晕了。

猜你喜欢

转载自blog.csdn.net/ttod/article/details/130635989