着色器参考
Unity 的着色器可用以下三种不同方式之一来编写:
作为表面着色器,
作为顶点和片元着色器,以及
作为固定功能着色器。
着色器教程可指导您根据需要选择合适的类型。
无论选择哪种类型,着色器代码的真实核心总是置于一种称为 ShaderLab 的语言中。该语言用于组织着色器的结构。它看起来像这样:
Shader "MyShader" { Properties { _MyTexture ("My Texture", 2D) = "white" { } // 其他属性如颜色或矢量也要用到这里 } SubShader { //这里是以下内容的“核心” // - 表面着色器或 // - 顶点和程序着色器,或 // - 固定功能着色器 } SubShader { // 这里,上面的 SubShader 比能够在旧版图形卡上运行的 SubShader 更简单 }}
我们建议您先阅读下列部分中关于 ShaderLab 语法的一些基本概念,然后再继续阅读其他部分中关于表面着色器或顶点和片元着色器的内容。由于固定功能着色器仅使用 ShaderLab 编写,因此您将在 ShaderLab 参考中找到与其相关的更多信息。
以下参考包括了不同类型着色器的大量实例。有关针对表面着色器的更多实例,可从资源部分获得 Unity 内置着色器的来源。Unity 的图像效果包包含许多有趣的顶点和片元着色器。
继续阅读着色器参考,并查看着色器教程!
编写表面着色器
表面着色器示例
表面着色器中的自定义光照模型
表面着色器光照示例
具有 DX11 密铺 (Tessellation) 的表面着色器
编写顶点和片元着色器
在 Cg 中访问着色器属性
提供 顶点数据给顶点程序
内置着色器包含文件
预定义着色器预处理宏
Built-in state variables in shader programs
GLSL 着色器程序
ShaderLab 语法:Shader
ShaderLab 语法:Properties
ShaderLab 语法:子着色器 (SubShader)
ShaderLab 语法:Pass
ShaderLab syntax: Color, Material, Lighting
ShaderLab 语法:剔除和深度测试 (Culling & Depth Testing)
ShaderLab 语法:纹理组合器 (Texture Combiners)
ShaderLab 语法:雾 (Fog)
ShaderLab 语法:Alpha 测试 (Alpha testing)
ShaderLab 语法:混合 (Blending)
ShaderLab 语法:通道标记 (Pass Tags)
ShaderLab 语法:名称 (Name)
ShaderLab 语法:绑定通道 (BindChannels)
ShaderLab 语法:使用通道 (UsePass)
ShaderLab 语法:GrabPass
ShaderLab 语法:子着色器标记 (SubShader Tags)
ShaderLab 语法:回退 (Fallback)
ShaderLab 语法:自定义编辑器 (CustomEditor)
ShaderLab 语法:其他命令
高级 ShaderLab 主题
Unity 渲染管线
编写着色器时的性能提示
使用替换着色器渲染
自定义材质编辑器
使用深度纹理
相机的深度纹理
特定平台的渲染差异
着色器细节等级
ShaderLab 内置值