CesiumGS / CesiumGS/cesium

Rendering performance improvements with WEBGL_multi_draw / WEBGL_multi_draw_instanced

Open
#7,595 0 comments 3 reactions 0 assignees View on GitHub
category - graphics type - enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.