背景:
对于URP中的某个物体,我们如果希望他正反面都可以被渲染。
通常会有两种解决方案:
1.将网格设置为双面网格。(此种情况Mesh.RecalculateNormals计算结果可能会异常,解决可参考网格法线生成异常解决)
2.将材质设置为双面材质Render Face设置为Both
期望的结果:
异常结果
很明显,可以看出渲染顺序按照1,2,3的顺序渲染了,导致显示异常问题。
异常原因
经测试后发现,如果勾选了材质球的双面渲染,在透明模式下,会按照网格中三角形标号,从前往后进行面片渲染。
导致排序靠后的面片,渲染在了前面。
而不是按照我们的期望,先渲染RenderFace=Back的情况,再渲染RenderFace=Front的情况。
结合图3和图4可已看出, 1面渲染在了最上面,2面渲染在中间,3面渲染在了最后面。对应着网格中三角形标号的先后顺序。
解决方案
1.不再将材质球设置为双面渲染, 改为只渲染正面(RenderFace=Front)
2.增加网格面,将网格设置为双面网格。(需要注意,设置为双面网格可能会导致自动生成法线接口Mesh.RecalculateNormals计算结果异常,解决可参考网格法线生成异常解决)
即可解决透明物体自身渲染的异常问题。
文章来源:https://www.toymoban.com/news/detail-807578.html
文章来源地址https://www.toymoban.com/news/detail-807578.html
到了这里,关于【Unity渲染】URP透明物体自身渲染穿插异常问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!