10
kgPhotonMapping v0.1.0 第 2 第第第第第第第第第第第第第第 GPU 第第第第第第第第 第第第第 [email protected] 第第 26 第 9 第 6 第 ( 第 )

プログラム説明 kgPhotonMapping v0-1-0

Embed Size (px)

DESCRIPTION

第2回レイトレ合宿提出プログラムの説明。

Citation preview

Page 1: プログラム説明 kgPhotonMapping v0-1-0

kgPhotonMapping v0.1.0第 2回レイトレ合宿提出プログラムGPU フォトントレーサ・レンダラ

[email protected]

平成 26年 9月 6日 (土 )

Page 2: プログラム説明 kgPhotonMapping v0-1-0

テーマ

• シンプルにフォントレーシングとレンダリングを GPUで行うと、どのくらいの性能が出るかを知る。–再帰をどのように表現するか?–材質感を出せるか。

Page 3: プログラム説明 kgPhotonMapping v0-1-0

環境• Windows 7 64bit• 言語

– Hlsl : compute shader– DirectX

• GPU– Intel HD Graphics 4000

• ノート PCに乗っているオンボード GPU• DX11に対応して compute shaderも OK、のはずが不安定なために不採用。

– AMD GPU• 安定傾向の AMD環境へ• (結局当日 NVIDIA環境で不安定になってしまった。)

Page 4: プログラム説明 kgPhotonMapping v0-1-0

アルゴリズム

• フォトンマップ– 2パスのアルゴリズム

• 1パス目:フォトンを光源から散布• 2パス目:視点からレイを飛ばし、散布されたフォトンから必要なものを取得。

• 空間構造– KD-TREEは構造が複雑で GPUに向かないと思われるため不採用。

– GPUが扱いやすい形に。

Page 5: プログラム説明 kgPhotonMapping v0-1-0

実装• テクスチャマッピング

– A: 128x128x4byte, B: 512x512x4 byte

• ジオメトリ入力– 球 : 4K 頂点x3 , ティーポッド 7850頂点x2、壁

36頂点• 1920x1080 80枚

– HD7970で 20分強で終了• 1枚 300kフォトンを使う

– 20光源について一枚ずつ作成– 4回繰り返す

• 24Mフォトン

Page 6: プログラム説明 kgPhotonMapping v0-1-0

80枚の一時画像

Page 7: プログラム説明 kgPhotonMapping v0-1-0

足し合わせた出力

Page 8: プログラム説明 kgPhotonMapping v0-1-0

結果• 性能は?

– 24Mフォトンで HD1枚を 30分– CPUとはまだ比較しておらず

• 今回の条件でノートパソコンの CPUでは 30分でもフォトントレーシング終わらず。

• 実装は?– トレースの再帰をシェーダで実装。未解析。

• 質感は?– 拡散反射、鏡面反射、屈折を実装。– モデル配置、テクスチャ設定が適当。

Page 9: プログラム説明 kgPhotonMapping v0-1-0

良いところ・悪いところ• 高速計算• メモリ管理

– directXのマップメモリ失敗する時があったために dispatchを短冊状に。

• 最小限のレンダラ– Tex geomなど必要な項目対応

• マテリアル対応– Diffuse specular reflection,

refractionをシェーダで表現。– 1dispatch で 1バウンスのマルチパスでバウンスを表現した形式のほうがレジスタ削減効果があり、実行効率がいいかも?

• リアルタイム描画への活用– RLRなど役に立ちそう。

• メモリをたくさん食う。– 要 PPM。

• 空間構造なし。– 要 BVH。

• 描画– 法線計算するときに両面に対応していない。 CW/CCW片対応。

– Texは bufferで compute shaderに入れた。 Texture扱いにしてサンプラを使い GPUの加速をするべきだった。

– ジオメトリの配置の時間がなかった。リアルタイムビューワがあったほうが良かったかもしれない。

• コード整理ができていない– とりあえずコードを全部出していますが、公開できる状態になっていない。

Page 10: プログラム説明 kgPhotonMapping v0-1-0

最後に

レイトレ合宿、いい機会ですね。楽しませていただきました!