このシェーダはオブジェクトの明るい部分と暗い部分を定義することが出来ます。二次的なテクスチャのアルファチャネルによりオブジェクトが,光で照らされていないときも,自ら“発光”する光を定義します。アルファチャネルにおいて,黒は光がゼロで,白は光が最大にオブジェクトから発光されてます。シーンにあるどのライトもシェーダの照明にさらに照らされます。もしオブジェクト自身が光を発光しないとしても,シーンのライトにより照らされます。
Diffuse(拡散)シェーダと同様のシンプル(Lambertian)ライティングを使用します。表面と光がなす角度が小さくなるほどライティングが弱くなります。ライティングは角度のみに依存し,カメラの移動や回転による変更の影響は受けません。
Normal mapping(法線マップ)は細かい表面のディテールを,ポリゴンの量を増やして詳細を削り出すのではなく,テクスチャにより表現します。オブジェクトの形状は変更しないが,Normal Map(法線マップ)と呼ばれる特殊なテクスチャを使用してこのエフェクトを得ます。法線マップでは,各ピクセルのカラー値は表面法線の角度を表します。次にこの値を形状の代りに使用してライティングを行います。オブジェクトのライティングを計算するにあたり,効果的に法線マップによってメッシュの形状の影響をオーバーライドします。
通常のグレースケールの画像をインポートし,Unityの中で法線マップへと変換できます。これを行う方法についてはNormal map FAQ を参照下さい。
法線マップは接線空間(Tangent Space)を用いた法線マップです。接線空間とはモデル形状の“表面に沿った”空間です。この空間において,Z軸は必ず表面から離れる方向を指します。接線空間による法線マップは他の“オブジェクト空間”を用いた法線マップと比較すると効果ですが,いくつかの長所があります:
Specular(鏡面)はDiffuse(拡散)と同様のシンプル(Lambertian)ライティングを使用するのに加えてビューア依存の鏡面ハイライトを計算します。Blinn-Phongライティングモデルと呼ばれます。鏡面のハイライトは,表面の角度,ライトの角度,およびビューアングル,に依存します。ハイライトは実際にはリアルタイム表現向きの,光源からブラーのかかった反射のシミュレーションです。ハイライトのブラーの度合いはInspectorのShininessスライダで制御されます。
これに加えて,メインのテクスチャのアルファチャネルは鏡面マップ(時々“Gloss Map”とも呼ばれます)として動作し,オブジェクトのどの領域が他の部分より反射するか定義します。アルファの黒い部分は鏡面反射がゼロとなり,白い領域は完全な鏡面反射となります。これはオブジェクトの異なるエリアで鏡面の反射レベルを変更したい場合に便利です。例えば,錆びた金属などは低い鏡面性を使用し,磨かれた金属は高い鏡面性を使用します。口紅は肌よりも鏡面性を高く,肌は綿の服よりも鏡面性を高くします。良く出来た鏡面マップはプレイヤーを関心させるのに大きな違いを生みます。
一般的に,このシェーダはレンダリングがやや高価です。詳細についてはShader Peformance を参照下さい。