Lighting: flatten the light-loop load chain #815

Closed
opened 2026-10-17 18:10:01 +00:00 by sky_line · 1 comment
Owner

Each candidate light costs two serial memory round trips (pos_radius, then the full 160 B record; projectors add proj_mat, gobo, atlas). The loop's early exits stop the compiler hoisting the next light's load. Options: stage the tile's (or froxel cell's) surviving lights into shared memory once as compact point / projector records, or a dense 32 B pos/colour array with the next light preloaded. Lossless. Local lights are ~22% of lighting cycles on a ~370-light scene.

Measure: shader-clock LOCAL stage and lighting time.

Context: measured on a GTX 1080 (Pascal) at 4K with the test-control channel and the shader clock (RenderVKShaderClockLighting) / pipeline stats (RenderVKPipelineStats). The frame is GPU-bound but not bandwidth-bound (memory controller ~36% busy on the 1080, ~14% on a 5090): it is latency / occupancy bound, so trading a little memory traffic for fewer registers and fewer dependent loads should help every GPU generation.

Each candidate light costs two serial memory round trips (pos_radius, then the full 160 B record; projectors add proj_mat, gobo, atlas). The loop's early exits stop the compiler hoisting the next light's load. Options: stage the tile's (or froxel cell's) surviving lights into shared memory once as compact point / projector records, or a dense 32 B pos/colour array with the next light preloaded. Lossless. Local lights are ~22% of lighting cycles on a ~370-light scene. Measure: shader-clock LOCAL stage and lighting time. Context: measured on a GTX 1080 (Pascal) at 4K with the test-control channel and the shader clock (RenderVKShaderClockLighting) / pipeline stats (RenderVKPipelineStats). The frame is GPU-bound but not bandwidth-bound (memory controller ~36% busy on the 1080, ~14% on a 5090): it is latency / occupancy bound, so trading a little memory traffic for fewer registers and fewer dependent loads should help every GPU generation.
sky_line added this to the Slipstream project 2026-10-17 18:10:01 +00:00
Author
Owner

Fixed in Slipstream 1.3.0 (stable): https://git.slipstreamviewer.org/sky_line/Slipstream/releases/tag/v1.3.0

If you still see this on 1.3.0, reply here and we'll reopen it.

Fixed in **Slipstream 1.3.0** (stable): https://git.slipstreamviewer.org/sky_line/Slipstream/releases/tag/v1.3.0 If you still see this on 1.3.0, reply here and we'll reopen it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#815
No description provided.