Native game effect baseline

npm run benchmark:effects --workspace=packages/game-renderer renders one sprite at 512 × 288 through Dawn, waits for the GPU queue, and reports the median of ten frames after three warmups. The measured device was an Apple M4 Pro with Metal 4. This is a correctness and local cost baseline, not a frame rate promise for other devices or viewports.

Chain Median frame work Effect target memory
Disabled 0.31 ms 0 bytes
One bloom 0.77 ms 3,481,600 bytes
Eight blooms 3.96 ms 3,481,600 bytes

The default bloom radius is 8 output pixels, threshold 0.7, softness 0.1, and intensity 1. Radius 8 costs less than 1 ms for one effect in this fixture while showing a visible halo. The recipe uses 8-bit textures and reusable scratch targets. It makes no HDR claim. The benchmark includes the viewport overscan needed for light just outside the visible area. Target memory is the renderer’s reported effect allocation, including recipe scratch; texture assets and the instance buffer are counted separately in renderer statistics.

Point light baseline

The same command benchmarks a scene with 32 point lights on the Apple M4 Pro at 512 × 288. Lights use a reusable RGBA16F texture in WebGPU so overlapping lights retain irradiance above 1 until the sprite color is multiplied. The GPU row waits for submitted work and reports the median of ten frames after three warmups. The CPU row measures the light calculation over the same viewport and light layout; its scratch allocation is released after each frame.

Path Median frame work Light target or scratch memory
WebGPU 0.57 ms 1,179,648 bytes target
Canvas2D/headless CPU calculation 18.91 ms 1,769,472 bytes scratch

The WebGPU timing includes the light texture pass and sprite draw. The CPU timing excludes canvas readback, sprite drawing, and PNG encoding. These measurements describe this fixture and device, not a frame rate guarantee.