设想,一个游戏物体A的深度是20(相对于相机的距离),另一个游戏物体B的深度是30,而恰好它们与相机的视角在一条线上,这样,游戏物体A会盖住游戏物体B,然而我们有时候可以需要做一些特殊效果,让比较远的物体优先显示出来,诸如这样的问题,我们就可以用RendererQueue来结局,在Shader中,RendererQueue可以用Tag来结局,官方一共提供了以下几种渲染队列Tag来供我们选择,这里因为较为简单,博主直接写出优先级,并列出一个官方的例子,有兴趣的读者可以深入研究并且可以看一下其他Tag.(优先级越低越先渲染)
Background
:1000,队列为Background的总是最先渲染,这里注意,Background只是个名字,与游戏物体中的Background并没有任何关系,Background中的Tag不一定是Background。
Geometry: 2000,这个是游戏物体的默认渲染顺序
AlphaTest:3000,Alpha
测试的游戏物体使用这个队列。它是一个与Geometry队列分开的队列,因为它是在绘制完所有实心对象之后渲染,所以渲染经过alpha测试的对象更有效。
Transparent
:4000,半透明的游戏物体使用这个队列。
Overlay
:5000,总是要最后才渲染的游戏物体使用这个队列
示例:
Shader "Transparent Queue Example"
{
SubShader
{
Tags { "Queue" = "Transparent" }
Pass
{
//shader body...
}
}
}