欢迎光临散文网 会员登陆 & 注册

Unity-ShaderLab:Name&&ShaderLab:旧版光照

2021-04-12 08:44 作者:unity_某某师_高锦锦  | 我要投稿

语法

为当前通道提供 PassName 名称。请注意,在内部,名称将转换为大写。

详细信息

为通道提供名称即可让 UsePass 命令能够引用该通道。

材质和光照参数用于控制内置顶点光照。顶点光照是为每个顶点计算的标准 Direct3D/OpenGL 光照模型。Lighting on 可开启光照。光照将受到 Material 代码块、ColorMaterial 命令和 SeparateSpecular 命令的影响。

注意:使用顶点程序时,材质/光照命令无效;因为在这种情况下,所有计算都在着色器中完整描述。建议现在使用可编程着色器,而不是旧版顶点光照。这些情况下,不要使用此处描述的命令,而是自行定义顶点和片元程序来自己执行所有的光照、纹理和任何其他操作。

对于任何渲染的几何体来说,第一个要计算的效果就是“顶点着色和光照”。它在顶点级别上运行,并计算在应用纹理之前使用的基色。

语法

顶级命令控制是否使用固定函数光照,以及一些配置选项。主要设置位于 Material 代码块中,下面进行了详细介绍。

Color

将对象设置为纯色。颜色是用圆括号括起的四个 RGBA 值,或者是用方括号括起的颜色属性名称。

Material

Material 代码块用于定义对象的材质属性。

Lighting

要使 Material 代码块中定义的设置生效,必须使用 Lighting On 命令启用光照。如果关闭光照,则直接从 Color 命令获取颜色。

SeparateSpecular

此命令将镜面反射光照添加到着色器通道的末尾,因此镜面反射光照不受纹理影响。仅当使用 Lighting On 时才有效。

ColorMaterial

使用每顶点颜色代替材质中设置的颜色。AmbientAndDiffuse 将替换材质的 Ambient 值和 Diffuse 值;__Emission__ 将替换材质的 Emission 值。

Material 代码块

此代码块包含有关材质如何对光线做出反应的设置。可省略这些属性中的任何一个,在这种情况下它们默认为黑色(即没有效果)。

漫射颜色 (Diffuse color):漫射颜色分量。这是对象的基色。

环境颜色 (Ambient color):环境颜色分量。这是 Lighting 窗口中设置的环境光产生的对象光照颜色。

镜面反射颜色 (Specular color):对象的镜面高光颜色。

光泽度数字 (Shininess number):高光的清晰度,介于 0 到 1 之间。如果为 0,您会看到一个巨大的高光,看起来很像漫射光照;如果为 1,您会看到一个微小的斑点。

发光颜色 (Emission color):任何光源均未照射到对象时的对象颜色。

照射到对象的光源的完整颜色为:

环境光 * Lighting 窗口中的 Ambient Intensity 设置 + (光源颜色 * 漫射 + 光源颜色 * 镜面反射) + 发光

对于照射对象的所有光源,重复该等式的光源部分(圆括号内)。

通常情况系会希望保持漫射和环境光颜色相同(Unity 的所有内置着色器都会如此)。

示例

始终以纯红色渲染对象:

将对象着色为白色并应用顶点光照的基本着色器:

以下是一种扩展版本,可将材质颜色添加为材质检视面板 (Material Inspector) 中的可见属性:

最后是一个完整的顶点光照着色器(另请参阅 SetTexture 参考页面):


Unity-ShaderLab:Name&&ShaderLab:旧版光照的评论 (共 条)

分享到微博请遵守国家法律