Emissive lights (#91): cache static emitters' triangle records instead of rebuilding every frame #986
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#986
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the 2026-10-23 GI performance pass. Baseline: RTX 5090, 4K, DLSS Ultra Performance (1280x720 render), GI at full render resolution, GI 3 + cache, ReSTIR DI 3, emissive on: GPU 30.9 ms/frame (GPU-bound), async deferred lighting 20.1 ms,
c_gi_trace12.7 ms (883k rays/frame).c_rs_emissivecosts 2.61 ms in an emissive-heavy scene (324 emitting objects, ~165k candidate triangles visited per frame, ~150k skipped over the 16k cap). The build rereads every emitter's triangles from scratch each ReSTIR frame even though they're static.Plan
Cache triangle records for static emitters, keyed by instance plus transform / material generation. Rebuild only dynamic, animated-texture or changed emitters; keep the per-frame cell build. Keep the light takeover's rows and the fixed-subset rule working.
Estimate
2.6 -> ~0.5 ms. Medium effort.