0

複雑な水シェーダーを構築しようとしています (インターネットの例から水シェーダーを入手しました)。今、私はいくつかの機能を追加したいと思います。ぼかした水にパターン グリッドをブレンドします。水とぼかしは機能しますが、ランダム化を使用してぼかし効果を構築しようとすると...シェーダーの多くの命令を使用します... :(

既存の「地面」テクスチャがないため、「hlsl 複数パス」、「hlsl テクスチャへのレンダリング」、「テクスチャなしの hlsl 複数パス」などのトピックを検索しました。

私は法線マップと環境マップから水を構築しました.今...最初のパスから2番目のパスへのこの「マップ全体/テクスチャ/シェーダーデータ」を取得することは可能ですか? 両方のパスのみを実行すると、最初のパスの色が完全に上書きされます:(

皆さんが私の問題を理解し、必要なすべての情報を入手できることを願っています。

助けていただければ幸いです。

ありがとう...

4

1 に答える 1

1

シェーダー モデル 3.0 のコンパイルを試すことができます。より多くの命令を使用できます。

複数のパスを実行する場合は、ターゲットへのレンダリングを使用する必要はありません。以前の色が上書きされないように、アルファ ブレンディングを有効にする必要があります。

ただし、前のパスの出力をサンプリングする必要がある場合、これは機能しません。この場合、2 つのテクスチャ (A と B、両方ともレンダー ターゲットとして作成) が必要です。次の手順を実行します:

  1. レンダー ターゲットをテクスチャ A に設定します。
  2. 最初のパスをレンダリングします。
  3. レンダリング ターゲットをテクスチャ B (または、次のレンダリング プロセスでテクスチャ B をサンプリングする必要がない場合は、最終的なレンダリング ターゲット) に設定します。
  4. テクスチャ A を使用して hlsl サンプラーをセットアップします (たとえば、ID3DXEffect::SetTexture を使用します)。
  5. 2 番目のパスをレンダリングします (サンプリングにテクスチャ A を使用)。

2 つ以上のパスがある場合は、A と B を入れ替えて、手順 3. ~ 5. を実行します。パスごとに。

于 2012-06-18T19:22:51.927 に答える