1.9K Views
July 26, 15
スライド概要
CG技術の実装と数理 2015のプレゼン資料です。
http://ime.ist.hokudai.ac.jp/~mcg/
The SGGX Microflake Distribution 株式会社セガゲームス 今給黎 隆
アジェンダ • • • • • モチベーション マイクロファセット物理ベースレンダリング マイクロフレーク理論 SGGX この後のお仕事
The SGGX Microflake Distribution • SIGGRAPH 2015 – – – – Eric Heitz (Karlsruhe Institute of Technology, NVIDIA) Jonathan Dupuy (Univ. Montr´eal; LIRIS, Univ. Lyon 1) Cyril Crassin (NVIDIA) Carsten Dachsbacher (Karlsruhe Institute of Technology) • 論文の日本語訳 – https://github.com/imagire/SGGX_jp
モチベーション • ボリュームデータの物理ベースレンダリング – 3角形ポリゴンの集合では表しにくいデータの増大 • 木 • 服 • もくもく – データ量が増大しやすい • まだまだ高い要求 – 高速 – 省メモリ
ボリュームデータ • 同じ程度のデータ数でも非常に小さな分解能 – Full HD: 1980x1080=2,073,600 – ボリュームデータ:128x128x128=2,097,152
マイクロファセット理論を用いた 物理ベースレンダリング • 最近のレンダリングのはやり – 物体の見た目 = 拡散反射+鏡面反射 (で近似) – 物理量の保存則を満たす 入射光 鏡面反射光 拡散反射光
物理量の保存則 • 出射光は入射光よりも暗い(エネルギー保存) • 光の向きを変えても同じ現象が起きる (相反性)
マイクロファセット理論 • プラスチックと金属の違いは何?
マイクロファセット理論 • 金属反射は微細な構造の粗視化ととらえる – 特に鏡面反射についてとり扱う • 考慮する効果 – – – – 法線分布 マスキング シャドウイング フレネル反射 シャドウイング マスキング
, = max(0, (,)) GGX L(o ) = f p (i → o ) o , i L(i )di + Q(i ) f p (i → o ) = (1 − m) f 拡散反射: 鏡面反射: (i → o ) + m f diff p (i → o ) (i → o ) = spec p F DG (i → o ) = 4 n, i n, o f f diff p F = F0 (1 − F0 )(1 − o , h こんな近似項を 使うのがGGX この形だけではない。 マイクロファセットの 形状が楕円らしい? D= ( 2 G = GGGX (0 )GGGX (i ) (i → o ) (m:金属度合い) ) :Schlick近似のフレネル 2 :法線分布関数 (α:粗さ) 5 2 ) n, h ( − 1) + 1 2 spec p (h:ハーフベクトル, F0:正面反射率) GGGX ( ) = 2 n, ( ) n, + 2 + 1 − 2 n, 2
, = max( 0, (,)) GGX L(o ) = f p (i → o ) o , i L(i )di + Q(i ) f p (i → o ) = (1 − m) f pdiff (i → o ) + m f pspec (i → o ) 計算が比較的簡単で (m:金属度合い) ( → ) ( → ) = 拡散反射: f 見た目がけっこうカッコイイ! F DG diff p 鏡面反射: i i f pspec (i → o ) = 4 n, i n, o F = F0 (1 − F0 )(1 − o , h こんな近似項を 使うのがGGX この形だけではない。 マイクロファセットの 形状が楕円らしい? D= ( o o 5 2 ) n, h ( − 1) + 1 2 ) 2 G = GGGX (0 )GGGX (i ) 2 :Schlick近似のフレネル (h:ハーフベクトル, F0:正面反射率) :法線分布関数 (α:粗さ) GGGX ( ) = 2 n, n, + 2 + (1 − 2 ) n, 2
3次元では? • 放射伝達方程式
マイクロフレーク理論 • ボリュームを細かな粒子(マイクロフレーク)の集合 と仮定 – マイクロフレークに対する光の吸収と散乱はシンプルな モデル – マイクロフレークの物体の質感が変わる • マイクロフレークの光学特性 • マイクロフレークの形状 • マイクロフレークの配列の仕方
マイクロフレークでの物理量計算 • 単一のマテリアルの場合 – 減衰係数 – 散乱係数 • ρ:ボリュームの密度 • α:方向に依存しないアルベド • σ:マイクロフレークの投影面積 D:法線の統計的な分布
マイクロフレーク位相関数 • 角度に関する光の散乱度合い • マイクロフレーク制約 – 光は強くならない – 相反性 鏡面反射 拡散反射
マイクロフレークと法線 • マイクロフレークが楕円体の場合の法線 円 盤 的 おまけ:GXXとSGGXの違い (半球ではなく対称) 繊 維 的
従来法 • 法線の分布を求めて、そこから各種物理量を 計算 – 法線の分布は 足し算できない (結果が正確 ではない) – 合成が高速には できなかった
キーアイデア • 大切なのは法線分布ではなく投影面積 – 投影面積が固有値と関連した 正値対称行列を導入(SGGX行列) 導出される法線分布: – 固有値、固有ベクトルを線形補間 して新しく生み出すSGGX行列は やはり正値対称行列なので SGGXとして有効 (このようにすれば線形補間できる!)
SGGX行列の構築 • 法線分布を入力としてパラメータを推定 – 楕円対称性から共分散行列の固有ベクトルは 基の行列(SGGX行列)の固有ベクトルと等しい – 投影面積の定義から固有値を構築 • メモリ使用量 – 6つのパラメータで格納可能(6B/voxel) [0,1] r [−1,1]
パラメータ推定性能
位相関数 • 位相関数 • インポータンスサンプリング – 入射方向に垂直にランダムに点をとり、SGGX行列を 通した法線分布で確率的に法線を選択 – 得られた法線の反射方向、法線周りの拡散方向を 計算し、位相関数を求めて確率的に光路の寄与を 加える
LOD • 低解像度でもそれなりの見た目 – 密度とアルベド、SGGXをダウンサンプリング – 多重散乱の効果が入らないので見た目は変化
これからの作業 • インポータンスサンプリングのコード持ってない… – レイトレ合宿? • 実際に計算して、泥臭い部分をあぶりだす • リアルタイムに結びつく何かがあると嬉しいな
まとめ • SGGX – 投影面積を固有値とする楕円体としてボリューム データを表現 – 高速で小メモリ(6B/voxel) – 階層的詳細度(LOD)表現に対応