私の全体的な目標は、複数のテクスチャを入力として受け取り、複数のターゲットにレンダリングするピクセル シェーダーを作成できるようにすることです。シェーダーの初期化とファイナライズを使用するだけでなく、このシェーダーを繰り返し実行することで、結果が得られます。
以前に複数の入力テクスチャを持つシェーダーと、複数のターゲットにレンダリングするシェーダーを作成したことがありますが、2 つを組み合わせたことはありません。
私が問題を引き起こしていると信じているのは、セマンティクスと、入力および出力テクスチャを適切に設定する方法を完全に理解していないことです。
入力テクスチャを取得するいくつかの異なる方法を見てきましたが、どのように設定すればよいかについて混乱しています。
以下は、init および iterate シェーダーによって出力される共有構造体のコードです (finalize シェーダーは単に色を出力します)。
構造体 FRACTAL_OUTPUT { float4 IterationsAndControl : COLOR0; float4 Variables1And2 : COLOR1; float4 Variables3And4 : COLOR2; };
以下は iterate シェーダーと finalize シェーダーのテクスチャー宣言です (init シェーダーはテクスチャーを使用しません)。
Texture2D IterationsAndControl; サンプラー IterationsAndControlSampler : register(s4) { テクスチャ = <IterationsAndControl>; };Texture2D 変数 1And2; サンプラー Variables1And2Sampler : レジスター(s5) { テクスチャ = <IterationsAndControl>; };
Texture2D 変数 3And4; サンプラー Variables3And4Sampler : レジスター(s6) { テクスチャ = <IterationsAndControl>; };
C# XNA コードでは、(GraphicsDevice.SetRenderTargets() を実行して) レンダー ターゲットを設定し、(Effect.Parameter["TextureVariableName"].SetValue() を実行して) テクスチャ パラメーターを設定し、(スプライト バッチを介して) クワッドを描画します。
このようなことをする例が見つからないので、どんな助けでも大歓迎です。