UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FShadowSceneRenderer Class Reference

#include <ShadowSceneRenderer.h>

+ Inheritance diagram for FShadowSceneRenderer:

Public Member Functions

 DECLARE_SCENE_EXTENSION_RENDERER (FShadowSceneRenderer, FShadowScene)
 
 FShadowSceneRenderer (FDeferredShadingSceneRenderer &InDeferredShadingSceneRenderer, FShadowScene &InShadowScene)
 
virtual void PreInitViews (FRDGBuilder &GraphBuilder) override
 
TSharedPtr< FVirtualShadowMapPerLightCacheEntryAddLocalLightShadow (const FWholeSceneProjectedShadowInitializer &Initializer, FProjectedShadowInfo *ProjectedShadowInfo, FLightSceneInfo *LightSceneInfo, float MaxScreenRadius)
 
void AddDirectionalLightShadow (FLightSceneInfo &LightSceneInfo, FViewInfo &View, float MaxNonFarCascadeDistance, TArray< FProjectedShadowInfo *, SceneRenderingAllocator > &OutShadowInfosThatNeedCulling)
 
void PostInitDynamicShadowsSetup ()
 
void DispatchVirtualShadowMapViewAndCullingSetup (FRDGBuilder &GraphBuilder, TConstArrayView< FProjectedShadowInfo * > VirtualShadowMapShadows)
 
void PostSetupDebugRender ()
 
bool HasVirtualShadowMap (FLightSceneInfo::FPersistentId LightId) const
 
bool HasVirtualClipMap (FLightSceneInfo::FPersistentId LightId) const
 
void BeginMarkVirtualShadowMapPages (FRDGBuilder &GraphBuilder, const FSingleLayerWaterPrePassResult *SingleLayerWaterPrePassResult, const FFrontLayerTranslucencyData &FrontLayerTranslucencyData, const Froxel::FRenderer &FroxelRenderer)
 
void RenderVirtualShadowMaps (FRDGBuilder &GraphBuilder, bool bNaniteEnabled)
 
void RenderVirtualShadowMapProjectionMaskBits (FRDGBuilder &GraphBuilder, FMinimalSceneTextures &SceneTextures)
 
void RenderVirtualShadowMapProjection (FRDGBuilder &GraphBuilder, const FMinimalSceneTextures &SceneTextures, FLightSceneInfo::FPersistentId LightId, const FViewInfo &View, int32 ViewIndex, const FIntRect ScissorRect, EVirtualShadowMapProjectionInputType InputType, bool bModulateRGB, FTiledVSMProjection *TiledVSMProjection, FRDGTextureRef OutputShadowMaskTexture)
 
TArray< int32, SceneRenderingAllocatorGatherClipmapIds (int32 ViewIndex) const
 
void ApplyVirtualShadowMapProjectionForLight (FRDGBuilder &GraphBuilder, const FMinimalSceneTextures &SceneTextures, const FLightSceneInfo *LightSceneInfo, const EVirtualShadowMapProjectionInputType InputType, FRDGTextureRef OutputScreenShadowMaskTexture)
 
bool UsePackedShadowMaskBits () const
 
UE::Tasks::FTask GetRendererSetupTask () const
 
bool AreAnyLightsUsingMegaLightsVSM () const
 
bool AreAnyLocalLightsPresent () const
 
bool HasNaniteVisibilityQuery () const
 
UE::Renderer::Private::IShadowInvalidatingInstancesGetInvalidatingInstancesInterface (const FSceneView *SceneView)
 
FVirtualShadowMapArrayGetVirtualShadowMapArray ()
 
const FVirtualShadowMapArrayGetVirtualShadowMapArray () const
 
- Public Member Functions inherited from ISceneExtensionRenderer
 ISceneExtensionRenderer (FSceneRendererBase &InSceneRenderer)
 
virtual ~ISceneExtensionRenderer ()
 
virtual void Begin (FSceneRendererBase *InRenderer)
 
virtual void End ()
 
virtual void UpdateViewData (FRDGBuilder &GraphBuilder, const FRendererViewDataManager &ViewDataManager)
 
virtual void UpdateSceneUniformBuffer (FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniforms)
 
virtual void PreRender (FRDGBuilder &GraphBuilder)
 
virtual void PostRender (FRDGBuilder &GraphBuilder)
 

Static Public Member Functions

static float ComputeNaniteShadowsLODScaleFactor ()
 

Public Attributes

FRDGTextureRef VirtualShadowMapMaskBits = nullptr
 
FRDGTextureRef VirtualShadowMapMaskBitsHairStrands = nullptr
 
FRDGBufferRef HairTransmittanceMaskBits = nullptr
 

Additional Inherited Members

- Protected Member Functions inherited from ISceneExtensionRenderer
FSceneRendererBaseGetSceneRenderer ()
 

Detailed Description

Transient scope for per-frame rendering resources for the shadow rendering.

Constructor & Destructor Documentation

◆ FShadowSceneRenderer()

FShadowSceneRenderer::FShadowSceneRenderer ( FDeferredShadingSceneRenderer InDeferredShadingSceneRenderer,
FShadowScene InShadowScene 
)

Member Function Documentation

◆ AddDirectionalLightShadow()

void FShadowSceneRenderer::AddDirectionalLightShadow ( FLightSceneInfo LightSceneInfo,
FViewInfo View,
float  MaxNonFarCascadeDistance,
TArray< FProjectedShadowInfo *, SceneRenderingAllocator > &  OutShadowInfosThatNeedCulling 
)

Add a directional light for processing this frame.

◆ AddLocalLightShadow()

TSharedPtr< FVirtualShadowMapPerLightCacheEntry > FShadowSceneRenderer::AddLocalLightShadow ( const FWholeSceneProjectedShadowInitializer Initializer,
FProjectedShadowInfo ProjectedShadowInfo,
FLightSceneInfo LightSceneInfo,
float  MaxScreenRadius 
)

Add a cube/spot light for processing this frame. TODO: Don't use legacy FProjectedShadowInfo or other params, instead info should flow from persistent setup & update. TODO: Return reference to FLocalLightShadowFrameSetup ?

◆ ApplyVirtualShadowMapProjectionForLight()

void FShadowSceneRenderer::ApplyVirtualShadowMapProjectionForLight ( FRDGBuilder GraphBuilder,
const FMinimalSceneTextures SceneTextures,
const FLightSceneInfo LightSceneInfo,
const EVirtualShadowMapProjectionInputType  InputType,
FRDGTextureRef  OutputScreenShadowMaskTexture 
)

Renders virtual shadow map projection for a given light into the shadow mask. If one pass projection is enabled, this may be a simple composite from the shadow mask bits.

◆ AreAnyLightsUsingMegaLightsVSM()

bool FShadowSceneRenderer::AreAnyLightsUsingMegaLightsVSM ( ) const
inline

◆ AreAnyLocalLightsPresent()

bool FShadowSceneRenderer::AreAnyLocalLightsPresent ( ) const
inline

◆ BeginMarkVirtualShadowMapPages()

void FShadowSceneRenderer::BeginMarkVirtualShadowMapPages ( FRDGBuilder GraphBuilder,
const FSingleLayerWaterPrePassResult SingleLayerWaterPrePassResult,
const FFrontLayerTranslucencyData FrontLayerTranslucencyData,
const Froxel::FRenderer FroxelRenderer 
)

◆ ComputeNaniteShadowsLODScaleFactor()

float FShadowSceneRenderer::ComputeNaniteShadowsLODScaleFactor ( )
static

Multiply PackedView.LODScale by return value when rendering Nanite shadows.

◆ DECLARE_SCENE_EXTENSION_RENDERER()

FShadowSceneRenderer::DECLARE_SCENE_EXTENSION_RENDERER ( FShadowSceneRenderer  ,
FShadowScene   
)

◆ DispatchVirtualShadowMapViewAndCullingSetup()

void FShadowSceneRenderer::DispatchVirtualShadowMapViewAndCullingSetup ( FRDGBuilder GraphBuilder,
TConstArrayView< FProjectedShadowInfo * >  VirtualShadowMapShadows 
)

