マテリアルとライティングパラメーターは、ビルトイン頂点ライティングを制御するために使われます。頂点ライティングは、各頂点ごとに計算されている標準的な Direct3D/OpenGL のライティングモデルです。Lighting on はそれを点灯します。ライティングは Material ブロック、 ColorMaterial 、SeparateSpecular コマンドの影響を受けます。
頂点カラーリングと&ライティングは、レンダリングされたジオメトリのために計算された最初の効果です。これは、頂点レベルで動作し、テクスチャが適用される前に使用される基本の色を計算します。
トップレベルのコマンドは、固定機能ライティングを使うかどうか、および、いくつかの設定オプションを使用するかどうかを制御します。メインのセットアップは Material Block 、以下に詳細を詳述します。
Color color
オブジェクトのソリッドカラーを設定します。色は括弧内の 4 つの RGBA 値、または角カッコの中の色のプロパティー名のいずれかです。
Material {Material Block}
マテリアルブロックは、物体の材料特性を定義するために使用されます。
Lighting On | Off
マテリアルブロックで定義された設定で、任意の効果を持つようにするには、Lighting ON コマンドを使用してライティングを有効にする必要があります。ライティングがオフになっている場合は、色が Color コマンドから直接取得されます。
SeparateSpecular On | Off
このコマンドは、スペキュラーライティングがシェーダーパスの最後に追加されるので、スペキュラーライティングはテクスチャリングの影響を受けません。Lighting ON が使用されている場合にのみ効果があります。
ColorMaterial AmbientAndDiffuse | Emission
マテリアルにて設定された色の代わりに頂点ごとの色を使用します。 AmbientAndDiffuse は、マテリアルの Ambient および Diffuse 値を置き換えます。 Emission はマテリアルの Emission 値を置き換えます。
これは、マテリアルが光にどのように反応するかの設定が含まれます。これらの特性のいずれかを省略することができます。その場合には、それらは(つまり、何の効果もありません)黒にデフォルト設定します。
Diffuse color: 広がった色構成要素。これはオブジェクトのベースカラーです。
Ambient color: アンビエント色要素。アンビエント光がオブジェクトに照射したときの色で、ライティングウィンドウで設定します。
Specular color: オブジェクトのスペキュラハイライトの色です。
Shininess number: 0 と 1 の間のハイライトのシャープネス値。0 で拡散照明のようなたくさんの巨大なハイライトを得、1 で小さな斑点を得ます。
Emission color: 光が当たっていないオブジェクトの色。
オブジェクトを照らすライトのフルカラーは、次のとおりです。
Ambient * Lighting Window のアンビエント強度設定 + (Light Color \ * Diffuse + Light Color * Specular ) + Emission
(括弧内)式の光の部分は、オブジェクトを照らすすべての光に対して繰り返されます。
大抵の場合、Diffuse と Ambient は同じ色にしておきたいでしょう( 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
}
}
}
}