tl;dr — We’re considering some improvements for reliability in CesiumJS label and billboard rendering, changing hardware requirements slightly, and dropping support for a small number of older devices. Devices with WebGL 2 support are unaffected. Most devices supporting only WebGL 1 are also OK, but see specific requirements (below) to be sure about your device.
While reviewing known bugs and feature requests for billboard and label rendering in CesiumJS, a significant obstacle has been that there’s not just one implementation to test. Multiple code paths still handle some of the earliest WebGL1-compatible devices, which supported fewer GPU capabilities. In particular, requiring support for these two WebGL 1 features…
- ANGLE_instanced_arrays (GPU instancing)
- MAX_VERTEX_TEXTURE_IMAGE_UNITS > 0 (support for textures in vertex shaders)
… would allow us to eliminate most of the major code branches in the billboard and label rendering, making it easier to identify and fix bugs, add features, or optimize performance with modern GPU capabilities. Available statistics (https://web3dsurvey.com) suggest that about 99.1% of today’s devices support WebGL 1, of which 3.5% have a “major performance caveat.” Of the devices that support WebGL 1, the two features above are supported by all but 0.02% of devices. How much that 0.2% subset overlaps with the “major performance caveat” subset is unknown. 98.14% of devices now support WebGL 2. Devices supporting WebGL 2 will always support these two features.
That being the case, we hope it would be minimally disruptive to deprecate support for billboard/label rendering when these two features are missing, with a warning in an upcoming version, and then to remove the legacy fallback code several releases later, possibly in v1.140.
We do want to consider the possibility that there might be affected devices that are important to support, which are somehow not reflected in these statistics — if this adversely affects you or your users in a significant way, please let us know! Support for various WebGL features can be verified at https://webglreport.com.
This discussion is also mirrored on GitHub, at: Billboards: Require WebGL 1 + ANGLE_instanced_arrays + vertex texture reads (or WebGL 2) · Issue #13053 · CesiumGS/cesium · GitHub .