1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 半透明物体与深度写入

半透明物体与深度写入

时间:2022-09-10 05:57:32

相关推荐

半透明物体与深度写入

单独一个自交叉的半透明物体提前深度写入

因为无法控制一个物体每个片元的渲染顺序,所以对于自交叉的半透明物体,

如果只用1个Pass,关闭深度写入,因为渲染顺序不固定,有可能先渲染前面片元,后渲染后面片元,前面片元混合后面片元的效果变成了后面片元混合前面片元的效果。

如果只用1个Pass,开启深度写入,因为渲染顺序不固定,有的地方先渲染前面片元,导致后面片元无法通过深度测试而不渲染,有的先渲染后面片元,就有正确的半透明效果,整体效果不统一。

所以使用两个Pass,第1个Pass只进行深度写入,第2个Pass根据深度值写入颜色值,此效果无法显示物体内部的透明度混合,适用于整体的淡入淡出。

多个半透明物体渲染关闭深度写入

当半透明物体之间不存在相互遮挡的情况,并且按照距离摄像机从远到近的顺序进行渲染,开启或关闭深度写入,渲染结果都是正确的。

当半透明物体之间存在相互遮挡的情况,开启或关闭深度写入都会造成显示错误,以下比较开启或关闭深度写入的区别:

开启深度写入,如下图,CubeA有一部分在CubeB后面,CubeB先渲染,CubeA后渲染,CubeA在CubeB后面的那一部分无法通过深度测试,因而不渲染。

关闭深度写入,如下图,CubeA有一部分在CubeB后面,CubeB先渲染,CubeA后渲染,CubeA在CubeB后面的那一部分, 应该是CubeB混合CubeA的效果,变成CubeA混合CubeB的效果。

比较之下,开启深度写入错误更明显,所以关闭深度写入,如果要完全正确显示就是要使用别的解决方案,比如顺序无关透明(order independent transparency, OIT)技术。

当内部互相遮挡的物体之间也相互遮挡摆放时,深度写入设置存在冲突,根据需求的效果,选择解决方案。

参考资料:

/candycat1992/Unity_Shaders_Book/issues/153

/question/60898307/answer/182508073

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。