通常、後処理は画面全体で機能します。これは本当に簡単です。
あなたがすることは、デバイスにレンダー ターゲットを設定することです (サンプルからレンダー ターゲットを作成する方法を理解できると思います)。
GraphicsDevice.SetRenderTarget(renderTarget);
この時点から、レンダリングするものはすべてそのレンダー ターゲットにレンダリングされます。完了したら、デバイスをバック バッファーへの描画に戻すことができます。
GraphicsDevice.SetRenderTarget(null);
最後に、レンダー ターゲットをテクスチャのように使用して描画できます (これは XNA 4.0 の新機能で、XNA 3.1 ではそれを呼び出す必要がGetTexture
ありました)。
後処理効果を作成するには:
- シーンをレンダー ターゲットにレンダリングする
- バックバッファに戻る
SpriteBatch
後処理効果を適用するピクセル シェーダーを使用して、レンダー ターゲットをフル スクリーンでレンダリングします (使用します)。
モデルごとにこれをやりたいと思いますか?これは奇妙に思えますが、確かに可能です。まず、レンダー ターゲットに透明なアルファ チャネルがあることを確認してから、アルファ ブレンディングで描画します。
それとも、後処理をまったく意味しないのですか?スキン モデルの頂点シェーダーを維持したまま、モデルの描画に使用されるピクセル シェーダーを実際に変更しますか?