シェーダーとCUDA / OpenCLの計算


8

だから私は最近、Compute Shaderについて学んだばかりで、CUDAやOpenCLで行う並列プログラミングと同じアイデアを私が見つけたものから、シェーダーパイプラインで見ていきます。

シーンに100万の立方体を描画したい場合は、どちらか一方または両方を使用する必要があります。両方をどのように分割して、GPUがシェーダーと別のプロセスの両方を同時に並列計算しないようにする場合


2
そもそも何百万ものキューブを描画するのにGPGPUを使いたいのはなぜですか
Derag、2016

3
計算シェーダーはレンダリングではなく、計算ワークロードに使用されます。経験則では、ラスタライズ(つまり、三角形分割されたジオメトリをピクセルに処理する)が必要な場合は、レンダリングパイプラインを使用する必要があります。大量のデータを処理するだけの場合は、コンピューティングを使用する必要があります。また、コンピューティングシェーダーおよびCUDA / OpenCL(グラフィックAPI相互運用機能を使用)に対する賛成と反対の健全な議論にも興味があります。聞いたことの1つは、コンピューティング固有のAPIを使用したコンピューティングワークロードのキューイングの改善ですが、詳細を知りたいです(つまり、非同期コンピューティングはどのようにして実現されるのでしょうか)。
IneQuation

@Deragキューブフェチにできるだけ早くフィードしようとしています
FrickeFresh

100万の立方体を描画したい場合は、レイマーチングを使用してください:)
russ

回答:


7

頂点シェーダーとフラグメントシェーダーが文字通りパイプラインに接続されているのと同じ意味で、コンピュートシェーダーを「シェーダーパイプライン内」にあると考えることは、今日ではまったく正しくありません。現在、コンピューティングシェーダーは何にも「フックアップ」されていないか、ラスタライズを駆動できないか、ラスタライズの出力を直接消費できません。

ただし、これによってできることは、比較的効率的な方法で描画呼び出しによって使用されるメモリリソースを消費および生成することです。OpenCLはこれをかなり難しくします(たとえば、https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorialを参照してください)。これにより、レンダラー内で計算パスを効率的に統合できますが、レンダリングパイプラインには統合されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.