Unity++blog.

UnityやC#とかについて学習したことを書いてます

シェーダプログラミング ランバート反射

今回のシェーダプログラミングはランバート反射の学習です。

ランバート反射とは要は影をうまくつけて、オブジェクトをリアルに描画するというものらしいです(雑)

 

詳しい説明はこちらや

ランバート反射 - Wikipedia

参考サイトより

【Unityシェーダ入門】ランバート拡散照明モデルを試す - おもちゃラボ

 

Unityではもともと良い感じに影が付くので、これは必要かなぁと思いつつ進めてみます。

 

まず環境設定から。以下の手順で純粋にライトだけの影響を受けるステージにします。

  • MainCameraのインスペクター欄のClearFlagsをSolidColorに変えます。
  • Window>Rendering>LightingSettingよりSkyBoxをnoneにします。

f:id:nabesi777:20181027163743j:plain

 

f:id:nabesi777:20181027163754j:plain

 

そしてSphererをふたつ作成したらこのようになりました。

f:id:nabesi777:20181027163850j:plain

 

ステージセットができたので、シェーダとマテリアルを作成します。

作ったマテリアルを左のSphererへアタッチしました。右のSphererはそのままです。

 

そして以下コードをシェーダーへ書き加えてました。

結果がこちらです。左がランバート反射です。

f:id:nabesi777:20181027165402j:plain

 

確かに違う!

違う!

が!どうなんでしょうこれは!笑

 

 

ですが非常に軽い処理で、それなりに綺麗に見えるので、CGなどでは未だによく使われているようですので(参考サイトより)、ざっくりとした概念は知っておいた方が良さそうです。

 

ちなみにざらっとした質感のものに向いているようです。