ShaderLab: Pass

ShaderLab: Pass

Pass過程導致一個物體的幾何被渲染一次。


語法:

Pass { [Name and Tags] [RenderSetup] }

基本的Pass命令包含了一系列的渲染步驟命令。


Name and tags

一個Pass過程可以定義它的名字和任意數量的標籤,名字/值字符串傳達了Pass給渲染引擎的意圖。


Render State Setup

一個Pass過程設置顯卡的各種各樣的狀態,例如是否開啓透明度混合(alpha blending),是否使用深度測試(depth testing)等等。

命令格式如下:


Cull:

Cull Back | Front | Off

多邊形的剔除模式(查閱Cull and Depth page)


ZTest:

ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)

設置深度緩衝區測試模式(查閱Cull and Depth page)


ZWrite:

ZWrite On | Off

設置深度緩衝區寫入模式(查閱 Cull and Depth page)


Blend:

Blend sourceBlendMode destBlendMode

Blend sourceBlendMode destBlendMode, alphaSourceBlendMode alphaDestBlendMode

BlendOp colorOp

BlendOp colorOp, alphaOp

AlphaToMask On | Off

設置透明度混合,透明度操作,透明度覆蓋模式(查閱Blending page)


ColorMask:

ColorMask RGB | A | 0 | any combination of R, G, B, A

設置顏色通道寫入遮罩,寫入顏色遮罩0關閉全部顏色通道的渲染。默認模式是寫入全部通道(RGBA),

但是對於某些特別的效果你也許需要留下特定的未改變的通道,或者完全關閉顏色寫入。


Offset:

Offset OffsetFactor, OffsetUnits

設置Z緩衝區深度偏移。(查閱Cull and Depth page)


Legacy Fixed Function Shader Commands: 廢棄的命令

一些命令是用於編寫過時的fixed function style Shader。這是因爲考慮到了被棄用的函數功能,

編寫surface shader 或者 shader program 允許了更多的靈活性。不管怎樣,因爲每一個用fixed function style編寫的簡單的shader

會變得更加簡單,所以這裏有一些命令。在使用fixed function shader時會忽視它們。


Fixed Function Lighting and Material:


Lighting On | Off

Material { Material Block }

SeparateSpecular On | Off

Color Color-value

ColorMaterial AmbientAndDiffuse | Emission

所有這些控制fixed function per-vertex lighting,開啓時,建立材質顏色,開啓specular highlights,

提供默認顏色如果頂點燈光關閉的話,並且控制網格頂點顏色如何影響光照。(查閱Material page)


Fixed Function Fog:

Fog { Fog Block }

設置fixed function fog參數(查閱Fog page)


Fixed Function AlphaTest:

AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue

開啓fixed function alpha testing(查閱Alpha Testing page)


Fixed Function Texture Combiners:

在渲染狀態建立之後,通過SetTexture命令,你能指定一些貼圖並且他們應用的合併模式。

SetTexture textureProperty { combine options }


Details:

Shader的Pass過程與Unity的渲染管道有以下幾種方式的交互:

例如:一個Pass可以通過標籤來指定它只能被用於defered shading。

確定的Pass也可以被同一個物體執行多次,例如在forward rendering中,這個"ForwardAdd"Pass會被執行多次,

取決於有多少燈光影響這個物體。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章