2.计算机图形学 之 Shader 结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qqagsd155451/article/details/83479982
  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]
}

猜你喜欢

转载自blog.csdn.net/qqagsd155451/article/details/83479982