Call to kick off culling tasks for VSMs & prepare views for rendering.

◆ GatherClipmapIds()

TArray< int32, SceneRenderingAllocator > FShadowSceneRenderer::GatherClipmapIds ( int32  ViewIndex) const

Get the clipmap IDs for the view (for all lights and features), which in case of stereo maps to the primary view internally.

◆ GetInvalidatingInstancesInterface()

UE::Renderer::Private::IShadowInvalidatingInstances * FShadowSceneRenderer::GetInvalidatingInstancesInterface ( const FSceneView SceneView)

◆ GetRendererSetupTask()

UE::Tasks::FTask FShadowSceneRenderer::GetRendererSetupTask ( ) const
inline

◆ GetVirtualShadowMapArray() [1/2]

FVirtualShadowMapArray & FShadowSceneRenderer::GetVirtualShadowMapArray ( )
inline

◆ GetVirtualShadowMapArray() [2/2]

const FVirtualShadowMapArray & FShadowSceneRenderer::GetVirtualShadowMapArray ( ) const
inline

◆ HasNaniteVisibilityQuery()

bool FShadowSceneRenderer::HasNaniteVisibilityQuery ( ) const
inline

◆ HasVirtualClipMap()

bool FShadowSceneRenderer::HasVirtualClipMap ( FLightSceneInfo::FPersistentId  LightId) const
inline

returns true if the given light has a clipmap VSM set up for any view

◆ HasVirtualShadowMap()

bool FShadowSceneRenderer::HasVirtualShadowMap ( FLightSceneInfo::FPersistentId  LightId) const
inline

returns true if the given light has any VSM set up (for any view in the case of view dependent)

◆ PostInitDynamicShadowsSetup()

void FShadowSceneRenderer::PostInitDynamicShadowsSetup ( )

Call after view-dependent setup has been processed (InitView etc) but before any rendering activity has been kicked off.

◆ PostSetupDebugRender()

void FShadowSceneRenderer::PostSetupDebugRender ( )

◆ PreInitViews()

void FShadowSceneRenderer::PreInitViews ( FRDGBuilder GraphBuilder)
overridevirtual

Called before BeginInitViews to allow creating tasks work that have dependencies in InitViews.

Reimplemented from ISceneExtensionRenderer.

◆ RenderVirtualShadowMapProjection()

void FShadowSceneRenderer::RenderVirtualShadowMapProjection ( FRDGBuilder GraphBuilder,
const FMinimalSceneTextures SceneTextures,
FLightSceneInfo::FPersistentId  LightId,
const FViewInfo View,
int32  ViewIndex,
const FIntRect  ScissorRect,
EVirtualShadowMapProjectionInputType  InputType,
bool  bModulateRGB,
FTiledVSMProjection TiledVSMProjection,
FRDGTextureRef  OutputShadowMaskTexture 
)

◆ RenderVirtualShadowMapProjectionMaskBits()

void FShadowSceneRenderer::RenderVirtualShadowMapProjectionMaskBits ( FRDGBuilder GraphBuilder,
FMinimalSceneTextures SceneTextures 
)

◆ RenderVirtualShadowMaps()

void FShadowSceneRenderer::RenderVirtualShadowMaps ( FRDGBuilder GraphBuilder,
bool  bNaniteEnabled 
)

◆ UsePackedShadowMaskBits()

bool FShadowSceneRenderer::UsePackedShadowMaskBits ( ) const
inline

Member Data Documentation

◆ HairTransmittanceMaskBits

FRDGBufferRef FShadowSceneRenderer::HairTransmittanceMaskBits = nullptr

◆ VirtualShadowMapMaskBits

FRDGTextureRef FShadowSceneRenderer::VirtualShadowMapMaskBits = nullptr

◆ VirtualShadowMapMaskBitsHairStrands

FRDGTextureRef FShadowSceneRenderer::VirtualShadowMapMaskBitsHairStrands = nullptr

The documentation for this class was generated from the following files: