2

2 つの計算シェーダーを使用するアプリケーションがあります。Shader #1データを生成し、アペンド バッファとしてバインドしてxに格納します。すべてのfromで実行され、消費バッファーとしてバインドされます。を追加してこれを拡張したいと思います。これはinのすべてで実行され、新しいバッファを生成しますが、以前と同じように実行したいと考えています。AShader #2xAShader #3xAyBShader #2x

つまり、追加/消費バッファーのすべての要素に対して操作を実行したいのですが、それらを「消費」することはありません。

私が正しく理解していれば、要素を消費すると隠しカウンターが減少するだけなので、いっぱいになったときにカウントを保存し、それから消費するシェーダー呼び出しの間にリセットすることで、バッファーを何度も消費できるはずです。

問題は、私のプラットフォームである Unity には、この ( SetCounterValue()) のメソッドが 1 つしかないため、新しいカウンター値を渡す必要があることです。つまり、リセットする前にカウンター値を CPU メモリに取得する必要があります。これにより、GPU/CPU 間の同期が強制され、パフォーマンスが低下します。

GPU で完全に消費バッファーのカウンター値を設定することは可能ですか?

そうでない場合、消費を使用せずに消費バッファを反復処理することは可能ですか?

(バッファーを通常の UAV リソースとしてバインドし、そのように反復することが思いつきましたが、これがサポートされているかどうかについてのドキュメントはあいまいです。たとえば、「これらのリソースはリソース変数を使用しません。」リソース自体を参照してください。 、またはビュー?)

4

1 に答える 1