Shader

Shader分類

Shader按管線分類一般分爲固定渲染管線與可編程渲染管線
1. 固定渲染管線 這是標準的幾何&光照(Transforming&Lighting)管線,功能是固定的,它控制着世界,視,投影變換及固定關照和紋理混合.T&L管線可以被渲染狀態控制,矩陣,光照和採製參數.功能比較有限,基本所有的顯卡都能正常運行.
2. 可編程渲染管線 對渲染管線中的頂點運算和像素運算分別進行編程處理,而無須像固定渲染管線那樣套用一些固定函數,取代設置參數來控制管線.

Unity3D三種Shader對比

三種Shader共同點:

  1. 都必須從唯一一個跟Shader開始
  2. Properties參數部分,作用及用法完全相同
  3. 具體功能都在SubShader裏(SubShader子shader,Shader會自上而下運行第一個硬件能支持的SubShader,主要作用是對不同硬件的支持.
  4. 都可以打標籤,例如Tags{“RenderType”=”Opaque”} LOD 200 以及Lighting On等
  5. 都可以Fallback
  6. 都可以處理基本的功能,例如光照反射(Dissfuse)以及鏡面反射(Specular).但是Vertex and Fragment和Surface都能實現Fixed function實現不了的高級功能,例如基於uv計算的效果等等.

三種Shader不同點

  1. Fixed function shader以及Vertex and Fragment Shader在Subshader下面還有Pass{},但是Surface Shader,由於已經將具體內容打包在光照模型了,不能加Pass{},加了會報錯.
  2. Fixed function shader每句代碼之後沒有分號,但是V&F shader以及Surface shader每句代碼之後都必須加分號
  3. 核心結構不通
    |Fixed function shader|Vertex and Fragment Shader|Surface Shader|
    |Material{} 以及SetTexutre[MainTex]{}|
    的核心是
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
ENDCG
Fixed function shader Vertex and Fragment Shader Surface Shader
Material{} SetTexutre[MainTex]{} CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" ENDCG 採用unity自帶光照模型Lambert,只需要一個表面處理函數surf即可CGPROGRAM #pragma surface surf Lambert ENDCG
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章