Complete list of advanced extensions in WebGL2

I have the opportunity to update our renderer, which we use for WebGL2. To make the rendering as compatible with feedback as possible, we continue to monitor downloaded extensions (as it was before the update) and emulate extensions, even if such an extension was advanced. The visualizer does a few relevant things with extensions. Outside, everything is pretty transparent.

To make it work smoothly, I need a complete list of advanced extensions. Found several blogs, but these lists are not complete. The other lists I found on GitHub do not look right because they have redundant extensions that did not actually advance or were dropped. I did not find much in the docs.

So, I did some empirical research and found:

// 12 extensions were promoted in WebGL2 without surprises [ 'ANGLE_instanced_arrays', 'EXT_blend_minmax', 'EXT_frag_depth', 'EXT_shader_texture_lod', 'EXT_sRGB', 'OES_element_index_uint', 'OES_standard_derivatives', 'OES_texture_float', 'OES_texture_half_float', 'OES_vertex_array_object', 'WEBGL_depth_texture', 'WEBGL_draw_buffers', ] 

In particular, I am concerned about the extensions OES_texture_float_linear and OES_texture_half_float_linear , which are not on my list. WebGL2 Implementation I locally have OES_texture_float_linear , but don't have OES_texture_half_float_linear , while WebGL has both of them. I know that in the context of WebGL1 OES_texture_float_linear acts a little differently, so my intuition says that there may be problems.

In addition, something strange happened with the disjoint_timer_query extension. This extension has been partially merged. WebGL2 contexts got some properties of this extension. I have disjoint_timer_query_webgl2 in Chrome that has all the properties except one getQueryObject , which has been renamed to getQueryParameter , but in Firefox, the disjoint_timer_query extension is still available in the context of WebGL2.

So is this list complete? And in particular, should OES_texture_half_float_linear be listed? And why did it disappear while the similar OES_texture_float_linear remained?

Appreciate your help.

-

So the final answer (probably) should be:

 // 14 extensions were promoted in WebGL2 [ 'ANGLE_instanced_arrays', 'EXT_blend_minmax', 'EXT_frag_depth', 'EXT_shader_texture_lod', 'OES_element_index_uint', 'OES_standard_derivatives', 'OES_texture_float', 'OES_texture_half_float', 'OES_vertex_array_object', 'WEBGL_depth_texture', 'WEBGL_draw_buffers', /* with caveats */ 'EXT_sRGB', 'OES_texture_half_float_linear', 'EXT_disjoint_timer_query', ] 

Please note that the last three extensions have been advanced with reservations. The EXT_sRGB extension EXT_sRGB lost the constant SRGB_ALPHA . The OES_texture_half_float_linear extension OES_texture_half_float_linear promoted, but the OES_texture_float_linear analogue was not. The EXT_disjoint_timer_query extension is EXT_disjoint_timer_query advanced. Some properties of this extension appeared in the context of WebGL2, while other properties were ported to the EXT_disjoint_timer_query_webgl2 extension. Also, currently (2017.05.16), the Firefox WebGL2 context still has the EXT_disjoint_timer_query extensions and the EXT_disjoint_timer_query_webgl2 extension.

0
source share
1 answer

WebGL2 requires support for half and floating point textures. It also requires filtering for half of the textures, but does not require support for filtered floating point textures.

This is why OES_texture_half_float_linear missing and OES_texture_float_linear is optional. Most mobile devices do not support floating point texture filtering.

In other words, you should add OES_texture_half_float_linear to the list of promoted extensions.

Another extension that has a strange history is EXT_color_buffer_float . WebGL1 sent without it. It was assumed that for a floating-point texture, all you needed was OES_texture_float first, and then create a floating-point texture, attach it to the framebuffer and check gl.checkFramebufferStatus . But a year or so after WebGL sent someone, someone indicated that it wasn’t enough, and therefore EXT_color_buffer_float was added, but it was not applied because it could break the pages.

In WebGL2, it is used. You cannot display a floating-point texture without including EXT_color_buffer_float . The same goes for EXT_color_buffer_half_float .

+1
source

Source: https://habr.com/ru/post/1489786/


All Articles