日別アーカイブ: 2012年8月12日

OpenGL 4.3 と GL_ARB_ES3_compatibility

NVIDIA の beta driver 305.53 で OpenGL 4.3 を試してみました。
以下は GL_ARB_ES3_compatibility を走らせた結果です。
すでに ETC2/EAC が利用可能となっていることがわかります。

GL_VERSION: OpenGL ES 3.0 305.53
GL_RENDERER: GeForce GTX 560 Ti/PCIe/SSE2
GL_VENDOR: NVIDIA Corporation
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00

TextureFormat 23
tc[00]=83f0  GL_COMPRESSED_RGB_S3TC_DXT1_EXT
tc[01]=83f2  GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
tc[02]=83f3  GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
tc[03]=8b90  GL_PALETTE4_RGB8
tc[04]=8b91  GL_PALETTE4_RGBA8
tc[05]=8b92  GL_PALETTE4_R5_G6_B5
tc[06]=8b93  GL_PALETTE4_RGBA4
tc[07]=8b94  GL_PALETTE4_RGB5_A1
tc[08]=8b95  GL_PALETTE8_RGB8
tc[09]=8b96  GL_PALETTE8_RGBA8
tc[10]=8b97  GL_PALETTE8_R5_G6_B5
tc[11]=8b98  GL_PALETTE8_RGBA4
tc[12]=8b99  GL_PALETTE8_RGB5_A1
tc[13]=9274  GL_COMPRESSED_RGB8_ETC2
tc[14]=9275  GL_COMPRESSED_SRGB8_ETC2
tc[15]=9276  GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[16]=9277  GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[17]=9278  GL_COMPRESSED_RGBA8_ETC2_EAC
tc[18]=9279  GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
tc[19]=9270  GL_COMPRESSED_R11_EAC
tc[20]=9271  GL_COMPRESSED_SIGNED_R11_EAC
tc[21]=9272  GL_COMPRESSED_RG11_EAC
tc[22]=9273  GL_COMPRESSED_SIGNED_RG11_EAC

ちなみに 305.53 の OpenGL 4.3 でも ETC2/EAC は有効です。

GL_VERSION: 4.3.0
GL_RENDERER: GeForce GTX 560 Ti/PCIe/SSE2
GL_VENDOR: NVIDIA Corporation
GL_SHADING_LANGUAGE_VERSION: 4.30 NVIDIA via Cg compiler

pconst=2048 vconst=4096 vin=16 vout=124 ptex=32 vtex=32 combotex=192 maxrender=16384 maxtexsize=16384 cubetexsize=16384 viewdims=16384
blocks ver=14 frag=14   blocksize=65536 combined=84
geometry  const=2048 tex=32 block=14  out=1024 outT=1024  comb=231424
tess ctrl const=2048 tex=32 block=14  out=128 outT=4216 in=128 comb=231424
tess eval const=2048 tex=32 block=14  out=128 patch=120 in=128 comb=231424

TextureFormat 23
tc[00]=83f0  GL_COMPRESSED_RGB_S3TC_DXT1_EXT
tc[01]=83f2  GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
tc[02]=83f3  GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
tc[03]=8b90  GL_PALETTE4_RGB8
tc[04]=8b91  GL_PALETTE4_RGBA8
tc[05]=8b92  GL_PALETTE4_R5_G6_B5
tc[06]=8b93  GL_PALETTE4_RGBA4
tc[07]=8b94  GL_PALETTE4_RGB5_A1
tc[08]=8b95  GL_PALETTE8_RGB8
tc[09]=8b96  GL_PALETTE8_RGBA8
tc[10]=8b97  GL_PALETTE8_R5_G6_B5
tc[11]=8b98  GL_PALETTE8_RGBA4
tc[12]=8b99  GL_PALETTE8_RGB5_A1
tc[13]=9274  GL_COMPRESSED_RGB8_ETC2
tc[14]=9275  GL_COMPRESSED_SRGB8_ETC2
tc[15]=9276  GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[16]=9277  GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[17]=9278  GL_COMPRESSED_RGBA8_ETC2_EAC
tc[18]=9279  GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
tc[19]=9270  GL_COMPRESSED_R11_EAC
tc[20]=9271  GL_COMPRESSED_SIGNED_R11_EAC
tc[21]=9272  GL_COMPRESSED_RG11_EAC
tc[22]=9273  GL_COMPRESSED_SIGNED_RG11_EAC

