LoginSignup
0
0

More than 3 years have passed since last update.

【Unity】【シェーダ】ライティング入門

Last updated at Posted at 2019-11-23

デフォルトライティング関数

・Unityではあらかじめ下記のライティング関数が利用されている。
・構造体の詳細については※4 公式リファレンス参照。

関数名 ライティング関数へ渡す構造体  タイプ
Lambert SurfaceOutput 非物理ベース
BlinnPhong SurfaceOutput 非物理ベース
Standard SurfaceOutputStandard 物理ベース

ライティングの切り替え

・下記2か所を設定する。

 #pragma surface surf 関数名
 void surf (Input IN, inout ライティング関数へ渡す構造体 o) { }

自作ライティング関数

①定義

・関数名は「Lighting」で始める。
・関数の引数は以下の通り。(その他の引数については ※1公式リファレンスを参照)

タイプ 引数
カメラビューなし half4 LightingMyName(SurfaceOutput s, half3 lightDir, half atten)
カメラビューあり half4 LightingMyName(SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
  void LightingAnyMethodName(SurfaceOutput s, half3 lightDir, half atten) { return 描画色; }

②宣言

 #pragma surface surf Lighting」を除いた関数名
 void surf (Input IN, inout ライティング関数へ渡す構造体 o) { }

ライティングをOFFにする

・シェーダの作成に当たり、ライトを切りたい場合があるは以下の設定を行う。
1. Window -> Rendering -> Lighting Settingを選択する。
2. Intensity Multiplierの値を「0」に設定する。

物理ベースと非物理ベース

特徴について

・物理ベースレンダリング (PBR : Physically - Based Rendering)
・非物理ベースに比べて、より物理学のモデル(光の屈折や反射)に近い計算を行うことで、より現実に近い描写を行うことができる。
 - energy conservation (エネルギー保存則) - 受けた光量以上は反射できない。
 - microsurface scatteringstate-of-the-art (微小表面反射) - 荒い面はなめらかな面に比べて不安定な光を反射する
 - Fresnel reflectance (フレネル反射) - スペキュラ反射は「かすめ角」に現れる。
 - surface occlusion (面閉塞) - 角の暗がりや反射しにくい面
・イメージする質感を直感的に作成できる。
 (例えば、Metallicというパラメタに1を設定すると金属っぽくなり, 0を設定すると非金属っぽくなる。)
・非物理ベースに比べて、高負荷である。

種類

・Materialのインスペクタビューからシェーダを「Standard」「Standard (Specular)」を選択する。
・どちらを選択しても同一のマテリアルを作成できるため、どちらを選ぶかは好みの問題である。
・詳細な違いについては※2 公式リファレンス参照
・マテリアルのサンプルは※3 公式リファレンス参照

透過の設定

・Materialのインスペクタビューから「Render Mode」を切り替える。

Type 2 3
Transparent 半透過 α=0でも光は反射するため透明にはならない。鏡のようなオブジェを作りたいときに使用
Fade 完全透過 αが透明度となる。
CutOff 部分透過 α < C となる部分の描画をスキップする。

参考サイト

1. Custom lighting models in Surface Shaders
2. Metallic と Specular のワークフロー
3. マテリアルチャート
4. サーフェスシェーダーの記述

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