new branch
Merge branch 'master' into LBVH
LBVH実装用ブランチ
BVHの階層構造を並列に生成する手法の実装。
BVHの各ノードのAABBを計算するカーネルを実装開始。
clUtilityにcreateSubBuffer()関数を追加。
LBVH構築の各ステップにStopWatchHiResによる計測を追加。
パフォーマンス計測のためにLBVH構築をループ、2回目以降のバッファーの生成・コピーが走らない場合の処理時間を計る。
おおよそ処理として実装完了。残りはデバッグと最適化。
generic_kernels.clのlocalScanでuintにすべきところをushortにしていたことによるバグがあったので修正。
ブロック単位のソートの処理を変更。ローカルメモリに実際のインデックスを格納するようにした。
これによりグローバルメモリの同期が無くなり多少速度改善。
少なくともGT 750Mではブロック単位のソートはグループサイズ64が良いみたい。
radix sort中のglobal scanの作業用バッファーをあらかじめ確保するようにして高速化。
clUtilityの関数類は基本的にnamespace CLUtilに所属するように変更。
LBVH構築のローカルソートサイズはプログラムビルド時の引数で変更できるようにした。
main()関数にとりあえず書かれていたLBVH構築のプログラムをLBVHBuilderというクラスに移した。
パストレーシングカーネルがマクロ次第でLBVHを使うように改変開始。
LBVHのInternalNodeの子に関する情報を配列に変更。
おそらくLBVHの組み込み完了。
LBVH構築のファイルの名称変更。
LBVHを使う場合のCPU等価コードを追加。
その他マクロ定数名変更等、細かい変更。
README.mdにLBVH関連の情報を追加。