ユーザ用ツール

サイト用ツール


opengl:gpusl

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:gpusl [2014/06/11 09:43] – [FX] ogaopengl:gpusl [2015/03/04 22:02] (現在) – [GPU/Shader Language] oga
行 2: 行 2:
  
  
-                                       ^ Graphics ^ Compute ^                                                                +                        ^ Graphics ^ Compute ^   
-| HLSL  (DirectX)                                            | 独自, <nowiki>C++</nowiki>言語ベース    | +| HLSL  (DirectX)                      | 独自, <nowiki>C++</nowiki>言語ベース    | 
-| GLSL  (OpenGL)                                          | 独自, C言語風だが細部は異る                      | +| GLSL  (OpenGL)                       | 独自, C言語風だが細部は異る                      | 
-| Cg (NVIDIA)                                                  | 言語上はほぼ HLSL だが DirectX 以外でも使えるため細部は異なる         +| Cg (NVIDIA)                          | 言語上はほぼ HLSL だが DirectX 以外でも使えるため細部は異なる  
-| Mantle (AMD)                                                       +| Mantle (AMD)                                                 
-| Metal (Apple)                                                       +| Metal (Apple)                        <nowiki>C++</nowiki>言語 (LLVM)          
-| CUDA (NVIDIA)                                             | C言語               +| CUDA (NVIDIA)                        | C言語 (LLVM)            
-| OpenCL                                                        |   | +| OpenCL                               独自   | 
-| RenderScript (Android)                                | C言語 (LLVM)    |+| RenderScript (Android)               | C言語 (LLVM clang)    | 
 +| SPIR-V (Vulkan)            Y        Y    | Binary 中間言語 (GLSL or <nowiki>C++</nowiki>等から変換)   | 
 + 
 + 
  
   * C言語タイプ : リソースはポインタ表現が可能、LLVM (clang) ベース   * C言語タイプ : リソースはポインタ表現が可能、LLVM (clang) ベース
行 16: 行 20:
   * GLSL タイプ : function, statement は C言語だが、データタイプ (配列,Vector,Matrix) やデータの初期化、型変換などは独自仕様   * GLSL タイプ : function, statement は C言語だが、データタイプ (配列,Vector,Matrix) やデータの初期化、型変換などは独自仕様
   * 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.1402447383.txt.gz · 最終更新: 2014/06/11 09:43 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki