Rebel Fork Framework
Urho3D::DrawableProcessor Class Reference

Utility used to update and process visible or shadow caster Drawables. More...

#include <Urho3D/RenderPipeline/DrawableProcessor.h>

Inheritance diagram for Urho3D::DrawableProcessor:
Urho3D::Object Urho3D::RefCounted

Classes

struct  UpdateFlag
 

Public Member Functions

 DrawableProcessor (RenderPipelineInterface *renderPipeline)
 
void SetPasses (ea::vector< SharedPtr< DrawableProcessorPass >> passes)
 
void SetSettings (const DrawableProcessorSettings &settings)
 
const FrameInfoGetFrameInfo () const
 
const DrawableProcessorSettingsGetSettings () const
 
void ProcessOccluders (const ea::vector< Drawable * > &occluders, float sizeThreshold)
 Process occluders. UpdateBatches for occluders may be called twice, but never reentrantly.
 
void ProcessVisibleDrawables (const ea::vector< Drawable * > &drawables, ea::span< OcclusionBuffer * > occlusionBuffers)
 
void PreprocessShadowCasters (ea::vector< Drawable * > &shadowCasters, const ea::vector< Drawable * > &candidates, const FloatRange &frustumSubRange, Light *light, Camera *shadowCamera)
 Internal. Pre-process shadow caster candidates. Safe to call from worker thread.
 
void ProcessShadowCasters ()
 Internal. Finalize shadow casters processing.
 
void ProcessLights (LightProcessorCallback *callback)
 Process lights: collect lit geometries, query shadow casters, update shadow maps.
 
void ProcessForwardLightingForLight (unsigned lightIndex, const ea::vector< Drawable * > &litGeometries)
 Accumulate forward lighting for specified light source and geometries.
 
void FinalizeForwardLighting ()
 Should be called after all forward lighting is processed.
 
void ProcessForwardLighting ()
 Process forward lighting for all lights.
 
void UpdateGeometries ()
 Update drawable geometries if needed.
 
void OnUpdateBegin (const FrameInfo &frameInfo)
 
void OnCollectStatistics (RenderPipelineStats &stats)
 
bool HasOccluders () const
 
const auto & GetOccluders () const
 
const auto & GetGeometries () const
 
const FloatRangeGetSceneZRange () const
 
const auto & GetLights () const
 
LightGetLight (unsigned lightIndex) const
 
const auto & GetLightProcessors () const
 
LightProcessorGetLightProcessor (unsigned lightIndex) const
 
const auto & GetLightProcessorsByShadowMap () const
 
unsigned char GetGeometryRenderFlags (unsigned drawableIndex) const
 
const FloatRangeGetGeometryZRange (unsigned drawableIndex) const
 
const LightAccumulatorGetGeometryLighting (unsigned drawableIndex) const
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
 ~Object () override
 Destruct. Clean up self from event sender & receiver structures.
 
virtual StringHash GetType () const =0
 
virtual const ea::string & GetTypeName () const =0
 
virtual const TypeInfoGetTypeInfo () const =0
 Return type info.
 
virtual bool IsInstanceOf (StringHash type) const =0
 Check whether current instance implements specified type.
 
virtual void OnEvent (Object *sender, StringHash eventType, VariantMap &eventData)
 Handle event.
 
virtual void SerializeInBlock (Archive &archive)
 Serialize content from/to archive. May throw ArchiveException.
 
template<typename T >
bool IsInstanceOf () const
 Check current instance is type of specified class.
 
template<typename T >
T * Cast ()
 Cast the object to specified most derived class.
 
template<typename T >
const T * Cast () const
 Cast the object to specified most derived class.
 
void SubscribeToEventManual (StringHash eventType, EventHandler *handler)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEventManual (Object *sender, StringHash eventType, EventHandler *handler)
 Subscribe to a specific sender's event.
 
template<class T >
void SubscribeToEvent (StringHash eventType, T handler)
 Subscribe to an event that can be sent by any sender.
 
template<class T >
void SubscribeToEvent (Object *sender, StringHash eventType, T handler)
 Subscribe to a specific sender's event.
 
void UnsubscribeFromEvent (StringHash eventType)
 Unsubscribe from an event.
 
void UnsubscribeFromEvent (Object *sender, StringHash eventType)
 Unsubscribe from a specific sender's event.
 
void UnsubscribeFromEvents (Object *sender)
 Unsubscribe from a specific sender's events.
 
void UnsubscribeFromAllEvents ()
 Unsubscribe from all events.
 
void UnsubscribeFromAllEventsExcept (const ea::vector< StringHash > &exceptions)
 Unsubscribe from all events except those listed.
 
void UnsubscribeFromAllEventsExcept (const ea::vector< Object * > &exceptions)
 Unsubscribe from all events except those with listed senders.
 
void SendEvent (StringHash eventType)
 Send event to all subscribers.
 
void SendEvent (StringHash eventType, VariantMap &eventData)
 Send event with parameters to all subscribers.
 
VariantMapGetEventDataMap () const
 Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps.
 
template<typename... Args>
void SendEvent (StringHash eventType, const Args &... args)
 Send event with variadic parameter pairs to all subscribers. The parameters are (paramID, paramValue) pairs.
 
ContextGetContext () const
 Return execution context.
 
const VariantGetGlobalVar (StringHash key) const
 
const VariantMapGetGlobalVars () const
 
void SetGlobalVar (StringHash key, const Variant &value)
 
ObjectGetSubsystem (StringHash type) const
 Return subsystem by type.
 
ObjectGetEventSender () const
 Return active event sender. Null outside event handling.
 
EventHandlerGetEventHandler () const
 Return active event handler. Null outside event handling.
 
