ユーザ用ツール

サイト用ツール


opengl:gpusl

文書の過去の版を表示しています。


GPU/Shader Language

Graphics Compute
HLSL (DirectX) Y Y 独自, C++言語ベース
GLSL (OpenGL) Y Y 独自, C言語風だが細部は異る
Cg (NVIDIA) Y ? 言語上はほぼ HLSL だが DirectX 以外でも使えるため細部は異なる
Mantle (AMD) Y Y
Metal (Apple) Y Y
CUDA (NVIDIA) N Y C言語
OpenCL N Y
RenderScript (Android) N Y C言語 (LLVM)
  • C言語タイプ : リソースはポインタ表現が可能、LLVM (clang) ベース
  • HLSL タイプ : ポインタ表現は使わないが構文は C言語の拡張
  • GLSL タイプ : function, statement は C言語だが、データタイプ (配列,Vector,Matrix) やデータの初期化、型変換などは独自仕様
  • data type (vector, matrix 等) とその演算子、組み込み関数などは基本的に互換性なし

Shader File

プラットフォームによって Shader File に記述可能な情報が異なっています。

  • GLSL : Entry は必ず main() 、そのため VertexShader, FragmentShader 等は個別に別ファイルにしなければならない。(pre processor で分岐するなどの工夫は可能)
  • HLSL : コンパイル時に Entry 関数名を指定可能。そのため複数のシェーダー関数を 1ファイルに記述できる。

FX

FX は、 VertexSahder, PixelShader など複数のシェーダーを組み合わせて、パイプラインや基本的なステートも同時に記述できる複合フォーマットです。 DirectX HLSL の fx ファイル、CgFx が有名。

FX に記載された情報を解釈するのは描画エンジン (CPU側) の役割なので、描画エンジンが対応していない情報は記述しても無視されます。

HLSL, CgFx 以外は明確な標準型が存在しないため、多くの場合は描画エンジン依存であり互換性はありません。

opengl/gpusl.1402446956.txt.gz · 最終更新: 2014/06/11 09:35 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki