Web/API/WEBGL compressed texture astc

From Get docs


The WEBGL_compressed_texture_astc extension is part of the WebGL API and exposes Adaptive Scalable Texture Compression (ASTC) compressed texture formats to WebGL.

For more information, see the article Using ASTC Texture Compression for Game Assets by nvidia.

WebGL extensions are available using the WebGLRenderingContext.getExtension() method. For more information, see also Using Extensions in the WebGL tutorial.

Availability: ASTC compression is typically available on Mali ARM GPUs, Intel GPUs, and Nividia Tegra chips.

This extension is available to both, WebGL1 and WebGL2 contexts.


Methods

This extension exposes one new methods.

ext.getSupportedProfiles()
Returns an array of strings containing the names of the ASTC profiles supported by the implementation.

Constants

The compressed texture formats are exposed by 28 constants and can be used in two functions: compressedTexImage2D() and compressedTexSubImage2D().

Constants Blocks Bits per pixel ArrayBuffer byteLength bytes if height and width are 512
ext.COMPRESSED_RGBA_ASTC_4x4_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 4x4 8.00 floor((width + 3) / 4) * floor((height + 3) / 4) * 16 262144
ext.COMPRESSED_RGBA_ASTC_5x4_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 5x4 6.40 floor((width + 4) / 5) * floor((height + 3) / 4) * 16 210944
ext.COMPRESSED_RGBA_ASTC_5x5_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 5x5 5.12 floor((width + 4) / 5) * floor((height + 4) / 5) * 16 169744
ext.COMPRESSED_RGBA_ASTC_6x5_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 6x5 4.27 floor((width + 5) / 6) * floor((height + 4) / 5) * 16 141728
ext.COMPRESSED_RGBA_ASTC_6x6_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 6x6 3.56 floor((width + 5) / 6) * floor((height + 5) / 6) * 16 118336
ext.COMPRESSED_RGBA_ASTC_8x5_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 8x5 3.20 floor((width + 7) / 8) * floor((height + 4) / 5) * 16 105472
ext.COMPRESSED_RGBA_ASTC_8x6_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 8x6 2.67 floor((width + 7) / 8) * floor((height + 5) / 6) * 16 88064
ext.COMPRESSED_RGBA_ASTC_8x8_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 8x8 2.00 floor((width + 7) / 8) * floor((height + 7) / 8) * 16 65536
ext.COMPRESSED_RGBA_ASTC_10x5_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 10x5 2.56 floor((width + 9) / 10) * floor((height + 4) / 5) * 16 85696
ext.COMPRESSED_RGBA_ASTC_10x6_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 10x6 2.13 floor((width + 9) / 10) * floor((height + 5) / 6) * 16 71552
ext.COMPRESSED_RGBA_ASTC_10x8_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 10x8 1.60 floor((width + 9) / 10) * floor((height + 7) / 8) * 16 53248
ext.COMPRESSED_RGBA_ASTC_10x10_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 10x10 1.28 floor((width + 9) / 10) * floor((height + 9) / 10) * 16 43264
ext.COMPRESSED_RGBA_ASTC_12x10_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 12x10 1.07 floor((width + 11) / 12) * floor((height + 9) / 10) * 16 35776
ext.COMPRESSED_RGBA_ASTC_12x12_KHR ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 12x12 0.89 floor((width + 11) / 12) * floor((height + 11) / 12) * 16 29584

Examples

var ext = gl.getExtension('WEBGL_compressed_texture_astc');

var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);

gl.compressedTexImage2D(gl.TEXTURE_2D, 0, ext.COMPRESSED_RGBA_ASTC_12x12_KHR, 512, 512, 0, textureData);

Specifications

Specification Status Comment
WEBGL_compressed_texture_astcThe definition of 'WEBGL_compressed_texture_astc' in that specification. Recommendation Initial definition.

Browser compatibility

The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
WEBGL_compressed_texture_astc Chrome

Full support 47

Edge

Full support 79

Firefox

Full support 53

IE

?

Opera

?

Safari

?

WebView Android

Full support 47

Chrome Android

Full support 47

Firefox Android

Full support 53

Opera Android

?

Safari iOS

?

Samsung Internet Android

Full support 5.0

getSupportedProfiles Chrome

Full support 47

Edge

Full support 79

Firefox

Full support 53

IE

?

Opera

?

Safari

?

WebView Android

Full support 47

Chrome Android

Full support 47

Firefox Android

Full support 53

Opera Android

?

Safari iOS

?

Samsung Internet Android

Full support 5.0

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown


See also