LoginSignup
0
0

More than 3 years have passed since last update.

Unity ShaderGraph レシピ #6 ランバート反射でライティング

Last updated at Posted at 2020-12-27

ランバート反射でライティング

gif_animation_008.gif

作り方

ライトを適用せずにただテクスチャを貼っただけのモデルは立体感がありません。(図はただの緑のテクスチャを貼っただけのティーポット)
陰影が無いからです。
この印影をつける処理をシェーディングといいます。もともとシェーダとは陰影をつけるプログラムのことを指しました。古の話です。

スクリーンショット 2020-12-28 1.15.59.png

最もシンプルな陰影の付け方ですが、メッシュの頂点を、ライト方向を向いているものは明るく、逆側を向いているものは暗くします。
ライトの方向ベクトルとメッシュの法線で内積を取ることで、頂点がライト方向を向いているか否か判定できるので、その結果を元に明るさを変更します。
これを ランバート反射モデルといいます。

1.ライトがあたっている強さを計算

ライトベクトルとメッシュの法線の内積結果は(-1〜1)になります。
ライトの方を向いているほど1に近く、逆を向いているほど-1に近くなります。
このままだとテクスチャカラーと乗算する時に都合が悪いので明度を0〜1の間にまるめます。
具体的には結果に0.5を掛けて-0.5〜0.5の範囲にした後、0.5を足して0〜1の範囲にします。

スクリーンショット 2020-12-28 1.31.17.png

これでライト方向を向いてる頂点ほど明るく、そうじゃないものほど暗くすることができました。

2.ライトカラー適用

先程の明度情報にライトカラーを乗算します。白だとテクスチャカラーそのままで陰影が付きます。今回は黄色。
スクリーンショット 2020-12-28 1.33.58.png

3. テクスチャカラー適用

先程の明暗付きライトカラーとテクスチャカラーを乗算します。
スクリーンショット 2020-12-28 1.44.42.png

完成!

スクリーンショット 2020-12-28 1.18.07.png
スクリーンショット 2020-12-28 1.34.40.png


その他のレシピはShaderGraphレシピ一覧にまとまっています

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0