Unity Shader (二)裁剪(Culling)
阿新 • • 發佈:2019-02-11
前言: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的面數,而只有頭帶可能是需要渲染的,這個時候你作為程式可以建議模型師直接將頭帶做成雙面的即可,這樣就沒這麼消耗了