ライティングの中でも最も単純で、処理速度が速いものがランバート拡散照明です。
これの基礎となる理論は「ランバートの余弦測」であり、
物体の輝度は光の入射ベクトルLと表面の法線ベクトルNとの内積に比例する。というものです。

つまりHLSL上では、
dot関数で内積を計算してあげるとよい。
※輝度がマイナスになって真っ黒にならないように0.0以下の輝度にならないようにしているが、これは好みの問題です。
ちなみに完全版はこんな感じ
HLSLを読み込むコードはこんな感じである。
ライトベクトルをローカル座標系で作るためにワールド座標系をローカル座標系に戻す処理をしている。
実行結果:3Dモデルに自然な光を照らすことができる。

これの基礎となる理論は「ランバートの余弦測」であり、
物体の輝度は光の入射ベクトルLと表面の法線ベクトルNとの内積に比例する。というものです。

つまりHLSL上では、
dot関数で内積を計算してあげるとよい。
※輝度がマイナスになって真っ黒にならないように0.0以下の輝度にならないようにしているが、これは好みの問題です。
ちなみに完全版はこんな感じ
HLSLを読み込むコードはこんな感じである。
ライトベクトルをローカル座標系で作るためにワールド座標系をローカル座標系に戻す処理をしている。
実行結果:3Dモデルに自然な光を照らすことができる。

コメント