モーション ブラー (Direct3D 9)

3D シーンのオブジェクトの速度感覚は、オブジェクトをぼかし、オブジェクトの背後にオブジェクト画像のぼんやりとした跡を残すことで高めることができます。Direct3D アプリケーションは、フレームごとにオブジェクトを複数回レンダリングして、これを実現します。

通常、Direct3D アプリケーションはシーンをオフスクリーン バッファーにレンダリングすることを思い出してください。バッファーの内容は、アプリケーションで IDirect3DDevice9::Present メソッドを呼び出したときにスクリーンに表示されます。Direct3D アプリケーションは、スクリーンにフレームを表示する前にオブジェクトをシーンに複数回レンダリングできます。

アプリケーションでプログラムから DrawPrimitive メソッドへの呼び出しを複数回行い、同じ 3D オブジェクトを繰り返し渡します。それぞれの呼び出しの前に、オブジェクトの位置座標を少し更新し、ターゲット レンダリング サーフェス上に一連の不鮮明なオブジェクト画像を生成します。オブジェクトが 1 つまたは複数のテクスチャーを持っている場合、テクスチャーすべてをほとんど透明にしてオブジェクトの最初の画像をレンダリングすると、モーション ブラー エフェクトを高めることができます。オブジェクトをレンダリングするたびに、オブジェクトのテクスチャーの透明度が減少します。最終位置座標でオブジェクトをレンダリングするときは、透明度なしでオブジェクトをレンダリングすることになります。例外は、テクスチャーの透明度を必要とする他のエフェクトにモーション ブラーを追加する場合です。どの場合でも、フレームのオブジェクトの最初の画像が最も透明でなければなりません。最後の画像の透明度が最も低くなければなりません。

ターゲット レンダリング サーフェスに一連のオブジェクト画像をレンダリングし、残りのシーンもレンダリングしたら、IDirect3DDevice9::Present メソッドを呼び出してスクリーンにフレームを表示します。

ユーザーがシーンを高速で移動するエフェクトをシミュレーションする場合は、スクリーン全体にモーション ブラーを追加できます。この場合、アプリケーションは、フレームごとにシーン全体を複数回レンダリングします。シーンをレンダリングするたびに、視点を少し移動しなければなりません。シーンが非常に複雑な場合、フレームごとのシーンのレンダリング回数が増えるので、高速に移動するシーンほどパフォーマンスが低下するのがユーザーにわかります。