私は一日中これにいて、それをあきらめ始めています。計算シェーダーに関する多くの情報が見つかりません。最良の情報源は「Direct3D 11 による実用的なレンダリングと計算」でしたが、残念ながらあまり役に立ちませんでした。いくつかの理論を理解するのに役立ちましたが、まだ何かを実装する方法がわかりません。
私は、その本で作成されたパーティクル システムに似たものに取り組んでいます。私のパーティクルシステムを除いて、基本的には3Dグリッドに表示されるパーティクルだけがあります(重力/力/などのようなものはありません)。これは教育目的のためのものです。これが機能するようになれば、残りの作業を行うことができると思います。
私が理解していないのは、計算シェーダーがパイプラインにどのように適合するかです。何をする必要があるかは理解していると思いますが、それを機能させる方法がわかりません。
すべてのパーティクル位置で満たされたバッファーを計算シェーダーにシードする必要があります。(たとえば、1024x1024x1 バッファー)。次に、このコンピューティング シェーダーがすべての位置を頂点として頂点シェーダーに出力する必要があり、その後の残りのパイプラインは標準です (頂点シェーダーがすべての変換を行い、ジオメトリ シェーダーが頂点をクワッドに拡張し、ピクセルをピクセルに拡張します)。シェーダーがレンダリングします)。
これが正しいかどうかはわかりませんが、正しいように聞こえます。たとえそうであったとしても、どうやってこれをやろうとしているのか、私にはわかりません。計算シェーダーの出力を頂点シェーダーに供給するにはどうすればよいですか? そもそも計算シェーダーを最初にシードするにはどうすればよいですか? 計算シェーダーがパーティクルのバッファーを破棄しないようにするにはどうすればよいですか? (そうしないと、毎回パーティクルを供給する必要があり、(最終的には) 動き回るパーティクルを使用してパーティクル システムを実行するという目的が無効になります。CPU ですべてを実行する必要があるため)
不明な点が非常に多く、これらのシェーダーを書き始めるには、すべてを知っている必要があるように感じます。飛び石が見つからない。