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
マイクロファセット理論を用いた
物理ベースレンダリング
• 最近のレンダリングのはやり
– 物体の見た目 = 拡散反射+鏡面反射 (で近似)
– 物理量の保存則を満たす
入射光 鏡面反射光
拡散反射光
物理量の保存則
• 出射光は入射光よりも暗い(エネルギー保存)
• 光の向きを変えても同じ現象が起きる (相反性)
マイクロファセット理論
• プラスチックと金属の違いは何?
マイクロファセット理論
• 金属反射は微細な構造の粗視化ととらえる
– 特に鏡面反射についてとり扱う
• 考慮する効果
– 法線分布
– マスキング
– シャドウイング
– フレネル反射 シャドウイング マスキング
GGX
)()(,)()( iiiiooipo QdLfL   
)()()1()( oi
spec
poi
diff
poip fmfmf  



)(
)( oi
oi
diff
pf


oi
oi
spec
p
nn
GDF
f


,,4
)( 
 5
00 ,1)1( hFFF o
  2
22
2
11, 



hn
D
)()( 0 iGGXGGX GGG 
  222
,1,
,2
)(



nn
n
GGGX


)),(,0max(, 
:Schlick近似のフレネル
(h:ハーフベクトル, F0:正面反射率)
:法線分布関数 (α:粗さ)
拡散反射:
鏡面反射:
こんな近似項を
使うのがGGX
この形だけではない。
マイクロファセットの
形状が楕円らしい?
(m:金属度合い)
GGX
)()(,)()( iiiiooipo QdLfL   
)()()1()( oi
spec
poi
diff
poip fmfmf  



)(
)( oi
oi
diff
pf


oi
oi
spec
p
nn
GDF
f


,,4
)( 
 5
00 ,1)1( hFFF o
  2
22
2
11, 



hn
D
)()( 0 iGGXGGX GGG 
  222
,1,
,2
)(



nn
n
GGGX


)),(,0max(, 
:Schlick近似のフレネル
(h:ハーフベクトル, F0:正面反射率)
:法線分布関数 (α:粗さ)
拡散反射:
鏡面反射:
(m:金属度合い)計算が比較的簡単で
見た目がけっこうカッコイイ!
こんな近似項を
使うのがGGX
この形だけではない。
マイクロファセットの
形状が楕円らしい?
3次元では?
• 放射伝達方程式
マイクロフレーク理論
• ボリュームを細かな粒子(マイクロフレーク)の集合
と仮定
– マイクロフレークに対する光の吸収と散乱はシンプルな
モデル
– マイクロフレークの物体の質感が変わる
• マイクロフレークの光学特性
• マイクロフレークの形状
• マイクロフレークの配列の仕方
マイクロフレークでの物理量計算
• 単一のマテリアルの場合
– 減衰係数
– 散乱係数
• ρ:ボリュームの密度
• α:方向に依存しないアルベド
• σ:マイクロフレークの投影面積
D:法線の統計的な分布
マイクロフレーク位相関数
• 角度に関する光の散乱度合い
• マイクロフレーク制約
– 光は強くならない
– 相反性
鏡面反射 拡散反射
マイクロフレークと法線
• マイクロフレークが楕円体の場合の法線
円
盤
的
繊
維
的
おまけ:GXXとSGGXの違い
(半球ではなく対称)
従来法
• 法線の分布を求めて、そこから各種物理量を
計算
– 法線の分布は
足し算できない
(結果が正確
ではない)
– 合成が高速には
できなかった
キーアイデア
• 大切なのは法線分布ではなく投影面積
– 投影面積が固有値と関連した
正値対称行列を導入(SGGX行列)
– 固有値、固有ベクトルを線形補間
して新しく生み出すSGGX行列は
やはり正値対称行列なので
SGGXとして有効
(このようにすれば線形補間できる!)
導出される法線分布:
SGGX行列の構築
• 法線分布を入力としてパラメータを推定
– 楕円対称性から共分散行列の固有ベクトルは
基の行列(SGGX行列)の固有ベクトルと等しい
– 投影面積の定義から固有値を構築
• メモリ使用量
– 6つのパラメータで格納可能(6B/voxel)
]1,1[
]1,0[


r

パラメータ推定性能
位相関数
• 位相関数
• インポータンスサンプリング
– 入射方向に垂直にランダムに点をとり、SGGX行列を
通した法線分布で確率的に法線を選択
– 得られた法線の反射方向、法線周りの拡散方向を
計算し、位相関数を求めて確率的に光路の寄与を
加える
LOD
• 低解像度でもそれなりの見た目
– 密度とアルベド、SGGXをダウンサンプリング
– 多重散乱の効果が入らないので見た目は変化
これからの作業
• インポータンスサンプリングのコード持ってない…
– レイトレ合宿?
• 実際に計算して、泥臭い部分をあぶりだす
• リアルタイムに結びつく何かがあると嬉しいな
まとめ
• SGGX
– 投影面積を固有値とする楕円体としてボリューム
データを表現
– 高速で小メモリ(6B/voxel)
– 階層的詳細度(LOD)表現に対応

SGGXマイクロフレーク分布