bool HasSubscribedToEvent (StringHash eventType) const
 Return whether has subscribed to an event without specific sender.
 
bool HasSubscribedToEvent (Object *sender, StringHash eventType) const
 Return whether has subscribed to a specific sender's event.
 
bool HasEventHandlers () const
 Return whether has subscribed to any event.
 
template<class T >
T * GetSubsystem () const
 Template version of returning a subsystem.
 
const ea::string & GetCategory () const
 
void SendEvent (StringHash eventType, const VariantMap &eventData)
 Send event with parameters to all subscribers.
 
void SetBlockEvents (bool block)
 Block object from sending and receiving events.
 
bool GetBlockEvents () const
 Return sending and receiving events blocking status.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
 RefCounted (const RefCounted &rhs)=delete
 Prevent copy construction.
 
RefCountedoperator= (const RefCounted &rhs)=delete
 Prevent assignment.
 
int AddRef ()
 
int ReleaseRef ()
 
int Refs () const
 
int WeakRefs () const
 
RefCountRefCountPtr () const
 Return pointer to the reference count structure.
 
bool HasScriptObject () const
 Return true if script runtime object wrapping this native object exists.
 
bool IsScriptStrongRef () const
 Return true if script reference is strong.
 

Protected Member Functions

void ProcessVisibleDrawable (Drawable *drawable)
 
void ProcessQueuedDrawable (Drawable *drawable)
 
void UpdateDrawableZone (const BoundingBox &boundingBox, Drawable *drawable) const
 
void UpdateDrawableReflection (const BoundingBox &boundingBox, Drawable *drawable) const
 
void QueueDrawableUpdate (Drawable *drawable)
 
void QueueDrawableGeometryUpdate (unsigned threadIndex, Drawable *drawable)
 
void CheckMaterialForAuxiliaryRenderSurfaces (Material *material)
 
FloatRange CalculateBoundingBoxZRange (const BoundingBox &boundingBox) const
 
void SortLightProcessorsByShadowMapSize ()
 
void SortLightProcessorsByShadowMapTexture ()
 

Private Member Functions

 URHO3D_OBJECT (DrawableProcessor, Object)
 

Private Attributes

ea::vector< FloatRangesceneZRangeTemp_
 
FloatRange sceneZRange_
 
ea::vector< SortedOccludersortedOccluders_
 
WorkQueueVector< Drawable * > geometries_
 
WorkQueueVector< Drawable * > threadedGeometryUpdates_
 
WorkQueueVector< Drawable * > nonThreadedGeometryUpdates_
 
WorkQueueVector< Light * > lightsTemp_
 
ea::vector< Light * > lights_
 
ea::vector< LightDataForAccumulatorlightDataForAccumulator_
 
ea::vector< LightProcessor * > lightProcessors_
 
ea::vector< LightProcessor * > lightProcessorsByShadowMapSize_
 
ea::vector< LightProcessor * > lightProcessorsByShadowMapTexture_
 
unsigned numShadowedLights_ {}
 
WorkQueueVector< Drawable * > queuedDrawableUpdates_
 
WorkQueueworkQueue_ {}
 
MaterialdefaultMaterial_ {}
 
ea::vector< SharedPtr< DrawableProcessorPass > > allPasses_
 
ea::vector< DrawableProcessorPass * > passes_
 
DrawableProcessorSettings settings_
 
ea::unique_ptr< LightProcessorCachelightProcessorCache_
 
FrameInfo frameInfo_
 
unsigned numDrawables_ {}
 
Matrix3x4 cullCameraViewMatrix_
 
Vector3 cullCameraZAxis_
 
Vector3 cullCameraZAxisAbs_
 
MaterialQuality materialQuality_ {}
 
GlobalIlluminationgi_ {}
 
ea::vector< UpdateFlagisDrawableUpdated_
 
ea::vector< unsigned char > geometryFlags_
 
ea::vector< FloatRangegeometryZRanges_
 
ea::vector< LightAccumulatorgeometryLighting_
 

Additional Inherited Members

- Static Public Member Functions inherited from Urho3D::Object
static const TypeInfoGetTypeInfoStatic ()
 Return type info static.
 
- Static Public Attributes inherited from Urho3D::Object
static constexpr ea::array< StringHash, 0 > TypeHierarchy {}
 
- Protected Attributes inherited from Urho3D::Object
WeakPtr< Contextcontext_
 Execution context.
 

Detailed Description

Utility used to update and process visible or shadow caster Drawables.

Member Function Documentation

◆ GetGeometries()

const auto& Urho3D::DrawableProcessor::GetGeometries ( ) const
inline

Return information about visible geometries and lights

◆ GetGeometryRenderFlags()

unsigned char Urho3D::DrawableProcessor::GetGeometryRenderFlags ( unsigned  drawableIndex) const
inline

Return information from global drawable index. May be invalid for invisible drawables.

◆ HasOccluders()

bool Urho3D::DrawableProcessor::HasOccluders ( ) const
inline

Return information about visible occluders

◆ OnUpdateBegin()

void Urho3D::DrawableProcessor::OnUpdateBegin ( const FrameInfo frameInfo)

RenderPipeline callbacks

Member Data Documentation

◆ allPasses_

ea::vector<SharedPtr<DrawableProcessorPass> > Urho3D::DrawableProcessor::allPasses_
private

Cached between frames

◆ frameInfo_

FrameInfo Urho3D::DrawableProcessor::frameInfo_
private

Constant within frame, changes between frames

◆ isDrawableUpdated_

ea::vector<UpdateFlag> Urho3D::DrawableProcessor::isDrawableUpdated_
private

Arrays indexed with drawable index

◆ workQueue_

WorkQueue* Urho3D::DrawableProcessor::workQueue_ {}
private

External dependencies


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