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