21000 particles & deferred shading 105 lights

最近新しいマシンを購入し、Core i7 3.2 GHz 6 core (12 論理 CPU)、12GB メモリ、GeForce GTX 560 Ti 環境になりました。
と同時に、この 12 CPU を全力でブン回して何かせねば!という使命感に駆られ、久方ぶりにまともに趣味プログラミングやっています。


経過報告的な物。
http://i-saint.skr.jp/tmp/atomic_20110629.zip
(バイナリ&ソース。ソースのビルドには boost と DirectX SDK が必要です。DirectX SDKXNA Math (SIMD 演算ライブラリ) のため)
21000 くらいのパーティクルを相互に衝突。要所要所を SIMD 演算でそれなりに高速化。ついでに、OpenGL 3.3 あたりで導入された Geometry Instancing で描画を高速化し、適当に deferred shading して 100 個くらいライト出して、結果が上の動画。



gDEBugger という OpenGL & OpenCL デバッガにとても助けられています。以前は商用ソフトだったのが最近フリーウェアになったんだとか。
http://www.gremedy.com/

グラフィックプログラミングでは「クラッシュはしないけどなんか結果が変」みたいなバグが多いため、デバッグ用に内部ステートを抜き出したりフレームバッファやテクスチャを表示したりする機能を実装するのが常ですが、こいつがその手間を肩代わりしてくれています。
gDEBugger2