2.計算機圖形學之 Shader 結構
阿新 • • 發佈:2019-01-06
-
shader 語言
opengl: SGI公司研發,跨平臺。GLSL: Opengl shader language.
dx(DirectX):微軟研發。非跨平臺,效能非常好。HLSL: hight level shader lauguage.
cg:微軟 和 英偉達 聯合研發,跨平臺,效能非常好,基於C語言。 -
unity shader 語言:
opengl dx cg
CG 和 HLSL 包括在 CGPROGRAM … ENDCG 語法塊內
GLSL 包括在 GLSLPROGRAM … ENDGLSL 語法塊內
自己的語言 shader lab -
unity shader分類:
fixed shader: shader1.0 開關式 (shader已經開發完成,只需開啟就可使用,不開啟就不使用)。
頂點、片段著色器: shader2.0 (功能裡面的公式,使用者可以自定義,不僅可以使用開關式)。
surface shader: Unity自帶的(也是shader1.0和2.0的封裝)非常強大。 -
shader 結構:
//shader 的名字會顯示在 Unity 的 Inspector 中選擇 shader 的選單裡面
Shader "shader 的名字" {
// 屬性
[Properties]
// 可能存在多個 subshader。Unity 會在所有 subshader 列表中選擇當前環境中可用的第一個 subshader(對應顯示卡)
Subshader {
// subshader 的標籤
[Tags]
// 給多個 pass 公用的設定(測試之類的)
[Common State]
// 可能存在多個 pass, 每個 pass 都會引起一次渲染過程
Pass {
// pass 的標籤
[Pass Tags]
// 渲染設定, 如顏色混合
[Render Setup]
// 紋理設定,只有在 fixed function shader 中才可用
[Texture Setup]
}
// 可以有多個 pass
[其他的 Pass]
}
// 可以有多個 subshader
[其他的 Subshader]
// 當所有 subshader 失敗的時候, 使用 Fallback 指定的 shader
[Fallback]
// 當有自定義 shader 的設定 UI 時候用
[CustomEditor]
}