PS4 Killzone : Shadow Fall のライティングの概要

追伸

最初に

  • もし間違っていたらすみません.

動画 : Digital Dragons - Michał Drobot (Guerrilla Games) - Killzone: Shadow Fall

物理ベースなライティング

  • マテリアルの 3 つのメインパラメータ
    • ディフューズアルベドのテクスチャ(RGB8), ラフネステクスチャ (R8), スペキュラの反射率のテクスチャ(RGB8)
    • デザイナーさんがマテリアルを調整する際には, 異なる IBL 環境下で確認
  • 計算
    • Cook-Torrance ベース
      • Fresnel, Smith Schlick Visiblity Function を利用 (Black Ops と同じ ?)
      • スペキュラの反射率に基づく正規化
      • ラフネスで, スペキュラのコーン角度を決めている
    • 半透明の近似計算
      • Density Maps ?
      • Transluency diffusion maps ?
  • IBL Ambient BRDF (IBLのサンプリングの例)
    • 従来の Point Based BRDF (1 点で IBL などを参照) のはやっていない.
    • 事前計算結果に応じて, Multiple Point BRDF(ラフネスに応じて, 複数点の IBL を参照)をしている.
    • ここでの事前計算結果は BRDF(5D) の積分で, これは Mathematica で事前計算して 3D テクスチャにしておく.
    • そしてそれを, ランタイムで 3D テクスチャから 2D テクスチャに展開し, ラフネスと視点の角度によって結果を参照している.

物理ベースのエリアライティング

  • リアライト
    • すべてのライトはエリアライト. 大きさ, 形, 強さを持つ.
    • 例えば, 屋外の太陽はエリアライトとして定義している.
  • Irradiance の計算


  • スペキュラの計算
    • ラフネスに応じて, スペキュラの計算用に参照する領域の円錐の角度が決まる.
    • その円錐と, エリアライトの交差領域を求める.

  • ライトについては, IES プロファイル(強さの分布)のデータベースを利用

レンダリングパイプライン

  • 沢山の反射, ビルボード, 沢山のエリアライト, GI へのライトマップへの焼きこみ結果から, 下のような最終の絵を作る.


  • リフレクションは 3 段階の方法で計算
    • 0. 光沢反射をスクリーンスペースのレイトレースで計算. (Crytek のスクリーンスペースローカルリフレクションと似ている)
    • 1. ローカルなキューブマップ
    • 2. SkyBox
  • 上については 0. に失敗したら 1. を試す. 1. も駄目だったら 2 を試す.
  • スライドにはレイトレースと書いてありましたが, 当然ながらシーンをすべてレイトレーシングで書いているわけではなく, 0. はスクリーンスペースのレイマーチ, 1. 2. はただキューブマップテクスチャを参照しているだけだと思います.