包含此页的版本:
不含此页的版本:
注意:该ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表此页面上的功能是旧版的,仅用于向后兼容性。如果您的着色器在 GPU 上运行的程序。更多信息
请参阅术语表源文件包含 HLSL 代码,Unity 会完全忽略这些命令。如果您的着色器源文件不包含 HLSL 代码,Unity 会在导入时将这些命令编译为常规着色器程序。
| 功能名称 | 内置渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息 请参阅术语表 |
通用渲染管线(URP) | 高清渲染管线 (HDRP) | 定制 SRP |
|---|---|---|---|---|
| 传统照明 | 是的 | 不 | 不 | 不 |
材质和光照参数用于控制内置顶点光照。顶点照明是为每个顶点计算的标准 Direct3D/OpenGL 照明模型。开灯会打开它。照明受以下因素影响材质(Material)定义表面应如何渲染的资产。更多信息
请参阅术语表块、ColorMaterial 和 SeparateSpecular 命令。
顶点着色和照明是为任何渲染几何体计算的第一个效果。它在顶点级别运行,并计算在应用纹理之前使用的基色。
顶级命令控制是否使用固定功能照明,以及一些配置选项。主要设置在材质块中,详见下文。
Color color
将对象设置为纯色。颜色是括号中的四个 RGBA 值,或方括号中的颜色属性名称。
Material {Material Block}
Material 块用于定义对象的材质属性。
Lighting On | Off
要使 Material 块中定义的设置具有任何效果,您必须使用 Lighting On 命令启用 Lighting。如果照明关闭,则直接从“颜色”命令中获取颜色。
SeparateSpecular On | Off
此命令使高光照明添加到着色器通道的末尾,因此高光照明不受纹理的影响。仅当使用“照明打开”时才有效。
ColorMaterial AmbientAndDiffuse | Emission
使用每个顶点的颜色,而不是材质中设置的颜色。AmbientAndDiffuse 替换材质的 Ambient 和 Diffuse 值;发射取代材料的发射值。
这包含材质如何对光线做出反应的设置。这些属性中的任何一个都可以被省略,在这种情况下,它们默认为黑色(即没有效果)。
漫反射色:漫反射颜色组件。这是对象的基色。
环境颜色:环境色组件。这是对象被环境光源不来自任何特定方向的光源,在所有方向上为场景提供相等的光源。更多信息
请参阅术语表设置。
镜面反射颜色镜面反射高光的颜色。
请参阅术语表:对象的高光的颜色。
光泽数:高光的锐度,介于 0 和 1 之间。在 0 时,您会得到一个看起来很像漫反射照明的巨大高光,在 1 时,您会得到一个小斑点。
发射颜色:对象未受到任何光线照射时的颜色。
照射到对象的光源的全色为:
环境光 * 光照窗口的环境强度设置 + (光源颜色 * 漫反射 + 光源颜色 * 镜面反射)+ 发射
对于击中对象的所有光源,方程中的光源部分(括号内)将重复。
通常,你希望保持“漫反射”和“环境”颜色相同(所有内置着色器都这样做)。
始终以纯红色渲染对象:
Shader "Solid Red" {
SubShader {
Pass { Color (1,0,0,0) }
}
}
将对象涂成白色并应用顶点光照的基本着色器:
Shader "VertexLit White" {
SubShader {
Pass {
Material {
Diffuse (1,1,1,1)
Ambient (1,1,1,1)
}
Lighting On
}
}
}
将材质颜色添加为材质中可见的属性的扩展版本检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表:
Shader "VertexLit Simple" {
Properties {
_Color ("Main Color", COLOR) = (1,1,1,1)
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
}
Lighting On
}
}
}
最后,一个成熟的顶点光照着色器(另请参阅 SetTexture 参考页):
Shader "VertexLit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
}
}
}