opengl:opengllist
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
opengl:opengllist [2014/04/16 20:27] – [OpenGL ES 2.0] oga | opengl:opengllist [2014/10/26 15:57] (現在) – [OpenGL ES 3.1] oga | ||
---|---|---|---|
行 39: | 行 39: | ||
* Pixel Shader の Program サイズは、Color 64 step + Texture 32 step の合計 96 step のみ | * Pixel Shader の Program サイズは、Color 64 step + Texture 32 step の合計 96 step のみ | ||
* Texture Fetch 制限が分離 (同じテクスチャを複数読める) ただし上限あり | * Texture Fetch 制限が分離 (同じテクスチャを複数読める) ただし上限あり | ||
- | * Fog など固定機能を併用する | + | * Fog / AlphaTest |
* 汎用補間 Register (varying) はなく Texcoord0~ を流用する。 | * 汎用補間 Register (varying) はなく Texcoord0~ を流用する。 | ||
行 68: | 行 68: | ||
===== OpenGL ES 3.0 ===== | ===== OpenGL ES 3.0 ===== | ||
+ | Mobile 向け GPU の高機能化に伴い、新しい世代の GPU 用に策定された API です。 | ||
+ | OpenGL 3.x のモバイル向け API で、DirectX でいえば Direct3D 10 世代に相当します。 | ||
+ | Desktop 向けではこの世代から完全に Shader only となり、固定機能や古いシェーダー機能などレガシー API を削除しました。 | ||
+ | そのため Shader 言語など、大きく仕様変更されているものがあります。 | ||
+ | (OpenGL 3.x/4.x の場合は Compatibility Profile を用いることで、従来の固定機能 API もそのまま利用できます。) | ||
+ | ところが Mobile では Desktop 版 API とは少々異なる事情となっています。 | ||
+ | * 一世代前にすでにレガシー固定機能を取り除いてスリム化している | ||
+ | * OpenGL ES 2.0 が事実上の 3D API の標準として、非常に多くの OS やプラットフォームで活用されている | ||
+ | そのため OpenGL ES 3.0 は Desktop API とは逆に、OpenGL ES 2.0 との互換性を強く維持しています。 | ||
+ | GL API も Shader もそのままのコードが OpenGL ES 3.0 の上で動きますし、 | ||
+ | OpenGL ES 3.0 の機能を必ずしも使わなくて構いません。 | ||
+ | Default Uniform block など互換性を保つための仕組みがあるからです。 | ||
+ | この流れは Desktop API に逆輸入されており、OpenGL 4.1 では OpenGL ES 2.0 との API 互換 Profile が設けられました。 | ||
+ | 一旦排除された OpenGL 2.x 世代の API の復活となります。 | ||
+ | OpenGL 4.3 でも OpenGL ES 3.0 との互換性が保たれています。 | ||
+ | 同じように DirectX でも Direct3D11 では、ShaderModel 9/10 などの GPU をサポートすることになりました。 | ||
+ | Direct3D 10 で一旦切り捨てた下位 GPU ですが、Mobile 向けに各種 SoC のサポートが必要になったためと考えられます。 | ||
+ | 機能的には Direct3D10 / OpenGL 3.3 から機能を削減したものに相当します。 | ||
+ | 削除された機能でわかりやすいのは GeometryShader でしょう。 | ||
+ | Direct3D 10 の目玉のひとつでしたが、OpenGL で対応したのは OpenGL 3.2 からです。 | ||
+ | OpenGL 3.0/3.1 には GeometryShader がなかったので、OpenGL ES 3.0 によく似ているといえます。 | ||
+ | シェーダープログラムの汎用化が進み、 | ||
+ | リソースはすべてバッファとして統合されました。 | ||
+ | カラーチャンネルも R G B A (x y z w) が等しい扱いとなりました。 | ||
+ | D3D9/GL2 世代までは Color と Alpha で差がありました。 | ||
+ | 1ch Texture は Luminance か Alpha の 2択。D3D10/ | ||
+ | VertexShader , PixelShader の機能的な区別も完全に無くなっています。 | ||
+ | ところが Mobile 向け GPU の多くは OpenGL ES 2.0 (ShaderModel 3.0) の時点で Unified Shader 化されたものが多かったので、 | ||
+ | それほど目新しさがありません。 | ||
+ | MRT 対応化など、最低要件を引き上げたことが重要なポイントといえるでしょう。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== OpenGL ES 3.1 ===== | ||
+ | |||
+ | バージョン番号は 0.1 とマイナーなアップデートですが、 | ||
+ | 仕様的には OpenGL ES 3.0 よりもさらに 1世代上に相当します。 | ||
+ | |||
+ | OpenGL ES 3.1 は Direct3D 11 / OpenGL 4.x のモバイル向け API です。 | ||
+ | 最大の特徴は Compute Shader に対応したこと。 | ||
+ | |||
+ | ただし Tessellator は存在しておらず、Direct3D 11 の特徴のひとつであった HalShader / DomainShader がありません。 | ||
+ | Tessellator は Rasterizer と同じで HW 固定機能のサポートが必要です。 | ||
+ | ハードウエアの負担を減らしつつ、効果的な機能を優先したためではないかと考えられます。 | ||
+ | |||
+ | また OpenGL ES 3.0 世代の GPU は OpenCL に対応しているものが少なくありません。 | ||
+ | すでに ComputeShader を走らせるだけの機能が GPU に備わっていたことも理由のひとつといえるのではないでしょうか。 | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ^ OpenGL | ||
+ | | OpenGL ES 2.0 | GLSL 1.0 | | ||
+ | | OpenGL 2.0 | GLSL 1.1 | | ||
+ | | OpenGL 2.1 | GLSL 1.2 | | ||
+ | | OpenGL 3.0 | GLSL 1.3 | | ||
+ | | OpenGL 3.1 | GLSL 1.4 | | ||
+ | | OpenGL 3.2 | GLSL 1.5 | | ||
+ | | OpenGL ES 3.0 | GLSL 3.0 (es) | | ||
+ | | OpenGL ES 3.1 | GLSL 3.1 (es) | | ||
+ | | OpenGL 3.3 | GLSL 3.3 | | ||
+ | | OpenGL 4.0 | GLSL 4.0 | | ||
+ | | OpenGL 4.1 | GLSL 4.1 | | ||
+ | | OpenGL 4.2 | GLSL 4.2 | | ||
+ | | OpenGL 4.3 | GLSL 4.3 | | ||
+ | | OpenGL 4.4 | GLSL 4.4 | | ||
+ | | OpenGL 4.5 | GLSL 4.5 | | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== OpenGL ES 3.1 AEP (Android Extension Pack) ===== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | OpenGL ES 3.1 に OpenGL 4.x 相当の Extension を追加したものです。 | ||
+ | Geometry Shader (gs), Tessellation Control Shader (tcs, hs), Tessellation | ||
+ | ShaderModel は 5.0 (Direct3D11) 世代となり、Desktop GPU との機能面での差はほぼ無くなっています。 | ||
+ | |||
+ | Android 5.0 (Lollipop) 及び NVIDIA Tegra K1 が対応しています。 | ||
opengl/opengllist.1397647671.txt.gz · 最終更新: 2014/04/16 20:27 by oga