「コンピュートシェーダー」の版間の差分

提供:MonoBook
編集の要約なし
送り仮名の修正
1行目: 1行目:
'''コンピュートシェーダー'''([[英語]]:compute shader)とは、[[GPU]]を使った[[GPGPU]]を手軽に行うことができる[[フレームワーク]]の拡張機能やツール類などのことである。
'''コンピュートシェーダー'''([[英語]]:compute shader)とは、[[GPU]]を使った[[GPGPU]]を手軽に行うことができる[[フレームワーク]]の拡張機能やツール類などのことである。


== 主な種類 ==
==主な種類==
GPGPUに特化したプログラミング言語と専用のコンパイラもあれば、従来の画像処理用のシェーダーにGPGPUを手軽に扱えるようにした拡張したものまで色々ある。
GPGPUに特化したプログラミング言語と専用のコンパイラもあれば、従来の画像処理用のシェーダーにGPGPUを手軽に扱えるように拡張したものまで色々ある。


=== GPGPUに特化したプログラミング言語 ===
===GPGPUに特化したプログラミング言語===
最近流行りの[[人工知能]]や[[仮想通貨]]といえばこれが主流である。
最近流行りの[[人工知能]]や[[仮想通貨]]といえばこれが主流である。


* [[CUDA]] = [[C++]]っぽい何か。[[NVIDIA]]のGeFroceシリーズでしか使えない。
*[[CUDA]] = [[C++]]っぽい何か。[[NVIDIA]]のGeFroceシリーズでしか使えない。
* [[OpenCL]] = [[C言語]]っぽい何か。[[AMD]]でも[[Intel]]でも使えるが[[NVIDIA]]だと性能がでない。
*[[OpenCL]] = [[C言語]]っぽい何か。[[AMD]]でも[[Intel]]でも使えるが[[NVIDIA]]だと性能がでない。


=== レンダリング向けシェーダーに拡張を施したもの ===
===レンダリング向けシェーダーに拡張を施したもの===
GPGPU特化型プログラミング言語と異なり、古くからレンダリングに用いられてきた[[HLSL]]や[[GLSL]]を用いることができるもの。
GPGPU特化型プログラミング言語と異なり、古くからレンダリングに用いられてきた[[HLSL]]や[[GLSL]]を用いることができるもの。


17行目: 17行目:
画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果を[[ピクセルシェーダー]]で単純描画するというのが定番である。
画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果を[[ピクセルシェーダー]]で単純描画するというのが定番である。


* [[DirectCompute]] = [[HLSL]]を用いる。
*[[DirectCompute]] = [[HLSL]]を用いる。
* [[OpenGL Compute Shader]] = [[GLSL]]を用いる。
*[[OpenGL Compute Shader]] = [[GLSL]]を用いる。
* [[Vulkan Compute Shader]] = [[GLSL]]を持ちいる。OpenGLとほぼ同じだが[[レイトレーシング]]関連など突撃系拡張が豊富。
*[[Vulkan Compute Shader]] = [[GLSL]]を持ちいる。OpenGLとほぼ同じだが[[レイトレーシング]]関連など突撃系拡張が豊富。

2021年12月28日 (火) 02:42時点における版

コンピュートシェーダー英語:compute shader)とは、GPUを使ったGPGPUを手軽に行うことができるフレームワークの拡張機能やツール類などのことである。

主な種類

GPGPUに特化したプログラミング言語と専用のコンパイラもあれば、従来の画像処理用のシェーダーにGPGPUを手軽に扱えるように拡張したものまで色々ある。

GPGPUに特化したプログラミング言語

最近流行りの人工知能仮想通貨といえばこれが主流である。

レンダリング向けシェーダーに拡張を施したもの

GPGPU特化型プログラミング言語と異なり、古くからレンダリングに用いられてきたHLSLGLSLを用いることができるもの。

この手のものはコンピュートパイプラインとレンダリングパイプラインを同じコマンドリストに入れられ、その中でバッファやテクスチャなどを共有できるのでGPU(VRAM)から出ることなく一連の処理をできる。いちいちCPUメインメモリに処理やデータが帰ってこないので用途によっては非常にパフォーマンスが良い。

画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果をピクセルシェーダーで単純描画するというのが定番である。