コンピュートシェーダー
コンピュートシェーダー(英語:compute shader)とは、GPUを使ったGPGPUを手軽に行うことができるフレームワークの拡張機能やツール類などのことである。
主な種類
GPGPUに特化したプログラミング言語と専用のコンパイラもあれば、従来の画像処理用のシェーダーにGPGPUを手軽に扱えるように拡張したものまで色々ある。
GPGPUに特化したプログラミング言語
レンダリング向けシェーダーに拡張を施したもの
GPGPU特化型プログラミング言語と異なり、古くからレンダリングに用いられてきたHLSLやGLSLを用いることができるもの。
この手のものはコンピュートパイプラインとレンダリングパイプラインを同じコマンドリストに入れられ、その中でバッファやテクスチャなどを共有できるのでGPU(VRAM)から出ることなく一連の処理をできる。いちいちCPUやメインメモリに処理やデータが帰ってこないので用途によっては非常にパフォーマンスが良い。
画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果をピクセルシェーダーで単純描画するというのが定番である。
- DirectCompute = HLSLを用いる。
- OpenGL Compute Shader = GLSLを用いる。
- Vulkan Compute Shader = GLSLを持ちいる。OpenGLとほぼ同じだがレイトレーシング関連など突撃系拡張が豊富。