WebGL
Khronos
 

WebGL WEBGL_compressed_texture_etc Extension Specification

Name

WEBGL_compressed_texture_etc

Contact

WebGL working group (public_webgl 'at' khronos.org)

Contributors

Jeff Gilbert, Mozilla

Members of the WebGL working group

Version

Last modified date: September 30, 2016
Revision: 7

Number

WebGL extension #29

Dependencies

Written against the WebGL API 1.0 specification.

Overview

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.

When this extension is enabled:

IDL

[Exposed=(Window,Worker), LegacyNoInterfaceObject]
interface WEBGL_compressed_texture_etc {
    /* Compressed Texture Formats */
    const GLenum COMPRESSED_R11_EAC                        = 0x9270;
    const GLenum COMPRESSED_SIGNED_R11_EAC                 = 0x9271;
    const GLenum COMPRESSED_RG11_EAC                       = 0x9272;
    const GLenum COMPRESSED_SIGNED_RG11_EAC                = 0x9273;
    const GLenum COMPRESSED_RGB8_ETC2                      = 0x9274;
    const GLenum COMPRESSED_SRGB8_ETC2                     = 0x9275;
    const GLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2  = 0x9276;
    const GLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
    const GLenum COMPRESSED_RGBA8_ETC2_EAC                 = 0x9278;
    const GLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC          = 0x9279;
};
  

New Tokens

compressedTexImage2D(GLenum internalformat)
Accepted by the 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
compressedTexSubImage2D(GLenum internalformat)
Accepted by the 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

Errors

The error 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.
The error 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.

Revision History

Revision 1, 2013/12/9

Revision 2, 2014/07/15

Revision 3, 2014/12/12

Revision 4, 2015/01/31

Revision 5, 2016/09/16

Revision 6, 2016/09/21

Revision 7, 2016/09/30