Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 1017285 of WEBGL_compressed_texture_es3

  • Revision slug: Web/API/WEBGL_compressed_texture_es3
  • Revision title: WEBGL_compressed_texture_es3
  • Revision id: 1017285
  • Created:
  • Creator: fscholz
  • Is current revision? No
  • Comment

Revision Content

{{APIRef("WebGL")}}

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

{{CompatibilityTable}}
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()")}}

Revision Source

<div>{{APIRef("WebGL")}}</div>

<p>The <code><strong>WEBGL_compressed_texture_es3</strong></code> extension is part of the <a href="/en-US/docs/Web/API/WebGL_API">WebGL API</a> and exposes 10 <a href="https://en.wikipedia.org/wiki/Ericsson_Texture_Compression">ETC/EAC compressed texture formats</a>.</p>

<p>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.</p>

<p>WebGL extensions are available using the {{domxref("WebGLRenderingContext.getExtension()")}} method. For more information, see also <a href="/en-US/docs/Web/API/WebGL_API/Using_Extensions">Using Extensions</a> in the <a href="/en-US/docs/Web/API/WebGL_API/Tutorial">WebGL tutorial</a>.</p>

<h2 id="Constants">Constants</h2>

<p>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()")}}.</p>

<dl>
 <dt><code>ext.COMPRESSED_R11_EAC</code></dt>
 <dd>One-channel (red) unsigned format compression.</dd>
 <dt><code>ext.COMPRESSED_SIGNED_R11_EAC</code></dt>
 <dd>One-channel (red) signed format compression.</dd>
 <dt><code>ext.COMPRESSED_RG11_EAC</code></dt>
 <dd>Two-channel (red and green) unsigned format compression.</dd>
 <dt><code>ext.COMPRESSED_SIGNED_RG11_EAC</code></dt>
 <dd>Two-channel (red and green) signed format compression.</dd>
 <dt><code>ext.COMPRESSED_RGB8_ETC2</code></dt>
 <dd>Compresses RGB8 data with no alpha channel.</dd>
 <dt><code>ext.COMPRESSED_RGBA8_ETC2_EAC</code></dt>
 <dd>Compresses RGBA8 data. The RGB part is encoded the same as <code>RGB_ETC2</code>, but the alpha part is encoded separately.</dd>
 <dt><code>ext.COMPRESSED_SRGB8_ETC2</code></dt>
 <dd>Compresses sRGB8 data with no alpha channel.</dd>
 <dt><code>ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC</code></dt>
 <dd>Compresses sRGBA8 data. The sRGB part is encoded the same as <code>SRGB_ETC2</code>, but the alpha part is encoded separately.</dd>
 <dt><code>ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2</code></dt>
 <dd>Similar to <code>RGB8_ETC</code>, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent.</dd>
 <dt><code>ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2</code></dt>
 <dd>Similar to <code>SRGB8_ETC</code>, but with ability to punch through the alpha channel, which means to make it completely opaque or transparent.</dd>
</dl>

<h2 id="Examples">Examples</h2>

<pre class="brush:js">
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); 
</pre>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('WEBGL_compressed_texture_es3', "", "WEBGL_compressed_texture_es3")}}</td>
   <td>{{Spec2('WEBGL_compressed_texture_es3')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop("46.0")}} [1]</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] Toggling the <code>webgl.enable-draft-extensions</code> preference in about:config is required.</p>

<h2 id="See_also">See also</h2>

<ul>
 <li><a href="https://en.wikipedia.org/wiki/Ericsson_Texture_Compression">Ericsson Texture Compression – Wikipedia</a></li>
 <li>{{domxref("WEBGL_compressed_texture_etc1")}} (ETC1)</li>
 <li>{{domxref("WebGLRenderingContext.getExtension()")}}</li>
 <li>{{domxref("WebGLRenderingContext.compressedTexImage2D()")}}</li>
 <li>{{domxref("WebGLRenderingContext.compressedTexSubImage2D()")}}</li>
 <li>{{domxref("WebGLRenderingContext.getParameter()")}}</li>
</ul>
Revert to this revision