Unity为了解决渲染顺序的问题提供了渲染队列(Render Queue)这一解决方案。.
我们可以使用Queue标签来解决我们模型归于哪个渲染队列
名称 | 队列索引号 | 描述 |
---|---|---|
Background | 1000 | 这个渲染队列会再任何其他队列之前被渲染,我们通常使用该队列来渲染那些需要绘制在背景上的物体 |
Geometry | 2000 | 默认的渲染队列,大多数物体都使用这个队列。不透明物体使用这个队列 |
AlphaTest | 2450 | 需要透明度测试的物体使用这个队列。在Unity5中它从Geometry队列中被单独分出来,这是因为所在所有不透明物体选然后再算然他们会更高效 |
Transparent | 3000 | 这个队列中的物体会在所有Geometry和AlphaTest物体渲染后,再从后往前的顺序进行渲染。任何使用了透明度混合(例如关闭了深度写入的shader)的物体都应该使用该队列 |
Overlay | 4000 | 该队列用于实现一些叠加效果。任何需要在最后渲染的物体都该使用该队列 |
SubShader{
Tags { "Queue" = "AlphaTest"}
Pass{...}
}
SubShader{
Tags{"Queue" = "Transparent"}
Pass{
ZWrite Off ... //写在pass里代表这个pass的深度写入关闭 如果写在SubShader里代表其内所有pass都会关闭深度写入
}
}