OES_texture_float extension
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures.
WebGL extensions are available using the WebGLRenderingContext.getExtension() method. For more information, see also Using Extensions in the WebGL tutorial.
Note:
This extension is only available to WebGL1 contexts. In WebGL2, floating-point texture formats and the gl.FLOAT texture data type are available in the core API, so this extension is not needed. However, making a floating-point texture color-renderable is a separate feature. In WebGL 2, use the EXT_color_buffer_float extension for floating-point color buffers, or EXT_color_buffer_half_float when 16-bit floating-point render targets are supported but 32-bit floating-point render targets are not.
Extended methods
This extension extends WebGLRenderingContext.texImage2D() and WebGLRenderingContext.texSubImage2D():
- The
typeparameter now acceptsgl.FLOAT. - The
pixelsparameter now accepts aFloat32Array.
Limitation: Linear filtering
Linear filtering on floating-point textures is not allowed with this extension. If you set the magnification or minification filter in the WebGLRenderingContext.texParameter() method to one of gl.LINEAR, gl.LINEAR_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, or gl.LINEAR_MIPMAP_LINEAR, and use floating-point textures, the texture will be marked as incomplete.
To use linear filtering on floating-point textures, enable the OES_texture_float_linear extension in addition to this extension.
Floating-point color buffers
In WebGL 1, this extension implicitly enables the WEBGL_color_buffer_float extension (if supported), which allows rendering to 32-bit floating-point color buffers.
In WebGL 2, use the EXT_color_buffer_float extension for floating-point color buffers instead.
Examples
const ext = gl.getExtension("OES_texture_float");
const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.FLOAT, image);
Specifications
| Specification |
|---|
| WebGL OES_texture_float Khronos Ratified Extension Specification> |