Rendering performance improvements with WEBGL_multi_draw / WEBGL_multi_draw_instanced
- Dominant language
- JavaScript
- Stars
- 15.7k
- Forks
- 3.9k
- Avg merge
- 4d 6h
- Merged PRs (30d)
- 34
Description
Great summary of these new extensions: https://www.khronos.org/webgl/public-mailing-list/public_webgl/1902/msg00000.php
Basically using these extensions is cleaner and simpler than CesiumJS's current manual batching to reduce CPU overhead for WebGL draw calls, and can allow more flexibility for per-draw-call data - instead of duplicating as vertex attributes or storing in a batch table.
This could affect almost anything including:
* Billboard/label/point batching and instancing
* 3D Tiles batching and instancing
* Add batching for terrain
* Geometry batching
Not a priority at the moment but great research project to see where we can improve performance and/or make things simpler. Note that Cesium would require a fallback / slow path for a long while.
CC #797
Contributor guide
Research direction
No files or tests are named. Begin by locating CesiumJS's current manual batching in billboard, label, point, 3D Tiles, terrain, and geometry paths, then review the linked WebGL extension summary. Done means identifying worthwhile performance or simplicity improvements, measuring the affected paths, and preserving a fallback slow path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- computer-graphics, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100