Renderer’s rendering order
Unity 中,rendering order 是根據以下參數進行排序:Camera depth >  ZTest、ZWrite > RenderQueue > Sorting layer > Order in layer > Material render queue > Camera order algorithm。
- Camera depth
- 數字越大越晚畫
- 通常無法搭配 Clear Flags: Don’t Clear,因為不會清除 depth buffer (z-buffer)
- 程式設定 camera.depth
- 選擇場景中的 camera 編輯
 
- Material type
- 先畫不透明物件 (opaque),再畫透明物件 (transparent)
- 根據 material render queue 來決定,數值小於等於 2500 為不透明物件,數值大於 2500 為透明物件
 
- Sorting layer
- 數字越大越晚畫
- 大多數的 renderer 都有支援此參數,但僅有 SpriteRenderder 以及 ParticleSystemRenderer 能在預設的 Inspector 編輯(不過自定義編輯器來達成)
- 程式設定 renderer.sortingLayerID
- 在 Tag Manager 編輯 Sorting layer
- 選擇場景的 SpriteRenderder 或是 ParticleSystemRenderer 編輯 Sorting layer
 
- Order in layer
- 數字越大越晚畫
- 大多數的 renderer 都有支援此參數,但僅有 SpriteRenderder 以及 ParticleSystemRenderer 能在預設的 Inspector 編輯
- 程式設定 renderer.sortingOrder
- 選擇場景的 SpriteRenderder 或是 ParticleSystemRenderer 編輯 Order in layer
 
- Material render queue
- 數字越大越晚畫
- 預設值會從 Shader 取得,但可自行定義
- 不透明物件 (Opaque)、半透明物件 (AlphaTest)、透明物件 (Transparent) 預設值分別 2000、2450、以及 3000
- 通常只有透明物件會關閉 ZWrite
 
- 程式設定 material.renderQueue
- 選擇專案中的 material 編輯
 
- Camera render algorithm
- 無法在預設編輯器修改,使用程式調整
- 非透明物件排序演算法 camera.opaqueSortMode- Default:在 Unity 2018.1 預設值 FrontToBack
- FrontToBack:粗略低由近到遠排序繪製,能使得 GPU rendering 時有更好的效能
- NoDistanceSort:關閉排序繪製,能降低 CPU 的使用量
 
- 透明物件排序演算法 camera.transparencySortMode- Default:根據 camera projection mode 調整
- Perspective:根據 camera 位置到物件中心 (object center) 的距離排序
- Orthographic:根據 view plane 到物件中心 (object center) 的距離排序
- CustomAxis:制定 axis 排序,專門用於 2D 遊戲製作,可參考這篇文章
 
 
 
                    
                     
                    
                 
                    
                





 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号