- positions
- -
- colors
- -
- indices
- -
- active
- -
- min/max
- -
- coverage
- -
Position and color attributes stay per-instance; the width lane is the writable compute result.
One Sprite carries a field of camera-facing points. WebGPU computes each instance’s width in a storage buffer, while the direct WebGL2 path keeps the same visual contract in a labeled vertex-shader reference.
Creating the instanced position, color, and width buffers.
Position and color attributes stay per-instance; the width lane is the writable compute result.
WebGPU uses a PointsNodeMaterial on Sprite; WebGL2 draws the same field with a direct shader.
WebGPU supports wide points through instanced sprites; the fallback intentionally exposes CPU/shader ownership instead of claiming compute parity.
One compute invocation owns one instance slot.
The computed width lands in a storage-instanced attribute.
The sprite material reads the width without CPU expansion.
Sprite fragments become round points with alpha coverage.
The direct path keeps compatibility and ownership visible.
Change the point count or pulse policy, then measure the active submission path over thirty frames.
This is a deterministic adaptation of the official instanced-points example: a generated Hilbert-like curve replaces the external scene, while PointsNodeMaterial, Sprite.count, per-instance attributes, storage-buffer compute, and the direct fallback remain executable.
Sources: official instanced-points example · PointsNodeMaterial · StorageBufferNode · Sprite