Radial distance from the camera to the light center.
The light's range/radius.
Light center's screen-space NDC X (only meaningful when clipW > 0).
Light center's screen-space NDC Y (only meaningful when clipW > 0).
The clip-space W component from projecting the light center through vp.
Projection matrix diagonal term [0][0].
Projection matrix diagonal term [1][1].
Canvas width in pixels.
Canvas height in pixels.
Screen-space tile size in pixels, [width, height].
Grid dimensions from computeClusterCounts().
Camera near-plane distance.
Camera far-plane distance.
Computes which cluster cells a single light's bounding sphere can possibly reach, by projecting the sphere's screen-space footprint (X/Y) and its radial-distance range (Z) -- the same approach
cluster_cull.wgsl'slightCoverage()uses on WebGPU, kept here as a pure, backend-neutral function so the WebGL2 CPU culling pass can reuse and unit-test it directly. Falls back to covering the whole X/Y grid when the light center is behind the camera or the camera sits inside the sphere (a projected NDC center would be meaningless there) -- over-inclusion is safe, dropping a light that's actually visible is not.