Open6

Volumetric Fog(知見倉庫)

弖打(てうち)弖打(てうち)

アサシンクリード4のVolumetric Fogアプローチ

1.256x256にダウンサンプリングしたR32Float精度のESMカスケードマップを生成

  • 低解像度のサンプリングのため、キャッシュヒットが良い
  • ダウンスケール時ブラーフィルタリングをおこなうことで、低周波数のみ考慮され、ちらつきが軽減する

2.3Dテクスチャに密度情報を格納(RGB=散乱光の色、A=密度、サイズ=160x90x64(128)程度の低解像度)

  • 事前にすべての座標に対する散乱度を計算しているため、RaymarchingのStepごと遮蔽判定をとる必要がない
  • Light Scattering(ESMによる減衰、一定の環境光、複数ポイントライトの適用)
  • Perlinノイズによる疑似風アニメーション
  • メインライトの方向に沿ったグラデーション

3.2で生成した3Dテクスチャを2DComputeShader上でRGBAごとDepthをもとに積分し、散乱度をUnorderedAccessViewに書き込み

4.Beer-Lambert’s 方程式を用い、3のカラーに散乱乗数(アルファ)を適用し、最終出力カラーを計算する

処理速度:XboxOneで約1.1ms

http://bartwronski.files.wordpress.com/2014/03/ac4_gdc.pdf

上記手法のインスピレーション:Light Propagation Volumes in CryEngine 3
https://advances.realtimerendering.com/s2009/Light_Propagation_Volumes.pdf

画像例: