Unity - Manual: ShaderLab: Legacy Lighting
1.Shader 语言:
cs
OpenGL:SGL 跨平台性能非常好 GLSL语言 OpenGL Shader Language
DX:微软 非跨平台 性能非常好 HLSL语言 High Level Shader Language
CG:微软和英伟达 联合开发CG 跨平台 基于C语言 性能非常好
2.Unity Shader语言
cs
CG和HLSL 包括在 CGPROGRAM .... ENDCG 语法块内
GLSL 包含在 GLSLPROGRAM .... ENDGLSL 语法块内
自己的语言 Shader Lab
3.Unity Shader 分类:
cs
Fixed Shader:Shader 1.0 主要是 开关式的Shader
顶点片段 着色器:Shader 2.0 不光能打开,而且功能里面的公式可以自己定义
Surface Shader:前两个的封装
4.Shader 结构:
cs
//Shader 的名字会显示在 Unity 的 Inspector 中 选择 Shader的菜单里面
Shader "Shader名字"
{
//属性
[Properties]
//SubShader就是对应的一个显卡 可能存在多个SubShader Unity会在所有 SubShader列表中选择当前环境中的第一个 SubShader
SubShader
{
//SubShader 的标签
[Tags]
//给多个Pass 公用的设置
[Common State]
//可能存在多个Pass ,每个Pass都会引发一次渲染
Pass {
//Pass的标签
[Pass Tags]
//渲染设置,如颜色混合
[Render SetUp]
//纹理设置,只有在 Fixed Function Shader 中才可用
[Texture SetUp]
CGPROGRAM
..........
..........
ENDCG
}
//可以有多个Pass
[其他的 Pass]
}
//可以多个SubShader
[其他的SubShader]
//当所有SubShader 失败的时候,使用Fallback指定的Shader
FallBack "Diffuse"
//当有自定义 Shader 的设置 UI 时候使用
[CustomEditor]
}