ノート: このページの ShaderLab 機能は古い機能であり、後方互換性のためだけに文書化されています。シェーダーのソースファイルに HLSL コードが含まれている場合、Unity はこれらのコマンドを完全に無視します。シェーダーのソースファイルに HLSL コードが含まれていない場合、Unity はインポート時にこれらのコマンドを通常のシェーダープログラムにコンパイルします。
| 機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
|---|---|---|---|---|
| 古いライティング | はい | いいえ | いいえ | いいえ |
マテリアルとライティングパラメーターは、ビルトイン頂点ライティングを制御するために使われます。頂点ライティングは、各頂点ごとに計算されている標準的な 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: 環境光の色コンポーネント。アンビエントライトがオブジェクトに当たる際の色で、Lighting ウィンドウ で設定されます。
Specular color: オブジェクトのスペキュラーハイライトの色。
Shininess number: 0 と 1 の間のハイライトのシャープネス値。0 でディフューズライトによく似た巨大なハイライトを得、1 で小さな斑点を得ます。
Emission color: ライトが当たっていないオブジェクトの色。
オブジェクトを照らすライトのフルカラーは、次のとおりです。
Ambient * Lighting ウィンドウの Ambient Intensity 設定 + (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
}
}
}
そして最後に、本格的な頂点 Lit シェーダー (ShaderLab: 古いテクスチャの結合 リファレンスページも参照してください)。
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
}
}
}
}