The Shadow Reflection Catcher layer only produces a usable matte from directional lights. Shadows cast by point, spot and rect lights either never appear in the matte or appear intermittently. Adding a directional light to the scene makes a shadow appear, but that shadow is the directional’s - the rect lights still contribute nothing.
Confirmed on our setup, in a level with no directional light present at all, so the shadow being produced is unambiguously the rect light’s. Both of these make it appear:
r.Shadow.Virtual.Cache.ForceInvalidateLocal 2 r.Shadow.Virtual.Cache.ForceInvalidateLocal 1
Both feed bForceInvalidate at ShadowSceneRenderer.cpp:403-411 and cause the local light’s virtual shadow map to be re-rendered per render rather than reused from the scene-level cache, which is the behaviour the layer needs. r.Shadow.Virtual.Cache 0 reaches the same path via bForceInvalidate = !CacheManager->IsCacheEnabled().
Directional lights get a distinct cache entry per view state and are re-rendered per capture, which is why adding one appears to fix the layer.
[Attachment Removed]