アーカイブ

2013年5月 – ページ 2

XcodeでOpenCL APIのC++ Wrapperを使ってみる

前回ホストコードをC++で書いたが、CのAPIを使っていたためC++らしさはあまり表現出来ていなかった。
あれから、OpenCL APIのC++ Wrapper(OpenCL C++ Bindings)というものの存在を知ったので、それを使って前回のホストコードをさらにC++っぽく書き換えてみた。
ソース(ホストコードのみ)はこの記事の最後に載せてある。

続きを読む
いまXcodeでOpenCLをはじめる多分いちばん簡単かもしれない方法

以前書いたCUDAの記事のOpenCL版。
こちらも、いちばん簡単なんてタイトル付けてるけど実は他のやり方をあまり調べてないというか、OpenCLはじめて数時間の初心者なので、もっといい方法があれば教えてください。

続きを読む
DH57JGから地雷臭が

MacでCUDAを使ってきたけど、GPUが古めのGeforce 9400Mだから新しいGPUドライバが配布されていない。(Appleがんばれ)
CUDAドライバは最新のものを入れてるけどGPUドライバが古いからCUDAで微妙な不具合が出てたんだと思う。

続きを読む
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時間は実時間より短めになってた点に注意が必要。

続きを読む