PBR tutorial at Marmoset.org
- Basic Theory of Physically-Based Rendering
- Tutorial: Physically Based Rendering, And You Can Too!
Memo in Japanese
- Marmoset.org にあった物理ベースレンダリングに関する記事の簡易メモです.
- テクスチャの種類についての説明が面白かったので, 主にそこについて書いています.
- 下の記事で説明しているテクスチャの種類は以下のものです.
エネルギー保存
- ディフューズ反射が支配的で表面が粗いマテリアルは, 反射する光が暗くて, ハイライトが広がる傾向がある.
- スペキュラ反射が支配的で表面が滑らかなマテリアルは, 反射する光が明るめで, ハイライトが絞られる傾向にある.
アルベドマップ
スペキュラマップ (リフレクタンスマップ)
- マテリアルのスペキュラリフレクタンスを示すマップで, マテリアルが反射するスペキュラ成分のライト計算に使う.
- 非金属の場合, グレースケールになり, 下図の左側にあるように値が小さいことが多い.
- 金属の場合, カラー(RGB)になり, 下図の右側にあるように値が大きいことが多い.
- 後述するように, メタルネスマップを使用する場合, アルベドマップがスペキュラマップの代わりになる.
メタルネスマップ
- 非金属か金属か ? を示すマップで, 完全に非金属の場合は 0.0, 完全に金属の場合は 1.0 を書き込む.
- a: 完全に非金属の場合 (値が 0.0)
- b: 完全に金属の場合 (値が 1.0)
- c: グレースケールの値の場合 (0.0 より大きく, 1.0 より小さい )
- つまり, メタルネスマップを使う場合, 上のスペキュラマップの値はアルベドマップに書き込めるのでスペキュラマップは不要になる.
- 下図の左側はメタルネスマップを使わない場合で, アルベドマップはディフューズアルベド, スペキュラマップはスペキュラリフレクタンスとして解釈される.
- 下図の右側はメタルネスマップを使う場合で, メタルネスマップのピクセルの値に応じて, アルベドマップは(ディフューズアルベド/スペキュラリフレクタンス)として解釈される.
マイクロサーフェスのマップ(別名: ラフネスマップ, グロシネススマップ)
- マテリアルの表面の粗さや滑らかさを示すマップ.
- 下図だと左側ほど表面が粗くて, 右側ほど表面が滑らかなことを示す. それに伴い, ハイライトの面積が小さくなっていて, またハイライトの輝度も明るくなっている.
- ラフネスマップと呼ばれるものは 0:非常に滑らか, 1:非常に粗い を示す.
- グロシネスマップはその逆で, 0:非常に粗い, 1:非常に滑らか を示す.
- 直感的には, グロシネスマップの方がわかりやすそう. ( 1 になると, ハイライトの面積が小さくなるけど明るくなる )
AO マップ
- 広い範囲のオクルージョンを示すグレースケールのテクスチャ. (具体的には AO 計算時のカーネルが大きい)
- 3d モデルからベイクによって自動的に作られるテクスチャ.
- AO は IBL によるディフューズ環境光のマスクのみに使われる.
- ライトの直接光によるディフューズ反射のマスクには使わない.
- またスペキュラ反射のマスクにも使わない.
- スペキュラマップやグロシネスマップに乗算する用途にも使わない.
- 理由は, スクリーンスペースのローカルリフレクションでリフレクションのオクルージョンが計算できるので.
Cavity マップ
- 細かいオクルージョンを示すグレースケールのテクスチャ. (具体的には AO 計算時のカーネルのサイズが小さい )
- 3d モデルや法線マップから自動的に作られるテクスチャ.
- 表面の窪みを示す.
- IBL による環境光のディフューズ・スペキュラ, 動的ライトのディフューズ・スペキュラの全ての結果に対して乗算して使う.
- Cavity マップの代わりに, リフレクションのオクルージョンを差し込むことができるが, そのときにはディフューズには影響しないようにする必要がある.
フレネルインテンシティ
- フレネルインテンシティは grazing angles (すれすれ角)での光の反射率をスケールするもの.
- 一般的にこの値は常に 1.0 にすべき.
- Marmoset toolbag 2 ではテクスチャによるサポートはしていない.