Eighteen candidates, scored, and one chosen.
Weights encode this project's priorities: we are building a runtime first, so reusable primitives and GPU necessity outrank raw market size.
The scoring, in full.
Weights: GPU necessity ×3 · reusable primitives ×3 · usefulness ×2.5 · differentiation ×2.5 · feasibility ×2 · demonstrable delta ×2 · adoption ×1.5 · fallback risk ×1.
| Candidate | GPU need | Reuse | Useful | Diff | Weighted | Status |
|---|---|---|---|---|---|---|
| GPUTimeline | 9 | 9 | 9 | 9 | 147.0 | live demo |
| GPUFlameGraph | 8 | 8 | 8 | 8 | 139.0 | same primitive |
| GPUScatter | 9 | 8 | 8 | 5 | 136.0 | live demo |
| GPUHeatmap | 8 | 7 | 8 | 6 | 131.0 | live demo |
| GPUDataGrid | 6 | 8 | 10 | 9 | 129.5 | live demo |
| GPUImageDiff | 9 | 5 | 7 | 6 | 120.5 | live demo |
| GPULogViewer | 6 | 7 | 9 | 8 | 119.5 | live demo |
| GPUCandlestick | 8 | 6 | 8 | 3 | 119.0 | live demo |
| GPUGraph | 9 | 6 | 7 | 4 | 118.0 | live demo |
| GPUDensityMap | 9 | 6 | 8 | 3 | 114.5 | live demo |
| GPUHistogram | 7 | 6 | 7 | 4 | 112.5 | live demo |
| GPUDepGraph | 7 | 5 | 7 | 6 | 110.0 | live demo |
| GPUNetworkTopology | 7 | 5 | 6 | 5 | 102.0 | live demo |
| GPUAnnotationCanvas | 6 | 5 | 7 | 5 | 99.0 | live demo |
| GPUSpreadsheet | 5 | 5 | 8 | 9 | 97.5 | live demo |
| GPUNodeEditor | 4 | 6 | 8 | 5 | 97.0 | live demo |
| GPUWhiteboard | 5 | 6 | 7 | 4 | 95.0 | in progress |
| GPUPdfViewer | 5 | 4 | 8 | 7 | 92.5 | live demo |
What GPUTimeline forces the runtime to have.
| Runtime subsystem | Forced by |
|---|---|
| Instanced quad renderer with per-instance storage buffer | Spans |
| Viewport uniform — pan/zoom without a data re-walk | Time axis + track scroll |
| Compute pass, storage buffers, workgroup tuning | LOD density binning |
| Indirect dispatch and draw | Variable visible counts, no CPU readback |
| Reduction | Auto-range, per-track min/max, histogram |
| Selection mask buffer | Brush and multi-select over 100k+ spans |
| Async picking + CPU spatial index | Hover and click |
| Multi-pass frame | Zoomed-out LOD compositing |
| Semantic DOM overlay | Labels and accessibility — the same layer |
| Fallback renderer | Canvas2D quads + labels, a small honest surface |
@gpu-components/core. It needed exactly one — a second axis on the viewport — which is close enough to count and specific enough to be worth knowing. The abstraction held.What we are not building, and why that is a feature.
Charts
WebGPU charting already shipped, including a shadcn-installable registry. That slot is taken and fighting for it is a distraction. The categories a chart abstraction cannot reach — dense interactive timelines, grids, trace surfaces — are the ones that are open.
Decorative anything
Particle backgrounds, shader wallpapers, animated blobs, generic 3D scene viewers. They fail the gate: no data-scale problem, and no primitive that another application component needs. vgpu already ships a 3D scene module and duplicating it is an explicit non-goal.