「コンピュートシェーダー」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) |
||
(他の1人の利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
'''コンピュートシェーダー'''([[英語]]:compute shader)とは、[[GPU]]を使った[[GPGPU]]を手軽に行うことができる[[フレームワーク]]の拡張機能やツール類などのことである。 | '''コンピュートシェーダー'''([[英語]]:compute shader)とは、[[GPU]]を使った[[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]]を用いることができるもの。 | ||
− | + | この手のものはコンピュートパイプラインとレンダリングパイプラインを同じコマンドリストに格納でき、その中でバッファやテクスチャなどを共有できるのでGPU(VRAM)から出ることなく一連の処理をできる。いちいち[[CPU]]や[[メインメモリ]]に処理やデータが帰ってこないので用途によっては非常にパフォーマンスが良い。 | |
画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果を[[ピクセルシェーダー]]で単純描画するというのが定番である。 | 画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果を[[ピクセルシェーダー]]で単純描画するというのが定番である。 | ||
− | * [[DirectCompute]] = [[HLSL]]を用いる。 | + | *[[DirectCompute]] = [[HLSL]]を用いる。 |
− | * [[OpenGL Compute Shader]] = [[GLSL]]を用いる。 | + | *[[OpenGL Compute Shader]] = [[GLSL]]を用いる。 |
− | * [[Vulkan Compute Shader]] = [[GLSL]]を持ちいる。OpenGLとほぼ同じだが[[レイトレーシング]]関連など突撃系拡張が豊富。 | + | *[[Vulkan Compute Shader]] = [[GLSL]]を持ちいる。OpenGLとほぼ同じだが[[レイトレーシング]]関連など突撃系拡張が豊富。 |
2022年6月20日 (月) 05:10時点における最新版
コンピュートシェーダー(英語:compute shader)とは、GPUを使ったGPGPUを手軽に行うことができるフレームワークの拡張機能やツール類などのことである。
主な種類[編集 | ソースを編集]
GPGPUに特化したプログラミング言語と専用のコンパイラもあれば、従来の画像処理用のシェーダーにGPGPUを手軽に扱えるように拡張したものまで色々ある。
GPGPUに特化したプログラミング言語[編集 | ソースを編集]
レンダリング向けシェーダーに拡張を施したもの[編集 | ソースを編集]
GPGPU特化型プログラミング言語と異なり、古くからレンダリングに用いられてきたHLSLやGLSLを用いることができるもの。
この手のものはコンピュートパイプラインとレンダリングパイプラインを同じコマンドリストに格納でき、その中でバッファやテクスチャなどを共有できるのでGPU(VRAM)から出ることなく一連の処理をできる。いちいちCPUやメインメモリに処理やデータが帰ってこないので用途によっては非常にパフォーマンスが良い。
画像処理や画像認識などでは「処理」した結果を「描画」して見せるまでワンセットなのでこちらを使っていることが多い。コンピュートシェーダーで画像を処理して、その結果をピクセルシェーダーで単純描画するというのが定番である。
- DirectCompute = HLSLを用いる。
- OpenGL Compute Shader = GLSLを用いる。
- Vulkan Compute Shader = GLSLを持ちいる。OpenGLとほぼ同じだがレイトレーシング関連など突撃系拡張が豊富。