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