(二) 计算机图形学 之 Shader 结构

Shader 介绍:


1. shader语言
opengl: SGI公司研发,跨平台(Linux、Android)
GLSL: Opengl shader language

dx(DirectX):微软研发。非跨平台 性能非常好(Windows)
HLSL: hight level shader lauguage

cg:微软 和 英伟达 联合研发,跨平台,性能非常好,基于C语言(同时支持DirectX和opengl)

2. unity shader 语言:
opengl dx cg
CG 和 HLSL 包括在 CGPROGRAM ... ENDCG 语法块
GLSL 包括在 GLSLPROGRAM ... ENDGLSL 语法块
自己的语言 shader lab(Unity使用ShaderLab来进行着色程序的编写,对不同平台进行编译,重点支持Cg语言)
博主推荐直接使用cg就可以

3. unity shader 分类:
fixed shader:固定管线着色器, shader1.0 开关式 (shader已经开发完成,只需打开就可使用,不打开就不使用)
顶点片段着色器: shader2.0  (功能里面的公式 用户可以自定义,不仅可以使用开关式)(干预模型形态的shader)
surface shader: 表面着色器,Unity自带的(也是shader1.0和2.0的封装)非常强大(干预像素着色的shader)

4. shader 结构

//shader 的名字会显示在 Unity 的 Inspector 中选择 shader 的菜单里面
Shader "shader 的名字"
{
    // 属性块  定义的一些属性,定义在这里的属性会在Unity的属性查看器里显示出来
    [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]
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarFe-Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值