問題タブ [directcompute]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - HLSL コード内の threadGroups と numthreads の数を取得する
私の質問は ComputeShader、特に HLSL コードに関するものです。したがって、DeviceContext.Dispath(X, Y, Z)
X * Y * Z グループを生成し、それぞれが属性で設定された x * y * z 個の個別のスレッドを持ちます[numthreads(x,y,z)]
。問題は、ディスパッチされた ThreadGroup の総数とグループ内のスレッドの数を取得するにはどうすればよいかということです。なぜそれが必要なのかを説明しましょう。処理しようとしているデータの量は大きく異なる可能性があるため、メソッドは入力配列のサイズに適応する必要があります。もちろん、定数バッファーで Dispath 引数を送信して HLSL コードから使用できるようにすることもできますが、グループ内のスレッド数はどうでしょうか? GetThreadGroupNumber()
やのようなメソッドを探していますGetThreadNumberInGroup()
。助けていただければ幸いです。
c++ - ID3D12Device::CreateComputePipelineState が失敗する (E_INVALIDARGS)
問題が発生しました。Compute PSO を作成しようとすると、関数が E_INVALIDARGS で失敗します。グラフィックPSOがキャッシュされたデータなしで作成されることをMSDNで見ましたが、おそらくCachedPsoが利用できないことが原因です。
ここにコード自体があります。ルート署名のシリアル化と RS 作成の両方で S_OK が報告されますが、CreateComputePS は失敗します。シェーダーは Visual Studio (シェーダー バージョン 5.1) によってコンパイルされ、ReadFileToBlob されます。
UPD: CreateCompPS への呼び出しの直後に表示される出力ログにエラーがあります (実際にスローされた例外はなく、テキスト メッセージのみで、気付きにくい): DirectComputeInteropLib.exe の 0x774CD928 で例外がスローされました: Microsoft C++ 例外: _com_error at memory location 0x001DEFF4。
unity3d - GPU の追加/消費バッファーのカウンターを設定しますか?
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 リソースとしてバインドし、そのように反復することが思いつきましたが、これがサポートされているかどうかについてのドキュメントはあいまいです。たとえば、「これらのリソースはリソース変数を使用しません。」リソース自体を参照してください。 、またはビュー?)