1. 程式人生 > >Unity Shader (二)裁剪(Culling)

Unity Shader (二)裁剪(Culling)

前言:unity當處理完頂點後,就會進入裁剪。為什麼是在這個時候呢? 因為下一個階段我們會進行片段程式(Fragment)的處理,而這個過程實際上是非常消耗的,所以我們這裡講的裁剪+深度測試(下文講)是對進入片段之前的頂點優化過程,減少片段處理的壓力。

裁剪(Culling)

分類:Cull Back | Front | Off

預設情況下是裁剪的背面,因為背向相機的其實是沒必要去處理著色的,所以這裡會進行裁剪掉。比如:我們例子裡面的童子的頭帶, 紅色部分為背面的

例圖:

這裡寫圖片描述

程式碼:

Shader "Custom/Culling" {
    Properties {
        //定義一個貼圖
_MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { pass{ cull front Color (1,0,0,1) //背面渲染紅色 } Pass { SetTexture [_MainTex] { Combine texture * primary //正面賦予貼圖 } } } FallBack "Diffuse"
}

儘量不要用雙面渲染

有時候我們的需求就是要看雙面,而不是渲染單面。那麼可以使用 Cull Off 或者使用兩個pass分別渲染正面和背面。不過這個需求不要到處使用,因為他會增加面數和pass數量。對一個簡單的模型的面數如下,從圖裡面可以看到我們加了2k的面數,而只有頭帶可能是需要渲染的,這個時候你作為程式可以建議模型師直接將頭帶做成雙面的即可,這樣就沒這麼消耗了
這裡寫圖片描述
這裡寫圖片描述