モーションブラー雑記
参考:http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html
GPU Gem3がオンラインで見れるって素晴らしい…ともかく、ここに載っている順番をおさらいするべきかな。この例の中ではDepth Bufferっていうのを使っているんだけど、それのCgでの使い方がよく解らんのですよね…あと、interpolateっていう単語の意味がいつも覚えられない。補完するっていう意味ですね。
depth bufferに入っているのは、三角形の三点がworld-view-projectionされたあと(つまり、画面の座標に変換されたあと)の、補完されたz座標÷w座標。(ここでw座標が何をさしているのか分からないんだけど…)
詰まるところ、現在のある頂点の座標をDepth Bufferから求める、World Positionと前フレームのViewProjectionMatrixから前のフレームでのその頂点の座標を求める。差し引きして速さをもとめる、と言ったところかな?ただ、コードを100%理解したわけではないが…求める頂点の座標はいずれもProjectionの方かな?
ここでまた疑問。各頂点での速度を求めるのは分かった。けど、そのあとに色を2Dのテクスチャからサンプルしてくるところがあるけど、それはどうやってるんだろ。2Dのテクスチャは自分がレンダリングしたものだろうけど、ということは、一つのシーンについて二回レンダリングしなければならないのかな?
否。ただたんにカラーバッファからサンプリングするだけ。だから、Vertex Shaderから渡されたColor Bufferをサンプリングする、みたいな感じか…?いや、でもほかのピクセルの色を取ってこないといけない…これ、まじでどうやるんだろ。
うーん、GPU Gem3 ではsceneSamplerっていう二次元のテクスチャ持って来てるけど、それをどうやって持ってくるのかわからない!