WebGL Capabilities Analyzed

Apr. 16, 2011
comments

I was interested in how many people have support for WebGL and what features they do support. My Demos reported issues to me as well as hardware capabilities. This gives me a good way to analyze what I'm doing right or wrong.

Of course the data is not easy to generalize, because visitors on my blog posts about webgl are most likely biased, however the numbers are interesting at least to me.

Also note I did not include graphics card vendor information. The vendor string of WebGL doesn't seem to be properly implemented by either Firefox or Chrome. More than 80% of the time it is queried no vendor other than "Mozilla" or "Google" is given. Mozilla, Google, this is not helpful.

Michael Goodfellow also has a blog post about hardware woes with OpenGL, which you might like.

Update: Reader "thought" suggests in the comments that foat texture support for Firefox is being worked on.

Contents

Overall Success

The data is taken from my two published demos since monday (the last 5 days), it covers 4272 users. I am concentrating on what reasons it has that people cannot run my code.

  • No WebGL: self evident
  • No floating point texture: This is an advanced feature I use that gives me textures in floating point format.
  • No vertex shader texture lookup: Since I have to dynamically position the grass, I do texture lookups to shift the geometry.

The following chart lists the overall result.

Disclaimer: Who comes to my site

How relevant is the above graphic for you? Here's the overall distribution of OSes and Browsers (regardless of success).

Success by Browser and OS

I'm interested to see how the success rates stack up per OS and per Browser. I'm leaving out mobile browsers and operating systems, since they don't have any support for WebGL.

This is at least partially an interesting result. A surprisingly large number of OSX users can run my demos. The vertex shader texture lookup problems and other issues seem mostly confined to Windows. On OSX and Linux the Floating Point textures are an issue, but not a very big one. On Windows however they are as big an issue as having no WebGL at all.

Confined to Browsers, in Chrome floating point textures are not a large issue. But for Firefox they're a gigantic issue.

Performance

For my waving grass demo, I also captured the FPS people got. This should give me an insight how much I have to correct to reach more people performance wise. The following chart is a histogram of how many people got how many FPS.

It is clear a large spike of users got FPS counts around 5. This is a difficult result, as it means in order to reach more people performance wise, the code would have to be 10x faster than it is now on my machine.

What to drop?

The main issue in runability seem to be floating point textures. Can I retain vertex shader texture lookups but drop floating point textures? The data below differs a bit from the overall data, since it is based on the reported MAX_VERTEX_TEXTURE_IMAGE_UNITS.

The answer is no. Both would have to be dropped. It is much more often that vertex shader texture lookups and floating point textures come together, or that only floating point textures are available.

Various Capabilities

The following charts list some queried maximum values for interesting properties, they might give an insight what other limits are present.

Loose ends

I still need to analyze the unknown errors better, and try to correlate them to causes to see what I can do about them.

Conclusion

The analysis of this statistical data has helped me see what areas I can improve. It also shows me how I should approach it and how much I will gain by doing it. I hope this information will be as useful to you as it is to me.