This extension exposes the compressed texture formats defined as core in the OpenGL ES 3.0 spec to WebGL. These include the ETC2 and EAC formats, where ETC2 is a superset of ETC1. ETC1 textures can be loaded using the ETC2 token value. All of these formats are in the ETC family.
Browsers should not advertise this extension when the WebGL implementation, or graphics driver, supports these formats by decompressing them.
COMPRESSED_R11_EAC
,
COMPRESSED_SIGNED_R11_EAC
,
COMPRESSED_RG11_EAC
,
COMPRESSED_SIGNED_RG11_EAC
,
COMPRESSED_RGB8_ETC2
,
COMPRESSED_SRGB8_ETC2
,
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_RGBA8_ETC2_EAC
,
and COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
may be passed to the
compressedTexImage2D
and compressedTexSubImage2D
entry points. In
WebGL 2.0, they may also be passed to the compressedTexImage3D
and
compressedTexSubImage3D
entry points with the TEXTURE_2D_ARRAY
target.
getParameter
with the argument COMPRESSED_TEXTURE_FORMATS
will include the formats from this specification.
validatedSize
(defined for each specific format
below) is validated in the following ways:
compressedTexImage*D
or
compressedTexSubImage*D
taking ArrayBufferView pixels
is
called, then the byteLength
of the view must be equal to
validatedSize
, or an INVALID_VALUE error is generated.
compressedTexImage*D
or
compressedTexSubImage*D
taking GLintptr offset
is called,
and offset + validatedSize
is greater than the size of the bound
PIXEL_UNPACK_BUFFER
, an INVALID_OPERATION
error is
generated.
validatedSize
is computed in the following way:
floor((width + 3) / 4) * floor((height + 3) / 4) * 8
validatedSize
is computed in the following way:
floor((width + 3) / 4) * floor((height + 3) / 4) * 16
internalformat
parameter:
COMPRESSED_R11_EAC
,
COMPRESSED_SIGNED_R11_EAC
,
COMPRESSED_RG11_EAC
,
COMPRESSED_SIGNED_RG11_EAC
,
COMPRESSED_RGB8_ETC2
,
COMPRESSED_SRGB8_ETC2
,
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_RGBA8_ETC2_EAC
or
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
internalformat
parameter:
COMPRESSED_R11_EAC
,
COMPRESSED_SIGNED_R11_EAC
,
COMPRESSED_RG11_EAC
,
COMPRESSED_SIGNED_RG11_EAC
,
COMPRESSED_RGB8_ETC2
,
COMPRESSED_SRGB8_ETC2
,
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
,
COMPRESSED_RGBA8_ETC2_EAC
or
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
INVALID_VALUE
is generated by compressedTexImage2D
,
compressedTexSubImage2D
, compressedTexImage3D
, and
compressedTexSubImage3D
if the variant taking ArrayBufferView pixels
is called and the size restrictions above are not met.
INVALID_OPERATION
is generated by compressedTexImage2D
,
compressedTexSubImage2D
, compressedTexImage3D
, and
compressedTexSubImage3D
if the variant taking GLintptr offset
is
called and the size restrictions above are not met.