tree: 5b3ea3ab6d8cda8540b0decb9d789583b11ff46d [path history] [tgz]
  1. encode_test/
  2. encoder/
  3. gltf/
  4. ktx2_encode_test/
  5. texture_test/
  6. transcoder/
  7. video_test/
  8. index.html
  9. README.md
webgl/README.md

WebGL Examples

Requires WebAssembly and WebGL support.

Texture

Live demo: texture/index.html

(Note the Live texture demo hasn't been updated to the latest release yet.)

Renders a single texture, using the transcoder (compiled to WASM with emscripten) to generate one of the following compressed texture formats:

  • ASTC
  • BC1 (no alpha)
  • BC3
  • ETC1 (no alpha)
  • PVRTC

On browsers that don‘t support any compressed texture format, there’s a low-quality fallback code path for opaque textures. Note that the fallback path only converts to 16-bit RGB images at the moment, so the quality isn't as good as it should be.

Screenshot showing a basis texture rendered as a 2D image in a webpage.

glTF 3D Model

Live demo: gltf/index.html

Renders a glTF 3D model with .basis texture files, transcoded into one of the following compressed texture formats:

  • ASTC
    • Tested in Chrome on Android, Pixel 3 XL.
  • DTX (BC1/BC3)
    • Tested in Chrome (Linux and macOS) and Firefox (macOS).
  • ETC1
    • Tested in Chrome on Android, Pixel 3 XL.
  • PVRTC
    • Tested in Chrome and Safari on iOS iPhone 6 Plus.

The glTF model in this demo uses a hypothetical GOOGLE_texture_basis extension. That extension is defined for the sake of example only - the glTF format will officially embed Basis files within a KTX2 wrapper, through a new extension that is currently in development.

Screenshot showing a basis texture rendered as the base color texture for a 3D model in a webpage.

Compressor (encode_test)

This demo shows how to use the compressor from JavaScript. To use it, select a .PNG file then hit the “Encode!” button. The compressor will dynamically generate a .basis file in memory which will then be immediately transcoded and displayed. Hit the “Download!” button to locally download the generated .basis file.

To view the compressor‘s textual debug output, open your browser’s developer debug console (under Developer Tools in Chrome) and enable the Debug checkbox before hitting the “Encode!” button. Multithreading is not currently supported when the compressor is compiled to WebAssembly, so compression will be slower than using the stand-alone command line tool.

Screenshot showing the encode_test demo

Testing locally

See how to run things locally, or (with Node.js installed), run:

npx serve

The console will display a localhost URL for local testing, and (on supported WiFi networks and devices) may also display an IP address accessible by other devices on the same network. Note that mobile devices must support WebAssembly to run this demo. Learn more about remote debugging your android devices.

Alternately, use Web Server for Chrome, browse to your local “webgl” directory, and then select 127.0.0.1:8887 under "Web Server URL(s).