ETC2 は ETC1 と上位互換なので、Desktop GPU でも ETC1 による描画が
可能となります。

ETC1 は 4×2 pixel あたり 1色しか使えませんでしたが、
ETC2 では DXT 同様 4×4 で 2色使えるよう拡張されています。
単純なグラデーション限定ですが独立した 3色の指定も可能です。

EAC との組み合わせでほぼ DXT1/DXT5/3DC の代用が可能なので、
今後は共通の圧縮テクスチャフォーマットとして ETC2 が使われて
いくのかも知れません。

より詳細な extension はこちらに追記しました。

Mobile GPU の OpenGL Extension
Desktop GPU の OpenGL Extension

GLSL の version は、OpenGL と OpenGL ES で見事に重ならないように
なっています。

OpenGL ES 2.0    GLSL ES 1.0     #version 100      (GLSL 1.1+)
OpenGL 2.0       GLSL 1.1        #version 110
OpenGL 2.1       GLSL 1.2        #version 120
OpenGL 3.0       GLSL 1.3        #version 130
OpenGL 3.1       GLSL 1.4        #version 140
OpenGL 3.2       GLSL 1.5        #version 150
OpenGL ES 3.0    GLSL ES 3.0     #version 300 es   (GLSL 3.3-)
OpenGL 3.3       GLSL 3.3        #version 330
OpenGL 4.0       GLSL 4.0        #version 400
OpenGL 4.1       GLSL 4.1        #version 410
OpenGL 4.2       GLSL 4.2        #version 420
OpenGL 4.3       GLSL 4.3        #version 430

OpenGL ES 3.0 Emulator も出ています。

Mali Developer Center: OpenGL ES 3.0 Emulator
QDevNet : Mobile Gaming & Graphics Optimization (Adreno™)

GL_VERSION: OpenGL ES 3.0
GL_RENDERER: OpenGL ES Emulator Revision r2p0-00rel0
GL_VENDOR: ARM Ltd.
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00

pconst=512 vconst=1024 vin=16 vout=31 ptex=32 vtex=32 combotex=192 maxrender=16384 maxtexsize=16384 cubetexsize=16384 viewdims=16384

TextureFormat 10
tc[00]=9270  GL_COMPRESSED_R11_EAC
tc[01]=9272  GL_COMPRESSED_RG11_EAC
tc[02]=9274  GL_COMPRESSED_RGB8_ETC2
tc[03]=9276  GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[04]=9278  GL_COMPRESSED_RGBA8_ETC2_EAC
tc[05]=9271  GL_COMPRESSED_SIGNED_R11_EAC
tc[06]=9273  GL_COMPRESSED_SIGNED_RG11_EAC
tc[07]=9279  GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
tc[08]=9277  GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
tc[09]=9275  GL_COMPRESSED_SRGB8_ETC2

Adreno は ETC2 がありませんでした。

GL_VERSION: OpenGL ES 3.0 Confetti Special Effects Build 01
GL_RENDERER: Qualcomm OpenGL ES 3.0 Emulator
GL_VENDOR: Qualcomm
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL 3.00

pconst=224 vconst=256 vin=15 vout=8 ptex=8 vtex=1 combotex=9 maxrender=2048 maxtexsize=1024 cubetexsize=1024 viewdims=2048

TextureFormat 16
tc[00]=8c92  GL_ATC_RGB_AMD
tc[01]=8c93  GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
tc[02]=87ee  GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD
tc[03]=87f9  GL_3DC_X_AMD
tc[04]=87fa  GL_3DC_XY_AMD
tc[05]=8d64  GL_ETC1_RGB8_OES
tc[06]=8b90  GL_PALETTE4_RGB8
tc[07]=8b91  GL_PALETTE4_RGBA8
tc[08]=8b92  GL_PALETTE4_R5_G6_B5
tc[09]=8b93  GL_PALETTE4_RGBA4
tc[10]=8b94  GL_PALETTE4_RGB5_A1
tc[11]=8b95  GL_PALETTE8_RGB8
tc[12]=8b96  GL_PALETTE8_RGBA8
tc[13]=8b97  GL_PALETTE8_R5_G6_B5
tc[14]=8b98  GL_PALETTE8_RGBA4
tc[15]=8b99  GL_PALETTE8_RGB5_A1