Rebel Fork Framework
Urho3D::ShadowSplitProcessor Class Reference

#include <Urho3D/RenderPipeline/ShadowSplitProcessor.h>

Public Member Functions

 ShadowSplitProcessor (LightProcessor *owner, unsigned splitIndex)
 
void FinalizeShadow (const ShadowMapRegion &shadowMap, unsigned pcfKernelSize)
 
void FinalizeShadowBatches ()
 
auto & GetMutableUnsortedShadowBatches ()
 
auto & GetMutableShadowBatches ()
 
const auto & GetShadowBatches () const
 
void InitializeDirectional (DrawableProcessor *drawableProcessor, const FloatRange &splitRange, const ea::vector< Drawable * > &litGeometries)
 
void InitializeSpot ()
 
void InitializePoint (CubeMapFace face)
 
void ProcessDirectionalShadowCasters (DrawableProcessor *drawableProcessor, ea::vector< Drawable * > &shadowCastersBuffer)
 
void ProcessSpotShadowCasters (DrawableProcessor *drawableProcessor, const ea::vector< Drawable * > &shadowCasterCandidates)
 
void ProcessPointShadowCasters (DrawableProcessor *drawableProcessor, const ea::vector< Drawable * > &shadowCasterCandidates)
 
LightProcessorGetLightProcessor () const
 
LightGetLight () const
 
unsigned GetSplitIndex () const
 
const auto & GetShadowCasters () const
 
bool HasShadowCasters () const
 
Matrix4 GetWorldToShadowSpaceMatrix (float subPixelOffset) const
 
const ShadowMapRegionGetShadowMap () const
 
float GetShadowMapTexelSizeInWorldSpace () const
 
unsigned GetShadowMapPadding () const
 
const FloatRangeGetCascadeZRange () const
 
CameraGetShadowCamera () const
 

Private Member Functions

void InitializeBaseDirectionalCamera (Camera *cullCamera)
 
BoundingBox GetLitGeometriesBoundingBox (DrawableProcessor *drawableProcessor, const ea::vector< Drawable * > &litGeometries) const
 
BoundingBox GetSplitShadowBoundingBoxInLightSpace (DrawableProcessor *drawableProcessor, const ea::vector< Drawable * > &litGeometries) const
 
void AdjustDirectionalLightCamera (const BoundingBox &lightSpaceBoundingBox, float shadowMapSize)
 

Private Attributes

LightProcessorlightProcessor_ {}
 
Lightlight_ {}
 
unsigned splitIndex_ {}
 
RenderBackend renderBackend_ {}
 
SharedPtr< Node > shadowCameraNode_
 
SharedPtr< CamerashadowCamera_
 
FloatRange cascadeZRange_ {}
 
FloatRange focusedCascadeZRange_ {}
 
ea::vector< Drawable * > shadowCasters_
 
ShadowMapRegion shadowMap_
 
float shadowMapWorldSpaceTexelSize_ {}
 
unsigned shadowMapPadding_ {}
 
ea::vector< PipelineBatchunsortedShadowBatches_
 
ea::vector< PipelineBatchByStatesortedShadowBatches_
 
PipelineBatchGroup< PipelineBatchByStateshadowBatches_
 

Detailed Description

Manages single shadow split parameters and shadow casters. Spot lights always have one split. Directions lights have one split per cascade. Point lights always have six splits.

Member Function Documentation

◆ GetLightProcessor()

LightProcessor* Urho3D::ShadowSplitProcessor::GetLightProcessor ( ) const
inline

Return immutable

◆ GetShadowCasters()

const auto& Urho3D::ShadowSplitProcessor::GetShadowCasters ( ) const
inline

Return values are valid after shadow casters are processed

◆ GetWorldToShadowSpaceMatrix()

Matrix4 Urho3D::ShadowSplitProcessor::GetWorldToShadowSpaceMatrix ( float  subPixelOffset) const

Return values are valid after shadow map is finalized

◆ InitializeDirectional()

void Urho3D::ShadowSplitProcessor::InitializeDirectional ( DrawableProcessor drawableProcessor,
const FloatRange splitRange,
const ea::vector< Drawable * > &  litGeometries 
)

Initialize split parameters

◆ ProcessDirectionalShadowCasters()

void Urho3D::ShadowSplitProcessor::ProcessDirectionalShadowCasters ( DrawableProcessor drawableProcessor,
ea::vector< Drawable * > &  shadowCastersBuffer 
)

Process shadow casters

Member Data Documentation

◆ cascadeZRange_

FloatRange Urho3D::ShadowSplitProcessor::cascadeZRange_ {}
private

Frame-specific objects

◆ lightProcessor_

LightProcessor* Urho3D::ShadowSplitProcessor::lightProcessor_ {}
private

Immutable

◆ shadowCameraNode_

SharedPtr<Node> Urho3D::ShadowSplitProcessor::shadowCameraNode_
private

Internal cached objects

◆ unsortedShadowBatches_

ea::vector<PipelineBatch> Urho3D::ShadowSplitProcessor::unsortedShadowBatches_
private

Shadow casters


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