コンピュート シェーダーの概要
コンピュート シェーダーは、グラフィック プログラミングを超えて 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 バイト領域に制限されます。
- アトミック命令は使用できません。
- 倍精度値は使用できません。
このセクションには、以下のトピックが含まれています。
- 新しいリソースのタイプ
一般化されたメモリー アクセスをサポートする、いくつかの新しいリソース タイプが導入されました。 - リソースへのアクセス
この新しいリソース タイプは、リソースへの既存のアクセス方法、および新しいアクセス テクニックをサポートします。 - アトミック関数
ここでは、新しいリソース タイプのアトミック機能を保証するいくつかの関数について説明します。 - 方法 :コンピュート シェーダーの作成
コンピュート シェーダーの作成方法について説明します。