Legacy Lighting(传统照明)
材质和照明参数用于控制内置顶点照明。顶点光照是标准的Direct3D和OpenGL的光照模型,计算每一个顶点。照明打开它。照明是由材质块,材质和separatespecular命令的影响。
注意:当顶点程序使用时,材质/灯光命令没有影响;在这种情况下,所有计算都在着色器中完全描述。建议使用可编程着色器而不是传统的顶点照明。对于这些你不使用任何这里所描述的命令,而是定义自己的顶点和片段程序,完成所有的照明,纹理和任何其他的。
顶点着色和照明是任何渲染几何计算的第一个效果。它在顶点级别上运行,并计算在纹理应用之前使用的基色。
语法:
顶层命令控制是否使用固定功能的灯光,以及一些配置选项。主要设置在材料块,进一步详细如下。
1、Color
Color color
将对象设置为固体颜色。颜色是四RGBA值在括号,或颜色属性的名称在方括号。
2、Material
Material {
Material Block
}
材质块用于定义对象的材质属性。
3、Lighting
Lighting On | Off
对于在材质块中定义的设置有任何影响,您必须启用灯光与灯光的命令。如果灯光是关闭的,颜色是直接从颜色命令。
4、SeparateSpecular
SeparateSpecular On | Off
此命令使镜面照明添加到着色通道的末端,所以镜面照明不受纹理的影响。只有在使用照明时才有效果。
5、ColorMaterial
ColorMaterial AmbientAndDiffuse | Emission
使用每个顶点颜色代替材质中设置的颜色。ambientanddiffuse取代环境和漫反射的材质的值;自发光取代颜色的自发光。
Material Block
这包含材质如何反应光的设置。任何这些属性都可以忽略,在这种情况下,它们默认为黑色(即没有影响)。
Diffuse color: 漫反射颜色分量。这是一个对象的基本颜色。
Ambient color: 环境颜色分量。这是对象的颜色,在照明窗口中被环境光照射。
Specular color: 对象的高光的颜色。
Shininess number: 突出的清晰度,在1和0之间。0你得到了一个巨大的亮点,看起来像漫反射照明,1的时候你得到一个小的斑点。
Emission color: 物体不被任何光线击中时的颜色。
灯光打到物体的全部颜色是: Ambient Lighting Window’s Ambient Intensity setting + (Light Color Diffuse + Light Color * Specular) + Emission 该方程的光部分(括号内)是所有的灯光打在对象重复。 通常你想继续扩散和环境颜色相同的(所有的Unity内置的着色器这样做)。
例如:
总是纯红色渲染对象:
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
}
}
}
扩展版本,增加了在监视面板中的材质颜色属性:
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
}
}
}
}
🔚