WebGL extension support across browsers
Asked Answered
V

3

5

This may be something as simple as a dumb setting that I have in Chrome or Firefox, but I just don't know where to go to figure out if it is that or if it's something else.

The basic thing I am trying to figure out is why extension support is so different between browsers.

For example, going to http://prideout.net/recipes/ExtensionViewer.html

For FireFox I get

OES_texture_float (google) (registry)
OES_standard_derivatives (google) (registry)
EXT_texture_filter_anisotropic (google) (registry)
MOZ_WEBGL_lose_context (google) (registry)
WEBGL_lose_context (google) (registry)
MOZ_WEBGL_compressed_texture_s3tc (google) (registry)
WEBGL_compressed_texture_s3tc (google) (registry)

But in Chrome I get:

OES_standard_derivatives (google) (registry)
WEBKIT_EXT_texture_filter_anisotropic (google) (registry)
OES_vertex_array_object (google) (registry)
OES_element_index_uint (google) (registry)
WEBGL_lose_context (google) (registry)

Note the missing OES_texture_float

I have noticed at some point that I do (or did) seem to have a AMD related floating point extension, but I don't know what page showed me I have that. I have a feeling that whatever showed it was an old version of Chrome.

I know my card supports floating point textures (at least to some degree), and whenever I go to pages requiring floating point textures in Firefox, the demo works beautifully.

If there's anything I'm trying to figure out, it's what I have to do to get the floating point textures to work in Chrome on my machine. Some of the coolest things you can do with WebGL require use of the floating point texture extension.

What bugs me is, supposedly, both Firefox and Chrome use ANGLE, so wouldn't both support the same extensions?

Verne answered 4/7, 2013 at 18:51 Comment(4)
When I go to that URL in chrome with my machine, I do have OES_texture_float support. I'm using chrome 27 on Windows with NVIDIA Quadro 1000M as my graphics card.Freitag
I have a feeling it's something specific to the card, but it was a near top-of-the line Radeon card a couple of years back (XFX Radeon 6970 2GB), which should support floating point textures, I would think. I don't know how they (Google, Firefox, ANGLE project, whatever) determine what extensions work or not. Is there a whitelist of supporting chipsets? Is there some kind of determination of supported extensions that doesn't quite work on my particular card for some buggy reason? I don't know.Verne
Sorry I don't know how chrome determines if an extension works or not. You might want to try upgrading your graphics card driver and your version of chrome to the latest available if you haven't tried it already. But that is just a guess obviously.Freitag
It seems the link no longer works. I used webglreport.com instead.Decigram
R
3

Read from the WebGL best practices page at MDN:

  • Rendering to a floating-point texture may not be supported, even if the OES_texture_float extension is supported. Typically, this fails on current mobile hardware. To check if this is supported, you have to call the WebGL checkFramebufferStatus() function.

That's a hardware issue, it should work at least on modern dedicated graphic cards but you would need some workarounds or fall-back for 'weaker' devices such as tablets and phones.

Romanic answered 11/7, 2013 at 7:23 Comment(0)
C
3

To get list of supported extension on your platform, please use

var extensions = gl.getSupportedExtensions();

It returns an array of strings. That array depends on many factors:

  • hardware and driver you have
  • browser ( Firefox/Chrome/Other )
  • a version of your browser
  • a version of WebGL context you requested ( currently 1 or 2 )

On mac book pro of the 2015 year with Intel Iris Graphics 6100, I have on today ( 16.05.2017 )

26 spread WebGL 1.0 extensions, from Chrome:

[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_disjoint_timer_query',
  'EXT_frag_depth',
  'EXT_shader_texture_lod',
  'EXT_sRGB',
  'EXT_texture_filter_anisotropic',
  'WEBKIT_EXT_texture_filter_anisotropic',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_float_linear',
  'OES_texture_half_float',
  'OES_texture_half_float_linear',
  'OES_vertex_array_object',
  'WEBGL_compressed_texture_s3tc',
  'WEBKIT_WEBGL_compressed_texture_s3tc',
  'WEBGL_compressed_texture_s3tc_srgb',
  'WEBKIT_WEBGL_compressed_texture_s3tc_srgb',
  'WEBGL_debug_renderer_info',
  'WEBGL_debug_shaders',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
  'WEBGL_lose_context',
  'WEBKIT_WEBGL_lose_context'
]

23 spread WebGL 1.0 extensions, from Firefox:

[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_color_buffer_half_float',
  'EXT_frag_depth',
  'EXT_sRGB',
  'EXT_shader_texture_lod',
  'EXT_texture_filter_anisotropic',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_float_linear',
  'OES_texture_half_float',
  'OES_texture_half_float_linear',
  'OES_vertex_array_object',
  'WEBGL_color_buffer_float',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_debug_renderer_info',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
  'WEBGL_lose_context',
  'MOZ_WEBGL_lose_context',
  'MOZ_WEBGL_compressed_texture_s3tc',
  'MOZ_WEBGL_depth_texture'
]

10 spread WebGL 2.0 extensions, from Chrome:

[
  'EXT_color_buffer_float',
  'EXT_disjoint_timer_query_webgl2',
  'EXT_texture_filter_anisotropic',
  'OES_texture_float_linear',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_compressed_texture_s3tc_srgb',
  'WEBGL_debug_renderer_info',
  'WEBGL_debug_shaders',
  'WEBGL_get_buffer_sub_data_async',
  'WEBGL_lose_context'
]

8 spread WebGL 2.0 extensions, from Firefox:

[
  'EXT_color_buffer_float',
  'EXT_texture_filter_anisotropic',
  'EXT_disjoint_timer_query',
  'OES_texture_float_linear',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_lose_context',
  'MOZ_WEBGL_lose_context',
  'MOZ_WEBGL_compressed_texture_s3tc'
]

For more useful information you may check MDN.

Here you may find quite convenient tool to check your browser online.

You may find worldwide statistics on support of webgl extensions here.

Please check to get information about promoted extensions in WebGL2.

Chronon answered 16/5, 2017 at 7:10 Comment(0)
V
2

I should have saved information on the version of Chrome I was using at the time. As of 2013-08-14 (and possibly some time earlier), Chrome on this machine

Browser: 5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Platform: Win32

is now supporting floating point textures. The http://prideout.net/recipes/ExtensionViewer.html gives the following:

WEBKIT_EXT_texture_filter_anisotropic (google) (registry)
OES_element_index_uint (google) (registry)
OES_standard_derivatives (google) (registry)
OES_texture_float (google) (registry)
OES_vertex_array_object (google) (registry)
WEBKIT_WEBGL_compressed_texture_s3tc (google) (registry)
WEBKIT_WEBGL_depth_texture (google) (registry)
WEBGL_lose_context (google) (registry)

That still doesn't explain why there was a difference between Firefox and Chrome, although, for all I know, it may have been just different versions of ANGLE libraries.

Verne answered 14/8, 2013 at 22:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.