2 つの計算シェーダーを使用するアプリケーションがあります。Shader #1
データを生成し、アペンド バッファとしてバインドしてx
に格納します。すべてのfromで実行され、消費バッファーとしてバインドされます。を追加してこれを拡張したいと思います。これはinのすべてで実行され、新しいバッファを生成しますが、以前と同じように実行したいと考えています。A
Shader #2
x
A
Shader #3
x
A
y
B
Shader #2
x
つまり、追加/消費バッファーのすべての要素に対して操作を実行したいのですが、それらを「消費」することはありません。
私が正しく理解していれば、要素を消費すると隠しカウンターが減少するだけなので、いっぱいになったときにカウントを保存し、それから消費するシェーダー呼び出しの間にリセットすることで、バッファーを何度も消費できるはずです。
問題は、私のプラットフォームである Unity には、この ( SetCounterValue()
) のメソッドが 1 つしかないため、新しいカウンター値を渡す必要があることです。つまり、リセットする前にカウンター値を CPU メモリに取得する必要があります。これにより、GPU/CPU 間の同期が強制され、パフォーマンスが低下します。
GPU で完全に消費バッファーのカウンター値を設定することは可能ですか?
そうでない場合、消費を使用せずに消費バッファを反復処理することは可能ですか?
(バッファーを通常の UAV リソースとしてバインドし、そのように反復することが思いつきましたが、これがサポートされているかどうかについてのドキュメントはあいまいです。たとえば、「これらのリソースはリソース変数を使用しません。」リソース自体を参照してください。 、またはビュー?)