opengl:gpusl
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
opengl:gpusl [2014/06/11 09:43] – [SAS] oga | opengl:gpusl [2015/03/04 22:02] (現在) – [GPU/Shader Language] oga | ||
---|---|---|---|
行 2: | 行 2: | ||
- | ^ ^ Graphics ^ Compute ^ ^ | + | ^ |
- | | HLSL (DirectX) | + | | HLSL (DirectX) |
- | | GLSL (OpenGL) | + | | GLSL (OpenGL) |
- | | Cg (NVIDIA) | + | | Cg (NVIDIA) |
- | | Mantle (AMD) | | + | | Mantle (AMD) | Y |
- | | Metal (Apple) | + | | Metal (Apple) |
- | | CUDA (NVIDIA) | + | | CUDA (NVIDIA) |
- | | OpenCL | + | | OpenCL |
- | | RenderScript (Android) | + | | RenderScript (Android) |
+ | | SPIR-V (Vulkan) | ||
+ | |||
+ | |||
* C言語タイプ : リソースはポインタ表現が可能、LLVM (clang) ベース | * C言語タイプ : リソースはポインタ表現が可能、LLVM (clang) ベース | ||
行 16: | 行 20: | ||
* GLSL タイプ : function, statement は C言語だが、データタイプ (配列, | * GLSL タイプ : function, statement は C言語だが、データタイプ (配列, | ||
* data type (vector, matrix 等) とその演算子、組み込み関数などは基本的に互換性なし | * data type (vector, matrix 等) とその演算子、組み込み関数などは基本的に互換性なし | ||
+ | |||
+ | LLVM/clang を使った C言語タイプはコンパイラが明確かつメジャーなので、構文上のバグ発生率が極めて低いという利点があります。 | ||
+ | GLSL のようにドライバ毎にコンパイラが異なっている場合は、同じ言語でも実装が GPU によって異なるため、初歩的なバグが残っていることも少なくありません。 | ||
+ | |||
+ | GLSL が一番方言が強いですが、Smartphone からブラウザまで最も多くのプラットフォームで走るシェーダー言語でもあります。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
行 48: | 行 61: | ||
同じシェーダー言語だったとしても入出力のインターフェースに互換性がないと、そのまま再利用することが出来ません。 | 同じシェーダー言語だったとしても入出力のインターフェースに互換性がないと、そのまま再利用することが出来ません。 | ||
- | そのため、入出力の記述を共通化するために定められたフォーマットが DirectX HLSL の SAS です。 | + | 入出力の記述を共通化するために定められたフォーマットが DirectX HLSL の SAS です。 |
ただし厳密に SAS に従った実装は多くなく、部分的な流用が多いものと考えられます。 | ただし厳密に SAS に従った実装は多くなく、部分的な流用が多いものと考えられます。 | ||
- | また決められたルールだけでは不足するので、実際の描画時は何らかの独自の拡張がどうしても必要となってしまいます。 | + | 決められたルールだけでは不足するので、実際の描画時は何らかの独自拡張が必要となっていることも問題です。 |
+ | |||
+ | また SAS 自体も途中で仕様を完全にリセットしたことがあります。 | ||
+ | これは互換性が全くない仕様変更であり、初期の実装が無駄になっています。 | ||
+ | それゆえ信頼性の面でも不安が残り普及を妨げることとなりました。 | ||
+ | |||
+ | GUI との相性が良いためツールではよく利用されていますが、 | ||
+ | やはり完全な互換性が確保できているわけではありません。 | ||
- | 残念ながら完全に互換性が保たれるところまでは到達していません。 | ||
opengl/gpusl.1402447415.txt.gz · 最終更新: 2014/06/11 09:43 by oga