Skip to content
gpu-components
Components

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.

Matrix

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.

CandidateGPU needReuseUsefulDiffWeightedStatus
GPUTimeline9999147.0live demo
GPUFlameGraph8888139.0same primitive
GPUScatter9885136.0live demo
GPUHeatmap8786131.0live demo
GPUDataGrid68109129.5live demo
GPUImageDiff9576120.5live demo
GPULogViewer6798119.5live demo
GPUCandlestick8683119.0live demo
GPUGraph9674118.0live demo
GPUDensityMap9683114.5live demo
GPUHistogram7674112.5live demo
GPUDepGraph7576110.0live demo
GPUNetworkTopology7565102.0live demo
GPUAnnotationCanvas657599.0live demo
GPUSpreadsheet558997.5live demo
GPUNodeEditor468597.0live demo
GPUWhiteboard567495.0in progress
GPUPdfViewer548792.5live demo
Note the shape of the GPUDataGrid row. It scores highest on usefulness and adoption and loses on feasibility and demonstrable performance delta. The weighting did not produce that shape; the candidate did.
First component

What GPUTimeline forces the runtime to have.

Runtime subsystemForced by
Instanced quad renderer with per-instance storage bufferSpans
Viewport uniform — pan/zoom without a data re-walkTime axis + track scroll
Compute pass, storage buffers, workgroup tuningLOD density binning
Indirect dispatch and drawVariable visible counts, no CPU readback
ReductionAuto-range, per-track min/max, histogram
Selection mask bufferBrush and multi-select over 100k+ spans
Async picking + CPU spatial indexHover and click
Multi-pass frameZoomed-out LOD compositing
Semantic DOM overlayLabels and accessibility — the same layer
Fallback rendererCanvas2D quads + labels, a small honest surface
The architecture test was GPUHeatmap, not GPUDataGrid. The falsifiable claim was that the heatmap would ship requiring zero changes to @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.
Rejected

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.