1. 程式人生 > >2.計算機圖形學之 Shader 結構

2.計算機圖形學之 Shader 結構

  1. shader 語言
    opengl: SGI公司研發,跨平臺。GLSL: Opengl shader language.
    dx(DirectX):微軟研發。非跨平臺,效能非常好。HLSL: hight level shader lauguage.
    cg:微軟 和 英偉達 聯合研發,跨平臺,效能非常好,基於C語言。

  2. unity shader 語言:
    opengl dx cg
    CG 和 HLSL 包括在 CGPROGRAM … ENDCG 語法塊內
    GLSL 包括在 GLSLPROGRAM … ENDGLSL 語法塊內
    自己的語言 shader lab

  3. unity shader分類:
    fixed shader: shader1.0 開關式 (shader已經開發完成,只需開啟就可使用,不開啟就不使用)。
    頂點、片段著色器: shader2.0 (功能裡面的公式,使用者可以自定義,不僅可以使用開關式)。
    surface shader: Unity自帶的(也是shader1.0和2.0的封裝)非常強大。

  4. 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] }