Description

The Light Function variant of the hit lighting miss shader is compiled as the Light Function material, so MATERIAL_IS_SUBSTRATE=1. This makes it read the ray hit surface from the payload incorrectly:

  • This shader permutation has SUBSTRATE_INLINE_SHADING=1 and SUBSTRATE_DEFERRED_SHADING=0, the header/BSDF unpack from the payload is compiled out.
  • SubstrateGetBSDFSharedBasis takes the inline path and returns the zero-initialized SharedLocalBases, so the hit normal is 0 and the light contribution is 0.
  • The LF material's SUBSTRATE_FASTPATH / SINGLEPATH / CLAMPED_CLOSURE_COUNT and the default SUBSTRATE_USES_FORCED_COMPLEXITY=1 also drive how the hit surface is unpacked (the payload writer RayTracingMaterialHitShaders.usf:16-19 uses SUBSTRATE_USES_FORCED_COMPLEXITY 0).

Here is a work around:

[Link Removed]

Steps to Reproduce
  1. Download the repro project from additional info URL
    • Project already sets r.Substrate=1, r.Substrate.ProjectGBufferFormat=1, Lumen HWRT with Hit Lighting, r.RayTracing.LightFunction=1.
  2. Move to the two rooms in the level and compare the light with and without a Light Function
    You can use following BugItGo commands
    1. GI: BugItGo 404.234184 1526.353047 230.520925 -8.400000 -183.399997 0.000000
    2. Reflection: BugItGo -323.400190 -1497.680129 164.879523 -4.600000 -185.199997 0.000000

Result: The lights with Light Functions do not contribute to indirect lighting (GI) or reflections

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-405322 in the post.

0
Login to Vote

Unresolved
CreatedOct 22, 2026
UpdatedOct 23, 2026
View Jira Issue