AO benchをXNAで動かそう(5)
Distance Fieldでボリュームテクスチャをやってみた
DFRT + Volume / GeForce 8800 GTS / 800x600
スクリーンショットでのスペック
- 人型の物体 : ボリュームテクスチャ
- 解像度 : 256x256x256
- 時間とともに回転(ボリュームテクスチャ丸ごとに対する変換行列に対応)
- それ以外の物体 : 球と平面のプリミティブ (ボリュームテクスチャではない)
実装内容(別プログラムを含む)
- メッシュのモデルをボクセル化(ソリッドに)する簡易処理
- ボクセルをDistance Fieldボリュームテクスチャにする処理
- Distance Fieldボリュームテクスチャを描画する処理
課題点
- 凸凹していますが?
- 法線をマッピングすれば、滑らかになりそうです。しかし、ボクセル化をきちんと作る必要があります。
- 物体に色がないけど?
- 同上です。
- 変形は?(スキンメッシュのような)
- 対応できるといいのですが、未知です。
- 一部ちぎれていたり、AOが不自然ですが?
- ボリュームテクスチャの境界の外で、嘘の距離を返すことによるものと思います。
プログラミングはGeForce 8400M GSで行っていましたが、ここまで動いたのでGeForce 8800 GTSで確認してみました。この性能(スクリーンショット内の情報表示)ならば何か使えそうなパフォーマンスになっています。
しかし、この先の品質向上は、技術的に簡単にはいかなそうです。