SlideShare a Scribd company logo
1 of 10
kgPhotonMapping v0.1.0 
第2回レイトレ合宿提出プログラム 
GPU フォトントレーサ・レンダラ 
kgussan@gmail.com 
平成26年9月6日(土)
テーマ 
• シンプルにフォントレーシングとレンダリング 
をGPUで行うと、どのくらいの性能が出るか 
を知る。 
– 再帰をどのように表現するか? 
– 材質感を出せるか。
環境 
• Windows 7 64bit 
• 言語 
– Hlsl : compute shader 
– DirectX 
• GPU 
– Intel HD Graphics 4000 
• ノートPCに乗っているオンボードGPU 
• DX11に対応してcompute shaderもOK、のはずが不安定なため 
に不採用。 
– AMD GPU 
• 安定傾向のAMD環境へ 
• (結局当日NVIDIA環境で不安定になってしまった。)
アルゴリズム 
• フォトンマップ 
– 2パスのアルゴリズム 
• 1パス目:フォトンを光源から散布 
• 2パス目:視点からレイを飛ばし、散布されたフォトンか 
ら必要なものを取得。 
• 空間構造 
– KD-TREEは構造が複雑でGPUに向かないと思 
われるため不採用。 
– GPUが扱いやすい形に。
実装 
• テクスチャマッピング 
– A: 128x128x4byte, B: 512x512x4 byte 
• ジオメトリ入力 
– 球: 4K 頂点x3, ティーポッド7850頂点x2、壁36頂点 
• 1920x1080 80枚 
– HD7970で20分強で終了 
• 1枚300kフォトンを使う 
– 20光源について一枚ずつ作成 
– 4回繰り返す 
• 24Mフォトン
80枚の一時画像
足し合わせた出力
結果 
• 性能は? 
– 24MフォトンでHD1枚を30分 
– CPUとはまだ比較しておらず 
• 今回の条件でノートパソコンのCPUでは30分でもフォトントレーシング終 
わらず。 
• 実装は? 
– トレースの再帰をシェーダで実装。未解析。 
• 質感は? 
– 拡散反射、鏡面反射、屈折を実装。 
– モデル配置、テクスチャ設定が適当。
良いところ・悪いところ 
• 高速計算 
• メモリ管理 
– directXのマップメモリ失敗する時が 
あったためにdispatchを短冊状に。 
• 最小限のレンダラ 
– Tex geomなど必要な項目対応 
• マテリアル対応 
– Diffuse specular reflection, 
refractionをシェーダで表現。 
– 1dispatch で1バウンスのマルチパ 
スでバウンスを表現した形式のほう 
がレジスタ削減効果があり、実行効 
率がいいかも? 
• リアルタイム描画への活用 
– RLRなど役に立ちそう。 
• メモリをたくさん食う。 
– 要PPM。 
• 空間構造なし。 
– 要BVH。 
• 描画 
– 法線計算するときに両面に対応して 
いない。CW/CCW片対応。 
– Texはbufferでcompute shaderに入 
れた。Texture扱いにしてサンプラを 
使いGPUの加速をするべきだった。 
– ジオメトリの配置の時間がなかった。 
リアルタイムビューワがあったほうが 
良かったかもしれない。 
• コード整理ができていない 
– とりあえずコードを全部出しています 
が、公開できる状態になっていない。
最後に 
レイトレ合宿、いい機会ですね。 
楽しませていただきました!

More Related Content

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

関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料Kimikazu Kato
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例tecopark
 
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブースKensei Demura
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介Drecom Co., Ltd.
 
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワークJSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワークTakuma Yoshimura
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説Silicon Studio Corporation
 
Playground内の描画仕組み
Playground内の描画仕組みPlayground内の描画仕組み
Playground内の描画仕組みRomainPiquois
 
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしようUnity Technologies Japan K.K.
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介Hiroki Nakahara
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]MakotoItoh
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
なぜGPUはディープラーニングに向いているか
なぜGPUはディープラーニングに向いているかなぜGPUはディープラーニングに向いているか
なぜGPUはディープラーニングに向いているかNVIDIA Japan
 
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化UnityTechnologiesJapan002
 
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造智啓 出川
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介UnityTechnologiesJapan002
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門NVIDIA Japan
 
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理智啓 出川
 

