U3D中物体的渲染顺序
U3D中物體的渲染順序
1,由SHADER中渲染隊列及隊列中的值決定
2,在同一隊列中,若材質相同
2.1 對于UI,按其在場景層級中的先后順序繪制
2.2 對于3D不透明物體,按其離相機的距離,由近到遠繪制,這樣可以減少像素重繪
2.2 對于3D透明物體,按其離相機的距離,由遠到近繪制,只有這要才能正確繪制所有半透明物體,反之,有些半透明物體將看不到半透效果
?3,在同一隊列中,若材質不同,繪制順序不定,在framedebuger中,移動相機,可以看到繪制順序不斷變換。
舉例:有兩個不透明隊列:20001(a,b,c三個物體,使用材質1,Z值由小到大),20002(e,f,g三個物體,使用材質2,Z值由小到大),讓它們沿相機Z軸排成一排
當移動相機時,在framedebuger中查看6個物體的繪制順序,可以看到繪制順序不斷變動如:
<a,b,c,e,f,g> < a,b,e,c,f,g> ?< e,f,a,b,c,g>
但不管怎么樣變動,同一隊列中的物體總是保持順序不變,即a總在b前,b總在c前,e總在f前,f總在g前
一般情況下我們不需要關心相同隊列物體繪制的先后順序,但當需要處理zwrite, ztest, stenciltest時,就必須精確控制物體的繪制順序,否則就實現不了想要的效果。如利用模板測試繪制鏡子,必須先繪制鏡子,將鏡子區域的像素的模板值寫為某個值X,然后繪制被鏡子照到的物體(如果模板值為X則繪制,否則丟棄像素)。
4,物體上掛接的腳本的執行先后完全沒有什么規律。只是確定的一點是: 若a的start先于b,c的start執行,則a.update也先于b.c的update執行
?
setsiblingindex(idx)設置兄弟結點先后順序時,若idx處已有結點X,則結點X及其后的所有節點后移
?
posted on 2018-06-14 10:19 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的U3D中物体的渲染顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNITY 画布的粗浅理解
- 下一篇: UNITY中使用不安全代码的相关设置