半透明物体的特性是什么?
半透明物体需要显示被它遮挡的的物体。
ok……场景中物体大致就分为半透物体和不透明物体,我们会分别讨论不透明物体与不透明物体,半透明与不透明物体,半透明物体与半透物体之间的渲染关系。
先来几个概念开胃
在shader中,我们可以设置渲染类型,设置渲染队列值,渲染队列值表示该物体的绘制顺序。
引擎在渲染时有一个规则,所有半透明物体会在所有不透明物体绘制完成之后绘制。所以引擎会自动给场景物体排序,保证这条原则正确执行。
明确这个之后,需要再回顾渲染管线逐片元处理阶段流程: 模板测试--》alpha测试--》深度测试--》合并图元
渲染队列(RenderQueue):控制绘制顺序,
深度测试 ( ZTest):处理遮挡关系,
深度写入 ( Zwrite):控制通过深度测试的像素写入深度缓冲,
混合(blend):控制通过测试的图元和缓冲中的图元是否进行混合。
深度测试保证了被不透明物体遮挡的物体不会被渲染,不透明物体通常会关闭深度写入(zwrite_off),开启混合(blend on)操作。
为什么要关闭深度写入?
假设两面玻璃,正常情况下 我们可以透过前面的玻璃看到后面的玻璃,但是开启深度写入的话,在绘制两面玻璃的时候会将图元写入深度缓冲,那么在绘制第二面玻璃的时候,通过深度测试的图元会直接覆盖第一面镜子的渲染结果,这时候渲染的结果就是我们不能通过前面的玻璃看到后
本文发布于:2024-02-01 22:15:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679692439772.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |