the sggx microflake distribution 実装

19
The SGGX Microflake Distribution 実装 株式会社セガゲームス 今給黎

Upload: takashi-imagire

Post on 22-Jan-2018

1.236 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: The SGGX Microflake Distribution 実装

The SGGX Microflake Distribution 実装

株式会社セガゲームス

今給黎 隆

Page 2: The SGGX Microflake Distribution 実装

• 主にビデオゲームの開発情報の共有

• 参加費:学生500円、一般2000円

• http://kyushucedec.jp/

Page 3: The SGGX Microflake Distribution 実装

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

Page 4: The SGGX Microflake Distribution 実装

モチベーション

• ボリュームデータの物理ベースレンダリング

– 3角形ポリゴンの集合では表しにくいデータの増大

• 木、服、もくもく

–データ量が増大しやすい

• データの削減

–色

–濃度

–反射分布

Page 5: The SGGX Microflake Distribution 実装

今回の結果

https://github.com/imagire/sggx_impl

Page 6: The SGGX Microflake Distribution 実装

SGGX概要

• 前提としての表面の反射理論

–マイクロファセット理論

• 金属等は様々な方向を向いた平面の集まりと捉えられる – アルべド、法線分布、屈折率、拡散/鏡面反射割合

Page 7: The SGGX Microflake Distribution 実装

GGX

)()(,)()( iiiiooipo QdLfL )()()1()( oi

spec

poi

diff

poip fmfmf

)()( oi

oi

diff

pf

oi

oi

spec

pnn

GDFf

,,4)(

hFFF o ,1)1( 00

222

2

11,

hnD

)()( 0 iGGXGGX GGG 222 ,1,

,2)(

nn

nGGGX

)),(,0max(,

:Schlick近似のフレネル (h:ハーフベクトル, F0:正面反射率)

:法線分布関数 (α:粗さ)

拡散反射:

鏡面反射:

こんな近似項を 使うのがGGX

(m:金属度合い)

Page 8: The SGGX Microflake Distribution 実装

ボリュームレンダリング

• 放射伝達方程式

Page 9: The SGGX Microflake Distribution 実装

SGGX

• ボリュームレンダリングする際に、ボリュームデータの微視的な法線分布率を楕円体のデータで表現

–投影面積(散乱割合)

–位相関数

• GGXを裏面にも対称化:対称GGX=SGGX

–散乱には「拡散反射+鏡面反射」を適応

Page 10: The SGGX Microflake Distribution 実装

実装方法

• パストレーサー「smallpt: Global Illumination in 99 lines of C++」を拡張 – http://www.kevinbeason.com/smallpt/

• パスの衝突検知の際に、検知したレイがボリュームデータのAABB と交差するか調べ、 交差したら、ボリューム データの寄与を付与 – ボリュームデータ分解能 から、各ボクセルへの 交差位置を計算

– 確率的に入射レイの追加

Page 11: The SGGX Microflake Distribution 実装

関与媒質の寄与の計算

• AABBの交差判定ののち ボリュームデータの各 グリッドとの交点を算出

• 乱数を用いて2次レイを 確率的に生成

0L

l

lt

i

)( oL

)())(

)(1(4

)( 0

ioi

S

oi

Dslt

l

o

Lfrm

frmlt

e

LeL

s

s

散乱確率

Page 12: The SGGX Microflake Distribution 実装

実装方法

• 新たに考えなくてはならない部分はほとんどない – The SGGX Microflake Distribution

Supplemental Material • 非常に多くの係数がコード付きで掲載

– https://drive.google.com/file/d/0BzvWIdpUpRx_djVyMG9jMnltdTg/view?usp=sharing

– GitHub (zhangwengame/SGGX-Plugin-for-Mitsuba) • 動くコードが存在(今回は未参照)

)())()(1(4

)( 0

ioi

s

oi

Dslt

l

o

Lfrmfrmlt

e

LeL

s

s

散乱確率

Page 13: The SGGX Microflake Distribution 実装

今回の結果

• できたこと

– SGGXデータが与えられた際のパストレーシング

–密度・アルべドのデータとは異なる分解能に対応

• できないこと

–他のデータからのインポート

Page 14: The SGGX Microflake Distribution 実装

σy2=σz

2=0.001 σx2=σz

2=0.001

σ z2=0.001 σ x

2=0.0001

Page 15: The SGGX Microflake Distribution 実装

σx 1 1 ff ff ff ff 1 ff 80 80 ff ff ff ff 80 ff

σy 1 ff 1 ff ff 1 ff ff 80 ff 80 ff ff 80 ff ff

σz ff 1 1 ff 1 ff ff ff ff 80 80 ff 80 ff ff ff

空間的変化のある散乱係数

Page 16: The SGGX Microflake Distribution 実装

濃度分布が変化する場合

Page 17: The SGGX Microflake Distribution 実装

SGGXについて

• Pros

–高速:拡散、鏡面反射方向を決め、他の確率分布関数等の計算もシンプルなので計算は速い

• Cons

–拡散+鏡面反射の分離のモデルを仮定しているが正当性は不明

–反射特性よりも濃度情報によって形状は形作られるので、濃度情報の圧縮の研究は今後も必要

Page 18: The SGGX Microflake Distribution 実装

Future works

• 拡散反射+鏡面反射で当てはまらないモデルへの適応の調査

• アルべド・密度に対するデータ圧縮

• リアルタイム対応

–形状が楕円体を使っている点に事前計算しやすい部分があるかもしれない

Page 19: The SGGX Microflake Distribution 実装

ありがとうございました

• 本家資料 – 論文

• https://drive.google.com/file/d/0BzvWIdpUpRx_dXJIMk9rdEdrd00/view?usp=sharing

– 補足資料 • https://drive.google.com/file/d/0BzvWIdpUpRx_djVyMG9jMnltdTg/view?usp=sharing

– Mitsubaレンダラ用プラグインソースコード • https://github.com/zhangwengame/SGGX-Plugin-for-Mitsuba

– 登壇スライド • https://drive.google.com/file/d/0BzvWIdpUpRx_SDZnYWJYRDg3VWM/view

• 今回向けの資料 – 前回のセッション資料

• http://www.slideshare.net/imagire/sggx

– 論文の日本語訳 • https://github.com/imagire/SGGX_jp

– 実装ソースコード • https://github.com/imagire/sggx_impl