The WEBGL_compressed_texture_es3
extension is part of the WebGL API and exposes 10 ETC/EAC compressed texture formats.
Compressed textures reduce the amount of memory needed to store a texture on the GPU, allowing for higher resolution textures or more of the same resolution textures.
WebGL extensions are available using the {{domxref("WebGLRenderingContext.getExtension()")}} method. For more information, see also Using Extensions in the WebGL tutorial.
Constants
The compressed texture formats are exposed by 10 constants and can be used in two functions: {{domxref("WebGLRenderingContext.compressedTexImage2D", "compressedTexImage2D()")}} and {{domxref("WebGLRenderingContext.compressedTexSubImage2D", "compressedTexSubImage2D()")}}.
ext.COMPRESSED_R11_EAC
- One-channel (red) unsigned format compression.
ext.COMPRESSED_SIGNED_R11_EAC
- One-channel (red) signed format compression.
ext.COMPRESSED_RG11_EAC
- Two-channel (red and green) unsigned format compression.
ext.COMPRESSED_SIGNED_RG11_EAC
- Two-channel (red and green) signed format compression.
ext.COMPRESSED_RGB8_ETC2
- Compresses RGB8 data with no alpha channel.
ext.COMPRESSED_RGBA8_ETC2_EAC
- Compresses RGBA8 data. The RGB part is encoded the same as
RGB_ETC2
, but the alpha part is encoded separately. ext.COMPRESSED_SRGB8_ETC2
- Compresses sRGB8 data with no alpha channel.
ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
- Compresses sRGBA8 data. The sRGB part is encoded the same as
SRGB_ETC2
, but the alpha part is encoded separately. ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
- Similar to
RGB8_ETC
, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent. ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
- Similar to
SRGB8_ETC
, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent.
Examples
var ext = gl.getExtension("WEBGL_compressed_texture_es3"); var texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.compressedTexImage2D(gl.TEXTURE_2D, 0, ext.COMPRESSED_RGBA8_ETC2_EAC, 512, 512, 0, textureData);
Specifications
Specification | Status | Comment |
---|---|---|
{{SpecName('WEBGL_compressed_texture_es3', "", "WEBGL_compressed_texture_es3")}} | {{Spec2('WEBGL_compressed_texture_es3')}} | Initial definition. |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatGeckoDesktop("46.0")}} [1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] Toggling the webgl.enable-draft-extensions
preference in about:config is required.
See also
- Ericsson Texture Compression – Wikipedia
- {{domxref("WEBGL_compressed_texture_etc1")}} (ETC1)
- {{domxref("WebGLRenderingContext.getExtension()")}}
- {{domxref("WebGLRenderingContext.compressedTexImage2D()")}}
- {{domxref("WebGLRenderingContext.compressedTexSubImage2D()")}}
- {{domxref("WebGLRenderingContext.getParameter()")}}