次の方法で共有


NBodyGravityCS11 サンプル

パス

ソース SDK ルート\Samples\C++\Direct3D11\NBodyGravityCS11
実行可能ファイル SDK ルート\Samples\C++\Direct3D11\Bin\x86 または x64\NBodyGravityCS11.exe

サンプルの概要

これは、GDC09 で公開されたコンピュート シェーダーのデモの 1 つです。このサンプルは、コンピュート シェーダー 4.0 を使用して実装された n ボディ パーティクル システムを示しています。コンピュート シェーダーによって提供される利点により、Direct3D 10 のピクセル シェーダーとジオメトリ シェーダーを使用して実装された Direct3D 10 セクションの以前の NBodyGravity サンプルと比べて、1 秒あたりのフレーム数が大幅に向上しています。

Ee416571.d3d11_sample_NBodyGravityCS11(ja-jp,VS.85).png

サンプルが動作するしくみ

サンプルでは、構造化バッファーを使用してシステム内の各パーティクルの位置と速度が格納されます。コンピュート シェーダーの各スレッドは、各フレーム内のパーティクルのいずれかを更新します。コンピュート シェーダー 4.0 は、構造化バッファーの読み取りと書き込みを直接行うことができ、このサンプルのパス間でのデータの再循環が容易になります。

1 つのパーティクルを更新するには、他のすべてのパーティクルの位置へのアクセスが必要となります。これには非常に高い I/O 負荷がかかります。I/O 効率を高めるには、ビデオ メモリーからパーティクルを直接フェッチするのではなく、コンピュート シェーダーの共有メモリーを使用してパーティクルのタイルをキャッシュし、それからキャッシュしたパーティクルに対して更新を実行します。この実行方法については、NBodyGravityCS11.hlsl を参照してください。