Similar to プログラム説明 kgPhotonMapping v0-1-0 (20)

関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例
 
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース
新型Happy Miniの発表 @ RoboCup 2017 NVIDIA 展示ブース
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワークJSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
 
Playground内の描画仕組み
Playground内の描画仕組みPlayground内の描画仕組み
Playground内の描画仕組み
 
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう
【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう
 
研究を加速するChainerファミリー
研究を加速するChainerファミリー研究を加速するChainerファミリー
研究を加速するChainerファミリー
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
なぜGPUはディープラーニングに向いているか
なぜGPUはディープラーニングに向いているかなぜGPUはディープラーニングに向いているか
なぜGPUはディープラーニングに向いているか
 
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
 
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門
 
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
 
KDDCUP2020 ML Track2
KDDCUP2020 ML Track2KDDCUP2020 ML Track2
KDDCUP2020 ML Track2
 

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

  • 1. kgPhotonMapping v0.1.0 第2回レイトレ合宿提出プログラム GPU フォトントレーサ・レンダラ kgussan@gmail.com 平成26年9月6日(土)
  • 2. テーマ • シンプルにフォントレーシングとレンダリング をGPUで行うと、どのくらいの性能が出るか を知る。 – 再帰をどのように表現するか? – 材質感を出せるか。
  • 3. 環境 • Windows 7 64bit • 言語 – Hlsl : compute shader – DirectX • GPU – Intel HD Graphics 4000 • ノートPCに乗っているオンボードGPU • DX11に対応してcompute shaderもOK、のはずが不安定なため に不採用。 – AMD GPU • 安定傾向のAMD環境へ • (結局当日NVIDIA環境で不安定になってしまった。)
  • 4. アルゴリズム • フォトンマップ – 2パスのアルゴリズム • 1パス目:フォトンを光源から散布 • 2パス目:視点からレイを飛ばし、散布されたフォトンか ら必要なものを取得。 • 空間構造 – KD-TREEは構造が複雑でGPUに向かないと思 われるため不採用。 – GPUが扱いやすい形に。
  • 5. 実装 • テクスチャマッピング – A: 128x128x4byte, B: 512x512x4 byte • ジオメトリ入力 – 球: 4K 頂点x3, ティーポッド7850頂点x2、壁36頂点 • 1920x1080 80枚 – HD7970で20分強で終了 • 1枚300kフォトンを使う – 20光源について一枚ずつ作成 – 4回繰り返す • 24Mフォトン
  • 8. 結果 • 性能は? – 24MフォトンでHD1枚を30分 – CPUとはまだ比較しておらず • 今回の条件でノートパソコンのCPUでは30分でもフォトントレーシング終 わらず。 • 実装は? – トレースの再帰をシェーダで実装。未解析。 • 質感は? – 拡散反射、鏡面反射、屈折を実装。 – モデル配置、テクスチャ設定が適当。
  • 9. 良いところ・悪いところ • 高速計算 • メモリ管理 – directXのマップメモリ失敗する時が あったためにdispatchを短冊状に。 • 最小限のレンダラ – Tex geomなど必要な項目対応 • マテリアル対応 – Diffuse specular reflection, refractionをシェーダで表現。 – 1dispatch で1バウンスのマルチパ スでバウンスを表現した形式のほう がレジスタ削減効果があり、実行効 率がいいかも? • リアルタイム描画への活用 – RLRなど役に立ちそう。 • メモリをたくさん食う。 – 要PPM。 • 空間構造なし。 – 要BVH。 • 描画 – 法線計算するときに両面に対応して いない。CW/CCW片対応。 – Texはbufferでcompute shaderに入 れた。Texture扱いにしてサンプラを 使いGPUの加速をするべきだった。 – ジオメトリの配置の時間がなかった。 リアルタイムビューワがあったほうが 良かったかもしれない。 • コード整理ができていない – とりあえずコードを全部出しています が、公開できる状態になっていない。