https://blog.csdn.net/u011748727/article/details/68947207
如果不了解Shader中如何使用模板緩沖區,可能看不懂例子。
渲染順序,我理解為進入顯卡流水管線的順序,會對Z、Stencil和Color Buffer帶來影響。
當然,能否最終被繪制到屏幕上,還要看深度檢測和模板檢測的結果。
能夠影響渲染順序的因素有:
1、Camera Depth
相機組件上設置的相機深度,深度越大越靠后渲染。
2、Sorting Layer
在Tags & Layers設置中可見
3、Order In Layer
相對於Sorting Layer的子排序,用這個值做比較時只有都在同一層時才有效。
4、RenderQueue
Shader中對Tags設置的“Queue”。
下面是結果:
1、Camera Depth
永遠最高。Camera Depth小的一定先進渲染管線。
2、當Sorting Layer和Order In Layer相同時
RenderQueue小的先進渲染管線。
3、當Sorting Layer和Order In Layer不相同時!
3.1 當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue都在[0~2500]或[2501~5000]時,SortingLayer和OrderInLayer的排序生效。
3.2 當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue分別在[0~2500]和[2501~5000]時,則一定會按照RenderQueue繪制,無視SortingLayer、OrderInLayer的排序。
過程:
呂布Shader會向StencilBuffer中寫 1
關羽Shader會根據StencilBuffer來進行顯示判斷
當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue都在[0~2500]或[2501~5000]時,順序為:
調高RenderQueue也是一樣
RenderQueue對渲染順序沒有影響。
注意:
當兩個材質使用了不同的RenderQueue,且這兩個RenderQueue分別在[0~2500]和[2501~5000]時,則一定會按照RenderQueue繪制,無視SortingLayer、OrderInLayer。
推測是因為2500為Unity作為Opacity和Transparent的分界線,因此如果兩個材質的Queue分別在分界線的兩邊,也就是一個不透明一個透明,則Unity一定會先把不透明的物體送進渲染管線,無論Sorting Layer和Order In Layer到底怎么排序。
另外:
MehRenderer的sortingLayer與Canvas的sortingLayer同級
MehRenderer的sortingOrder與Canvas的OrderInLayer同級
————————————————
版權聲明:本文為CSDN博主「枸杞憂天」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011748727/article/details/68947207