GPUPPURへのツッコミ

あるBBSにてGPUPPURの感想が書いてあったのですが、SPAM防止のため書き込めないようになっていたので代りにこちらで返答させてもらいます。

はじめまして、GPUPPURを開発している者です。
ツッコミありがとう御座います。


>ray castingについてはPPUのライブラリの関数を
>利用するっていうのは,PPUを使う必要がある以上
>仕方ないと思いますが,個人的にあまり面白くないです.

AGEIA Developer SupportのページのDiscussionにあった
Directly use the PhysX processorによれば、
今のところPhysXprocessorに直接アクセスする低レベルAPI
公開する予定はないらしいです。
PhysXXBOX360PS3でも使えるので、
それらのマシンのCPUをPPUだと思えば直接アクセスすることは可能ですが。

#AGEIAはNovodeX社を買収してPhysX SDKを開発しているので
PhysXで他の物理エンジンが実装されてしまうとまずいから
そうしているような気がします。


>また,PPUがベクトル演算器の塊であることを考えれば,
>PPUによるray castingは,たぶんtraversal自体は
>CPUで行って,交点計算だけをPPUで行う形式に
>落ち着く可能性が高いと予想しています.
>その場合,ray castingは現在ではtraveralがネックなので,
>パフォーマンスが出ないという事が十分にありえます.

AGEIA Developer Supportのいくつかのページに
三角形メッシュの衝突検出にはBound Volume Hierarchyが
使われていると書いてあったのですが
これがソフトウェア上での話しなのか、ハードウェア上で行っているのか
わかりませんでした。
Discussion ForumでHW Batched Raycastsが
どのように実装されるかについて質問し現在返答待ちの状態です。


>PPUをレンダリングに使うっていうのは
>一つの考え方としては面白いと思いますが,
>プロジェクトの目標で掲げられているような
>ray tracingとrasterizationの共存を目指すなら
>GPU単体で作った方がいいんじゃないかと思いました.
>今のところPPUは実質制御不能なわけですし.

PhysXではメモリのランダムアクセスが高速になるよう設計してあるなど、
物理シミュレーションを高速化するよう設計されているようです。
GPUのrasterization向きの設計より、PhysXの設計のほうが
rayとの交差判定処理に向いているのではないかと思いました。
ですので、GPUでray tracingを実装したものより
高速化できるのではないかと思うのでGPU単体での実装は今のところ考えていません。

GPU単体でray tracingとrasterizationを共存させる場合ですが、
例えばGPUで比較的高速にray tracingできそうな
Height fieldはraytracingで他のオブジェクトはラスタライズで
描画ということが考えられます。
ですがGPUPPURはできるだけ利用者から弄れるようにしようと思うので
上記の場合でもGPUPPURのラスタライズ機能の部分を使って実装するような
形になると思います。