コンピュート シェーダーの概要

コンピュート シェーダーは、グラフィック プログラミングを超えて Direct3D 11 を拡張するプログラム可能なシェーダー ステージです。他のプログラム可能なシェーダー (頂点シェーダーやジオメトリ シェーダーなど) と同様に、コンピュート シェーダーは、HLSL で設計および実装されますが、このようなシェーダーとの類似点はこれだけです。コンピュート シェーダーは、高速の汎用計算機能を提供し、GPU 上での多数の並行プロセッサを利用します。コンピュート シェーダーは、メモリー共有機能とスレッド同期機能を提供し、さらに効果的な並行プログラミング メソッドを可能にします。

DX10 上でのコンピュート シェーダーの使用

Direct3D 10 上でコンピュート シェーダーを使用するときには、以下の点に注意する必要があります。

  • 最大スレッド数は、各グループで 768 個に制限されます。
  • numthreads の Z 次元は 1 に制限されます。
  • Dispatch の Z 次元は 1 に制限されます。
  • コンピュート シェーダーにバインド可能なアンオーダード アクセス ビューは 1 つのみです。
  • RWStructuredBuffers および RWByteAddressBuffers のみがアンオーダード アクセス ビューとして使用可能です。
  • スレッドは、書き込み用に groupshared メモリーの独自の領域のみにアクセスできます。ただし、読み取りは任意の場所から可能です。
  • 書き込み用に groupshared メモリーにアクセスする場合、SV_GroupIndex を使用する必要があります。
  • groupshared メモリーは、各グループで 16KB に制限されます。
  • 単一のスレッドは、書き込み用には groupshared メモリーの 256 バイト領域に制限されます。
  • アトミック命令は使用できません。
  • 倍精度値は使用できません。

このセクションには、以下のトピックが含まれています。

関連項目

グラフィック パイプライン