ここが分からない

  • パスにはどんなのがあるか?
  • 基本的なパスで描画されるものとその値・具体的な計算方法
    • ライティングパス
  • カメラ座標系の法線ベクトル…、ライティングでローカル座標系にする必要ってあったっけ…。忘れてもうた。

パスにはどんなものがあるか?

ジオメトリパス

所謂、G-Bufferを生成するパスです。G-Bufferは下記のテクスチャの総称です。

  • デプスマップ
  • ノーマルマップ
  • ディフューズ
  • etc…

これらをMRTを使って1パスで描画します。これをジオメトリパスと言います。

メモ

  • Q. ディフューズって具体的に何?ディフューズカラーの事?
    多分正しい。マテリアルのディフューズ色をG-Bufferに書き出していると思う。
    参考:unity

おさらい

  • 環境光(アンビエントライト)
    環境光色を出力に積算する
  • 拡散光(ディフューズライト)
    法線とライト向きの内積で計算されるパラメーター
  • 反射光(スペキュラーライト)
    視点ベクトルと光源方向ベクトルの内積で計算されるパラメーター

ライティングパス

まず光源の影響範囲を調べます。光源が届く範囲を点光源なら球で表します。球を描画し、G-Buffer生成パスで作ったデプス値とLEでデプステストを行います。デプステストをパスしたフラグメントがライティングを施すピクセルになります。このピクセルに対してライティング用のピクセルシェーダを起動すればライトマップを作製できます。ライティングに必要な情報は、G-BufferからtexelFetch()で取得できます。

メモ

  • G-Buffer(デプスマップ)に対してMSAAをかけて、リゾルブしてしまうとオブジェクトの境界の深度がおかしくなると思う

参考