速度ブラー

http://takamatsu.cool.ne.jp/tattyu/program/velocitybuffer.lzh
速度バッファを経由するとどうにも符号の処理とかおかしいので、結局速度で直接摂動してたわけですが、パース補間を切る方法がやっとこさみつかりました。
3時間もハマッた。。。


結局XBOXと同じバグが直ってなかったようで、摂動のベースとなるテクスチャ座標を正規化した後に、w座標を掛けてあげてからtex2Dprojでw値で除算することでパース補間をきることが出来ました。



0〜1に正規化したテクスチャ座標でwに1を入れてtex2Dprojしても正しく動かないです。
ATIとかのビデオカードならこんなことしなくてもうまく行くのかなぁ。
ちなみにXBOXでも同じ方法を取ることでバンプ摂動の同次除算が効かない問題を解決できますっつってももはや日本でXBOXで開発なんかしてる人なんかいないだろうから誰に向けてのメッセージなんでしょうか。これ。



そもそもOpenGLのサンプルではそんなことしてないんですけど、DirectXドライバ特有のバグなんですかね。


ちなみに'B'で速度バッファ経由と切り替えができるんですけどもはや速度バッファの処理はまったくおかしい上にすげー重いので使わない方が良いです。多分。