コンピュートシェーダー
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/31 11:52 UTC 版)
「シェーダー」の記事における「コンピュートシェーダー」の解説
GPGPU向けの汎用APIとして代表的なものはCUDAとOpenCLだが、OpenGL 4.3以降、OpenGL ES 3.1以降、およびDirect3D 11以降では、主にグラフィックス連携を重視したGPGPUのためのコンピュートシェーダー(Compute Shader、演算シェーダー)が搭載された。コンピュートシェーダーは前述のグラフィックスパイプラインとは独立して動作することのできるステージである。なお、コンピュートシェーダーは座標変換や陰影計算にとどまらない汎用計算が可能となっているため、「シェーダー」という命名はほかのシェーダーステージに合わせた便宜上のものである。Direct3Dのコンピュートシェーダーに関しては、Direct3D APIを含めた総称としてDirectComputeと呼ばれている。 コンピュートシェーダーがCUDAやOpenCLと比較して優れている点として、Direct3D(OpenGL)リアルタイムグラフィックスパイプラインとの連携がしやすい(シミュレーションの実行と可視化に向いている)、Direct3D/HLSL(OpenGL/GLSL)をすでに利用している場合は修得が容易である、などが挙げられる。
※この「コンピュートシェーダー」の解説は、「シェーダー」の解説の一部です。
「コンピュートシェーダー」を含む「シェーダー」の記事については、「シェーダー」の概要を参照ください。
コンピュートシェーダー
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/11/03 07:58 UTC 版)
「DirectCompute」の記事における「コンピュートシェーダー」の解説
アプリケーションでDirectComputeを使用する場合、Direct3D 11 APIもしくはDirect3D 12 APIを通してGPUデバイスを利用することになる。 プログラムの記述にはHLSLと呼ばれるシェーダー言語(シェーディング言語)を使用するが、これはDirect3Dの頂点シェーダーやピクセルシェーダーといったグラフィックスパイプライン記述用に使われている言語でもある。GPGPU用のシェーダープログラムはコンピュートシェーダーと呼ばれ、グラフィックスパイプラインとは独立して動作する。 HLSLのコンピュートシェーダーはCUDAやOpenCLのカーネル関数(並列実行単位)の記述に非常によく似ている。 なおDirect3Dの競合APIであるOpenGLでは、バージョン4.3でDirect3D同様のコンピュートシェーダーを導入した(OpenGLではコンピュートシェーダーの記述にGLSLを使用する)。 DirectComputeおよびコンピュートシェーダーがCUDAやOpenCLと比較して優れている点として、Direct3Dリアルタイムグラフィックスパイプラインとの連携がしやすい(シミュレーションの実行と可視化に向いている)、Direct3D/HLSLをすでに利用している場合は修得が容易である、などが挙げられる。また、マイクロソフトプラットフォーム専用という制約はあるが、逆にDirectX 11/DirectX 12対応でさえあればいかなるデバイスでも動作するというメリットがある。
※この「コンピュートシェーダー」の解説は、「DirectCompute」の解説の一部です。
「コンピュートシェーダー」を含む「DirectCompute」の記事については、「DirectCompute」の概要を参照ください。
- コンピュートシェーダーのページへのリンク