CUDAを使ってレイとシーンを構成するポリゴンとの交差判定をするコードを書いてみた

Shadow caster mapのときに、やっぱガチのGPUレイトレじゃないとだめかも。って書いたのでとりあえず試しにCUDAでレイとシーンのポリゴンとの交差判定をするコードを書いてみた。
(メインの部分だけだけどカーネルのコードを最後の方に載せる。)

続きを読む

Shadow caster mapによる高速・高品質な影計算

ソフトシャドウの計算の処理速度がかなり改善された。
GPU_softshadow_SM512_DV0.1_C163_6sec
これは光源数163の場合でトータルの処理時間は6秒。
以前実装したものは、これとほぼ同じ条件で30秒以上掛かっていた。
最新のハイエンドGPUなら、この手法でも少し条件に制限を設けることで面光源によるソフトシャドウのリアルタイム処理も可能かもしれない。

続きを読む

まだ直接照明の影と格闘中

あれから、リアルなソフトシャドウの計算をどうやって速くするか考えてた。
候補としては大きく分けて

続きを読む

OpenGL 3.2(GLSL 1.50)対応

今までほとんど確認用のレンダリングのためだけにしか使ってなかったので、OpenGL 2.1(GLSL 1.20)のままでやってきたけど、GPGPU的に使うようになったのでOpenGL 3.2で実行するように変更した。
やっぱ少しでも柔軟性は高いほうがいいだろうし、今のところ全くアイデアはないけどジオメトリシェーダでなにか出来るかもしれないし。

続きを読む

GPUを利用した任意形状の拡散面光源によるソフトシャドウ付き直接照明の計算

とりあえず実装した。
上が影なし、下が影あり。
(最初にこの記事をアップしたとき、影の計算を微妙に間違ってる部分があったので修正して画像もアップしなおした。)
GPU_no_shadow_1sec
GPU_soft_shadow_C1P1_32sec
今までtime.hのclock関数で処理時間を計測してたので、CPU時間を計測してたことになる。(Macなので。)
GPUを汎用計算に使うようになり、CPU時間の計測じゃまずいんじゃないかと思ったので、今回からtime関数による実時間の計測に切り替えた。
1秒単位でしか測れない点と、CPU時間は実時間より短めになってた点に注意が必要。

続きを読む

浮動小数点数(32bit float)の整数演算の精度

いきなり余談

現在作成中のアレで、GPU Accelerationにに手を出すのはもう少し足場を固めてからと思ってたけど、CPUを使うコードをGPUを使うコードに変更するのは手間というか、設計レベルから別物になるかもしれないし、どうせ最終的にはGPU使うだろうしということで、自分の中でGPUの汎用計算利用を解禁した。
ただ、OpenGLを使ったGPGPUのみでCUDAはまだ禁止ということにしてる。
現在作成中のアレ、もしくはその派生物を配布する可能性がないとは言えないので。

続きを読む

フォトンマップを利用した直接照明のテスト

朝一でアイアンマン3を観に行く前に直接照明のテストをしてたのでそのまとめ。

続きを読む

フォトンベイカー(仮)進捗その14

一様グリッドに放射束を蓄積する方法を諦めて、別の方法を実装してみた。
前回、普通にフォトンマップにkd木を使う方法+αに戻すと書いてたけど、思うところがあってそれとも微妙に違う方法にしてみた。

続きを読む