Description

When Nanite is disabled at the project level with r.Nanite.ProjectEnabled=0, clustered deferred shading stops working. This happens because the FDeferredShadingSceneRenderer::RenderLights method does not call AddClusteredDeferredShadingPass(), since this call is inside an if-block testing for ShouldUseClusteredDeferredShading, which returns false when Nanite is disabled. ShouldUseClusteredDeferredShading checks DoesPlatformSupportVirtualShadowMaps, which itself checks DoesPlatformSupportNanite which returns false if Nanite is disabled for the project.

DoesPlatformSupportNanite also uses bCheckForProjectSetting as and argument, which doesn't get used in the method's logic.

Steps to Reproduce
  • Start a new project
  • In DefaultEngine.ini, disable Disable Nanite with r.Nanite.ProjectEnabled = 0
  • Set a breakpoint inside if-block in FDeferredShadingSceneRenderer::RenderLights() that tests for if (ShouldUseClusteredDeferredShading(ViewFamily.GetShaderPlatform()) && AreLightsInLightGrid())
  • Launch the project and enable clustered deferred shading with r.UseClusteredDeferredShading_ToBeRemoved = 1
  • Despite enabling it, clustered deferred shading will not work as it depends on Nanite being enabled (the breakpoint will not be hit)

Have Comments or More Details?

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

0
Login to Vote

Unresolved
CreatedFeb 25, 2026
UpdatedFeb 26, 2026
View Jira Issue