Summary
Tracking issue for the WebGL 2 features that became available once #1509 made the renderer WebGL 2 only. Kept as one ticket rather than five, because some of these are concrete cleanups and others enable capabilities we have not decided to build — splitting one out when it is actually picked up keeps the tracker honest about which is which.
Already split out
| Item |
Ticket |
| Mesh instancing |
#1508 |
| Static-mesh VBO caching |
#1507 |
| Mipmapped minification + anisotropic filtering |
#1511 |
Lighting uniform buffer (raise MAX_LIGHTS) |
#1552 |
| Shared frame-globals uniform buffer |
#1555 |
| NPOT texture sizing (Text / gradient) |
#1554 |
| Backend-neutral vertex formats + topologies |
#1551 |
Concrete, no design question — ready to pick up
texStorage2D immutable textures + sized internal formats. Allocate once with texStorage2D, update with texSubImage2D. Immutable storage lets drivers skip per-upload completeness validation, and sized formats (RGBA8 etc.) remove format-inference guesswork. Touches MaterialBatcher.createTexture2D and therefore every upload path — compressed textures, FBO attachments, and the video re-upload path added in 19.9.1 — so it is a texture-pipeline change rather than an addition.
MSAA framebuffers via blitFramebuffer. renderbufferStorageMultisample + resolve-blit gives antialiased post-effect passes, which WebGL 1 could not do at all. Currently antiAlias only affects the default framebuffer, so any scene using post-effects loses edge AA. Changes what post-effect FBOs produce, so it needs visual re-baselining.
Speculative — enables features not yet decided
Multiple Render Targets (MRT). drawBuffers writing colour + normal + depth in one pass. The enabler for deferred lighting and G-buffer effects; only worth doing if we want those, since the current forward path is fine for 2D and light 3D.
Texture arrays / 3D textures. TEXTURE_2D_ARRAY would let the GPU tilemap sample one array instead of juggling several atlases, and would relieve the texture-unit pressure that TextureCache works around today. Interacts with #1410 (renderer-agnostic texture cache) — worth designing together rather than separately.
Transform feedback. Capture vertex-shader output into a buffer; the groundwork for GPU skinning and GPU particle simulation. Note #1404 already covers GPU-instanced particles by a different route.
Notes
Unblocked by #1509.
Summary
Tracking issue for the WebGL 2 features that became available once #1509 made the renderer WebGL 2 only. Kept as one ticket rather than five, because some of these are concrete cleanups and others enable capabilities we have not decided to build — splitting one out when it is actually picked up keeps the tracker honest about which is which.
Already split out
MAX_LIGHTS)Concrete, no design question — ready to pick up
texStorage2Dimmutable textures + sized internal formats. Allocate once withtexStorage2D, update withtexSubImage2D. Immutable storage lets drivers skip per-upload completeness validation, and sized formats (RGBA8etc.) remove format-inference guesswork. TouchesMaterialBatcher.createTexture2Dand therefore every upload path — compressed textures, FBO attachments, and the video re-upload path added in 19.9.1 — so it is a texture-pipeline change rather than an addition.MSAA framebuffers via
blitFramebuffer.renderbufferStorageMultisample+ resolve-blit gives antialiased post-effect passes, which WebGL 1 could not do at all. CurrentlyantiAliasonly affects the default framebuffer, so any scene using post-effects loses edge AA. Changes what post-effect FBOs produce, so it needs visual re-baselining.Speculative — enables features not yet decided
Multiple Render Targets (MRT).
drawBufferswriting colour + normal + depth in one pass. The enabler for deferred lighting and G-buffer effects; only worth doing if we want those, since the current forward path is fine for 2D and light 3D.Texture arrays / 3D textures.
TEXTURE_2D_ARRAYwould let the GPU tilemap sample one array instead of juggling several atlases, and would relieve the texture-unit pressure thatTextureCacheworks around today. Interacts with #1410 (renderer-agnostic texture cache) — worth designing together rather than separately.Transform feedback. Capture vertex-shader output into a buffer; the groundwork for GPU skinning and GPU particle simulation. Note #1404 already covers GPU-instanced particles by a different route.
Notes
Unblocked by #1509.