[Epic] Emissive surfaces as light sources (RT emissive lighting) #91
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#91
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?
Goal: emissive surfaces actually light the world - neon signs, glowing prims, lamp shades, screens, fullbright+glow builds cast light (and soft shadows) onto nearby surfaces, instead of glow being only a screen-space bloom.
Today SL "glow" is a post-process halo; emissive/fullbright surfaces light nothing. With RT we can make them real light sources - a big step for SL's many lit-by-texture builds.
Two tiers
Tier 1 - emissive in GI (falls out of #87, make sure it's in scope there): probe rays that hit emissive surfaces add the surface's emitted radiance (PBR emissive factor x texture, legacy fullbright/glow mapped to an emissive estimate) to probe irradiance. Soft, low-frequency ambient contribution; cheap; no extra ray budget.
Tier 2 - emissive area lights (this ticket's core):
Design notes
Children
Size: L. Depends on: RT foundation (done), #84 temporal pipeline, #85 denoiser; tier 1 rides on #87.
Direction decided 2026-10-10: ReSTIR DI powers both this and #439
We'll build ReSTIR DI (reservoir-based spatiotemporal importance resampling; Bitterli et al. 2020, as in RTXDI / UE MegaLights) as the shared many-light direct-lighting system. Point lights (#439), projectors and emissive triangles (this ticket) are all candidates in one light pool.
Pipeline (opaque, G-buffer pixels):
Run at half res with upsample.
What it replaces:
localLights()loop for opaque surfaces;What stays:
Cost estimates:
SL content rules:
Tier 1 (emissive in GI) still waits on #87.