2つの計算シェーダを使用するアプリケーションがあります。 Shader #1
はデータx
を生成し、これを追加バッファとしてバインドされたA
に格納します。 Shader #2
は、消費バッファーとして結合されたA
からx
のすべてで実行されます。 私は新しいバッファB
にy
を生産、A
にx
のすべての上で動作する、Shader #3
を追加することで、これを拡張したいと思います - しかし、私はまだShader #2
は以前のようにx
上で実行したいです。GPUに追加/消費バッファのカウンタを設定しますか?
つまり、「消費する」ことなく、追加/消費バッファのすべての要素に対して操作を実行したいとします。
私が正しく理解していれば、要素を消費するだけで隠しカウンターが減少するので、カウントが満杯になるとバッファを何度も消費し、消費するシェーダー呼び出し間でリセットする必要があります。
私のプラットフォーム(Unity)には、このために1つの方法しかありません(SetCounterValue()
)ので、新しいカウンタ値を渡す必要があります。つまり、GPU/CPU間の同期を強制してパフォーマンスを低下させるように、CPUのメモリを再設定する前にカウンタ値を取得する必要があります。
消費バッファのカウンタ値をGPUに設定することはできますか?
もしそうでなければ、消費を使わずに消費バッファを反復することは可能ですか?
(普通のUAVリソースとしてバッファをバインドし、その方法を反復するために私に発生しましたが、the documentationが、これはサポートされているかどうかが曖昧である。Egはありません「これらのリソースは、リソース変数を使用しないでください。」を参照してください