AO benchをXNAで動かそう(5)

Distance Fieldでボリュームテクスチャをやってみた

DFRT + Volume / GeForce 8800 GTS / 800x600

DFRT + Volume / GeForce 8800 GTS / 256x256

 DFなボリュームテクスチャを作ってもできるはずという考えだけで進めて、なんとかここまでできました。

スクリーンショットでのスペック
  • 人型の物体 : ボリュームテクスチャ
    • 解像度 : 256x256x256
    • 時間とともに回転(ボリュームテクスチャ丸ごとに対する変換行列に対応)
  • それ以外の物体 : 球と平面のプリミティブ (ボリュームテクスチャではない)
実装内容(別プログラムを含む)
  • メッシュのモデルをボクセル化(ソリッドに)する簡易処理
  • ボクセルをDistance Fieldボリュームテクスチャにする処理
  • Distance Fieldボリュームテクスチャを描画する処理
課題点
  • 凸凹していますが?
    • 法線をマッピングすれば、滑らかになりそうです。しかし、ボクセル化をきちんと作る必要があります。
  • 物体に色がないけど?
    • 同上です。
  • 変形は?(スキンメッシュのような)
    • 対応できるといいのですが、未知です。
  • 一部ちぎれていたり、AOが不自然ですが?
    • ボリュームテクスチャの境界の外で、嘘の距離を返すことによるものと思います。

 プログラミングはGeForce 8400M GSで行っていましたが、ここまで動いたのでGeForce 8800 GTSで確認してみました。この性能(スクリーンショット内の情報表示)ならば何か使えそうなパフォーマンスになっています。
 しかし、この先の品質向上は、技術的に簡単にはいかなそうです。

以下は、これまでのシーンのスクリーンショット

DFRT + Fake Tetrahedron / GeForce 8800 GTS