因为经常遇到渲染顺序的问题,所以特别写了这个方便记忆。
下面按权重高低依次介绍:
1、Shader中的Queue
数值越大越晚渲染
2、Shader中的ZTest和ZWrite
一旦有ZWrite,那么渲染的层级就会收到z-buffer的影响。
3、Camera的Depth,值越大越晚渲染。
草图方便记忆
如果有两个Camera的互相的ZTest不会影响,每个Camera开始渲染的时候,都会Clear(Z+stencil)从FrameDebugger中可以看出来
4、SortingLayer,所有的Renderer都有这个属性
在Canvas和SpriteRenderer、ParticleSystem->Renderer里面都有SortingLayer可以在Inspector配置
可以再这边创建SortingLayer
顺序也是这样
5、Order In Layer(c#中属性名为sortingOrder),其实所有的Renderer都有这个属性
在Canvas和SpriteRenderer、ParticleSystem->Renderer里面都有Order in Layer可以在Inspector配置
顺序也是这样
sortingLayer和order in layer(c#中属性名为sortingOrder)的属性只适用于Shader中没有ZWrite的,一旦Shader有进行ZTest、并且ZWrite有写入,那么Shader的ZTest优先级就是最高的
反之,一旦没有ZWrite,那么控制Renderer的sortingLayer和order in layer(c#中属性名为sortingOrder)的属性就有效果
或者使用SortingGroup组件也可以用于修改这两个属性