ライティングの中でも最も単純で、処理速度が速いものがランバート拡散照明です。
これの基礎となる理論は「ランバートの余弦測」であり、

物体の輝度は光の入射ベクトルLと表面の法線ベクトルNとの内積に比例する。というものです。
NL


つまりHLSL上では、


dot関数で内積を計算してあげるとよい。
※輝度がマイナスになって真っ黒にならないように0.0以下の輝度にならないようにしているが、これは好みの問題です。

ちなみに完全版はこんな感じ


HLSLを読み込むコードはこんな感じである。



ライトベクトルをローカル座標系で作るためにワールド座標系をローカル座標系に戻す処理をしている。

実行結果:3Dモデルに自然な光を照らすことができる。
Lambert