GPUPPURの進捗
最近日記を全然更新してませんが、GPUPPURの開発が進んでないというわけではありません。ただ、面倒なので更新してないだけですorz
とりあえず今までのところできたのは、
・レイトレーシングするGPUPPURayとラスタライジングするGPUPPURasで(いくつか制約はあるがほぼ)任意の三角形メッシュのレンダリング
・GPUPPURayはfragment shaderでピクセル単位のライティング(拡散反射光のみ)
・GPUPPURasでvertex shaderで頂点単位のライティング(拡散反射光のみ)
・カメラの位置や方法を自由に動かす
・カメラの視角の設定
・物体の位置、方法の指定
・物体のマテリアルの指定(でも拡散反射光のみ)
後、OpenGLとDirect3Dの両方に対応していて、あるウィンドウでOpenGLを使ったGPUPPURayでレンダリングしながら、別のウィンドウでDirect3Dを使ったGPUPPURasでレンダリングとかできます。
まだ、GPUPPURに必要なPhysXのAPI(FR0011: HW Batched Raycasts)がSDKに用意されていなくて、PPUを活用したレンダリングができてません。
今のところはPPUでやる予定の処理をPhysXのAPI(NxScene::raycastClosestShape)を使ってCPU上で計算しています。
このままAPIが公開されず、PPUを使えないままってことも十分ありえます。
そのときの代案として、
・XBOXやPlaystation3等で動くGPUPPURを実装する。
・PPUの代わりになりそうなハードウェアを探す。
・PPUで行う予定の処理もGPUで行うようにする。
・PPUの代わりになるようなハードウェアをFPGAを使って開発する。(FPGAを使った経験は無いけど、一度は使ってみたい)
を考えているのですが、今回の未踏の期間内にこれらに手を出すのは無理そうです。
ト、 /ヽ /\ _ /|\ | ヽ 〈三ヽ /三/| / ! /!ヽ | l ヽ | ヽ !\ / _| / | ,' / ! | ヘ ! ヽ ( )){ }( )) ,' !_/ / j そんなことよりGPUPPURしようぜ! ', ヽ | l トイ`|i|⌒ Y=} ! ', / / ', ヽ!≡ l { ヽ || r‐'リ -i ! ≡ ! / ヽ ≡ ! | ミ )!!= 彡-ノ_ l ≡ ! ,.' \ ≡ | ,.-ノ / ! ト、トく `メ、_', = / / \ ≡ ! /てノしイ_人人ノ、 ヽ / \― |/ヽ ,イ- 、ヽ / イ´ ̄ ̄ヽ_/ \ ヽ/ l ヽi / ̄`!  ̄ 〉―く ァ―‐‐j ゝ_ノゝ-- ノ!