VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions
makVrv::DtOsgLightManager Class Reference

DtOsgLightManager receives LightSource nodes from the DtOsgCullVisitor, and collects them all here where they may by applied simultaneously at the same time. More...

Inheritance diagram for makVrv::DtOsgLightManager:
Inheritance graph
[legend]

Public Member Functions

virtual ~DtOsgLightManager ()
 DTOR. More...
 
virtual void initialize ()
 Initialize the manager, create member variables and connect signals etc. More...
 
virtual void attachToStateSet (osg::StateSet *stateSet)
 Attach the light manager to a particular OSG state set. More...
 
virtual void setPerPixelLightingEnabled (bool enabled)
 Toggles global use of shader-based lighting effects. More...
 
virtual bool perPixelLightingEnabled () const
 Retrieves whether per-pixel shader-based lighting is active. More...
 
virtual DtLightManagerlightManager ()
 Get the internal light manager implementation object. More...
 
virtual void setReservedID (int id)
 Reserves a light ID that the light manager won't mess with. More...
 
virtual int reservedID () const
 Retrieves the reserved light ID, or -1 if none. More...
 
virtual void cullReset ()
 Clear the internal list of light sources and implement state changes when the cull visitor is reset each frame. More...
 
virtual bool registerLight (const osg::LightSource *light, const osg::NodePath &nodePath, const osg::Matrixd &modelingMatrix, bool globalLights)
 Add a light source to the ones globally managed. More...
 
virtual DtLightcreateDtLight (const osg::Light *osgLight)
 create a DtLight from an osg::Light. More...
 
virtual void convertOsgLightToDtLight (const osg::LightSource &lightSource, DtLight *pDtLight, const osg::Matrixd &modelingMatrix)
 update a DtLight's parameters based on an osg::LightSource More...
 
virtual void deregisterLight (const osg::LightSource *light)
 
virtual void getWorldPositionAndDirection (const osg::LightSource &lightSource, const osg::Matrixd &modelingMatrix, osg::Vec3d &vWorldPos, osg::Vec3d &vWorldDir) const
 get the world position and direction from a light source More...
 
virtual void update (osg::State &state, DtDe &de, const osg::Camera *camera)
 Active the underlying GLLight's, transformed by the matrix passed in on a per camera basis. More...
 
virtual int getTextureStartOffset (void) const
 get offset More...
 
virtual const Vector2_uint32tileSize (void) const
 get the tile size More...
 
virtual const Vector2_uint32gridMaxDims (void) const
 get the grid dimensions More...
 
virtual void releaseGLObjects (void)
 release gl objects More...
 
virtual unsigned int getOrCreateLightSourceTypeId (DtLight *pDtLight)
 find or create a light source type id for this light source More...
 
virtual unsigned int getOrCreateLightSourceTypeId (const osg::LightSource &lightSource)
 find or create a light source type id for an osg::LightSource More...
 
virtual unsigned int getOrCreateDynamicLightSourceTypeId (const DtLight *pDtLight)
 find or create a light source type id for a light source that will be changing over time. More...
 
virtual void deleteDynamicLightSourceTypeId (const DtLight *pDtLight)
 delete a dynamic light source type id. Makes it available to be used by a different light source More...
 
virtual LightReusableVector lightSourceTypeLightVector () const
 get the light source types that are registered with this light manager be careful with this since it makes a copy of the vector for thread safety More...
 
virtual void updateLightSourceType (unsigned int id, const DtLight *light)
 update a light source in the registered types. More...
 
virtual const
DtOsgLightingComponent
lightingComponent () const
 get the lighting component created by this osg light manager. More...
 
virtual DtOsgLightingComponentlightingComponent ()
 get the lighting component created by this osg light manager (non-const) More...
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 Do nothing constructor. More...
 
virtual ~DtVirtualBaseClass ()
 Virtual do nothing destructor. More...
 

Static Public Member Functions

static DtOsgLightManagerinstance (DtDe &de)
 Get/create instance of light manager. More...
 
static const std::string & theClassName ()
 Get the name this class is registered by. More...
 
static LightType lightType (const osg::Light *light)
 Get the DtLightManager LightType for an osg light. More...
 

Protected Types

typedef std::pair< const
osg::LightSource *, const
makVrv::DtLight * > 
LightSourceAndLight
 
typedef boost::unordered_map
< size_t, LightSourceAndLight
MapLightSourceHashToLights
 
typedef std::map< size_t,
unsigned int
MapLightSourceTypeToLightID
 

Protected Member Functions

 DtOsgLightManager (DtDe &de)
 purposely protected More...
 
virtual void updateLightOnOffStatus (const VectorLights &lights)
 update on/off status More...
 
virtual bool computeLightStatusForTime (const DtLight *pDtLight, DtOsgSkyObject *skyObject)
 Will only turn off lights when it is too bright (won't turn on lights) More...
 
virtual void updateFixedFunctionLights (const osg::State &state)
 
virtual void updateShaderBasedLights (const osg::State &state, const VectorLights &lights, const osg::Camera *camera)
 update the information needed to render the dynamic lights. More...
 
virtual const VectorLights & computeFrustumLights (const osg::State &state, const osg::Camera *camera)
 
virtual void proccessLightPath (DtLight *inLight, const osg::NodePath &nodePath)
 
virtual void configurePerPixelLighting (osg::StateSet *)
 
virtual void slot_reloadShader ()
 
virtual bool existsInLightManager (const DtLight *light) const
 

Protected Attributes

DtDemyDe
 
bool myInitialized
 
bool myDebugCallbackInitialized
 
int myReservedID
 
bool myPerPixelLightingEnabled
 
osg::ref_ptr
< DtOsgLightingComponent
myLightingComponent
 
osg::observer_ptr< osg::StateSet > myStateSet
 
VectorLights myActiveLights
 
DtLightManagermyLightManager
 
MapLightSourceHashToLights myMapLightSourceHashToLights
 
DtOsgLightsObserver * myOsgLightsObserver
 
MapLightSourceTypeToLightID myLightSourceTypeMap
 
LightReusableVector myLightSourceTypeLightVector
 
boost::mutex myMutableLightSourceTypeMutex
 

Private Member Functions

 DtOsgLightManager ()=delete
 not allowed More...
 
 DtOsgLightManager (const DtOsgLightManager &rhs)=delete
 not allowed More...
 
DtOsgLightManageroperator= (const DtOsgLightManager &rhs)=delete
 not allowed More...
 

Detailed Description

DtOsgLightManager receives LightSource nodes from the DtOsgCullVisitor, and collects them all here where they may by applied simultaneously at the same time.

Member Typedef Documentation

typedef std::pair<const osg::LightSource*, const makVrv::DtLight*> makVrv::DtOsgLightManager::LightSourceAndLight
protected
typedef boost::unordered_map<size_t, LightSourceAndLight> makVrv::DtOsgLightManager::MapLightSourceHashToLights
protected

Constructor & Destructor Documentation

virtual makVrv::DtOsgLightManager::~DtOsgLightManager ( )
virtual

DTOR.

makVrv::DtOsgLightManager::DtOsgLightManager ( DtDe de)
protected

purposely protected

makVrv::DtOsgLightManager::DtOsgLightManager ( )
privatedelete

not allowed

makVrv::DtOsgLightManager::DtOsgLightManager ( const DtOsgLightManager rhs)
privatedelete

not allowed

Member Function Documentation

DtOsgLightManager& makVrv::DtOsgLightManager::operator= ( const DtOsgLightManager rhs)
privatedelete

not allowed

virtual void makVrv::DtOsgLightManager::initialize ( )
virtual

Initialize the manager, create member variables and connect signals etc.

virtual void makVrv::DtOsgLightManager::attachToStateSet ( osg::StateSet *  stateSet)
virtual

Attach the light manager to a particular OSG state set.

Pass in NULL to detach.

virtual void makVrv::DtOsgLightManager::setPerPixelLightingEnabled ( bool  enabled)
virtual

Toggles global use of shader-based lighting effects.

virtual bool makVrv::DtOsgLightManager::perPixelLightingEnabled ( ) const
virtual

Retrieves whether per-pixel shader-based lighting is active.

virtual DtLightManager& makVrv::DtOsgLightManager::lightManager ( )
virtual

Get the internal light manager implementation object.

virtual void makVrv::DtOsgLightManager::setReservedID ( int  id)
virtual

Reserves a light ID that the light manager won't mess with.

virtual int makVrv::DtOsgLightManager::reservedID ( ) const
virtual

Retrieves the reserved light ID, or -1 if none.

virtual void makVrv::DtOsgLightManager::cullReset ( )
virtual

Clear the internal list of light sources and implement state changes when the cull visitor is reset each frame.

virtual bool makVrv::DtOsgLightManager::registerLight ( const osg::LightSource *  light,
const osg::NodePath &  nodePath,
const osg::Matrixd &  modelingMatrix,
bool  globalLights 
)
virtual

Add a light source to the ones globally managed.

virtual DtLight* makVrv::DtOsgLightManager::createDtLight ( const osg::Light *  osgLight)
virtual

create a DtLight from an osg::Light.

It does not pass through all the parameters. Use convertOsgLightToDtLight afterwards to do that.

virtual void makVrv::DtOsgLightManager::convertOsgLightToDtLight ( const osg::LightSource &  lightSource,
DtLight pDtLight,
const osg::Matrixd &  modelingMatrix 
)
virtual

update a DtLight's parameters based on an osg::LightSource

virtual void makVrv::DtOsgLightManager::deregisterLight ( const osg::LightSource *  light)
virtual
virtual void makVrv::DtOsgLightManager::getWorldPositionAndDirection ( const osg::LightSource &  lightSource,
const osg::Matrixd &  modelingMatrix,
osg::Vec3d &  vWorldPos,
osg::Vec3d &  vWorldDir 
) const
virtual

get the world position and direction from a light source

virtual void makVrv::DtOsgLightManager::update ( osg::State &  state,
DtDe de,
const osg::Camera *  camera 
)
virtual

Active the underlying GLLight's, transformed by the matrix passed in on a per camera basis.

virtual int makVrv::DtOsgLightManager::getTextureStartOffset ( void  ) const
virtual

get offset

virtual const Vector2_uint32& makVrv::DtOsgLightManager::tileSize ( void  ) const
virtual

get the tile size

virtual const Vector2_uint32& makVrv::DtOsgLightManager::gridMaxDims ( void  ) const
virtual

get the grid dimensions

virtual void makVrv::DtOsgLightManager::releaseGLObjects ( void  )
virtual

release gl objects

virtual unsigned int makVrv::DtOsgLightManager::getOrCreateLightSourceTypeId ( DtLight pDtLight)
virtual

find or create a light source type id for this light source

virtual unsigned int makVrv::DtOsgLightManager::getOrCreateLightSourceTypeId ( const osg::LightSource &  lightSource)
virtual

find or create a light source type id for an osg::LightSource

virtual unsigned int makVrv::DtOsgLightManager::getOrCreateDynamicLightSourceTypeId ( const DtLight pDtLight)
virtual

find or create a light source type id for a light source that will be changing over time.

good for particle system light sources and the flashlight

virtual void makVrv::DtOsgLightManager::deleteDynamicLightSourceTypeId ( const DtLight pDtLight)
virtual

delete a dynamic light source type id. Makes it available to be used by a different light source

virtual LightReusableVector makVrv::DtOsgLightManager::lightSourceTypeLightVector ( ) const
virtual

get the light source types that are registered with this light manager be careful with this since it makes a copy of the vector for thread safety

virtual void makVrv::DtOsgLightManager::updateLightSourceType ( unsigned int  id,
const DtLight light 
)
virtual

update a light source in the registered types.

virtual const DtOsgLightingComponent* makVrv::DtOsgLightManager::lightingComponent ( ) const
virtual

get the lighting component created by this osg light manager.

virtual DtOsgLightingComponent* makVrv::DtOsgLightManager::lightingComponent ( )
virtual

get the lighting component created by this osg light manager (non-const)

static DtOsgLightManager& makVrv::DtOsgLightManager::instance ( DtDe de)
static

Get/create instance of light manager.

static const std::string& makVrv::DtOsgLightManager::theClassName ( )
static

Get the name this class is registered by.

static LightType makVrv::DtOsgLightManager::lightType ( const osg::Light *  light)
static

Get the DtLightManager LightType for an osg light.

virtual void makVrv::DtOsgLightManager::updateLightOnOffStatus ( const VectorLights &  lights)
protectedvirtual

update on/off status

virtual bool makVrv::DtOsgLightManager::computeLightStatusForTime ( const DtLight pDtLight,
DtOsgSkyObject skyObject 
)
protectedvirtual

Will only turn off lights when it is too bright (won't turn on lights)

virtual void makVrv::DtOsgLightManager::updateFixedFunctionLights ( const osg::State &  state)
protectedvirtual
virtual void makVrv::DtOsgLightManager::updateShaderBasedLights ( const osg::State &  state,
const VectorLights &  lights,
const osg::Camera *  camera 
)
protectedvirtual

update the information needed to render the dynamic lights.

This needs to be done on a per camera basis because it runs at the start of draw. When there is a planar reflection camera the cull for two cameras runs and then the draw for those two cameras run so we have to keep the light data separate for each camera in that case.

virtual const VectorLights& makVrv::DtOsgLightManager::computeFrustumLights ( const osg::State &  state,
const osg::Camera *  camera 
)
protectedvirtual
virtual void makVrv::DtOsgLightManager::proccessLightPath ( DtLight inLight,
const osg::NodePath &  nodePath 
)
protectedvirtual
virtual void makVrv::DtOsgLightManager::configurePerPixelLighting ( osg::StateSet *  )
protectedvirtual
virtual void makVrv::DtOsgLightManager::slot_reloadShader ( )
protectedvirtual
virtual bool makVrv::DtOsgLightManager::existsInLightManager ( const DtLight light) const
protectedvirtual

Member Data Documentation

DtDe& makVrv::DtOsgLightManager::myDe
protected
bool makVrv::DtOsgLightManager::myInitialized
protected
bool makVrv::DtOsgLightManager::myDebugCallbackInitialized
protected
int makVrv::DtOsgLightManager::myReservedID
protected
bool makVrv::DtOsgLightManager::myPerPixelLightingEnabled
protected
osg::ref_ptr<DtOsgLightingComponent> makVrv::DtOsgLightManager::myLightingComponent
protected
osg::observer_ptr<osg::StateSet> makVrv::DtOsgLightManager::myStateSet
protected
VectorLights makVrv::DtOsgLightManager::myActiveLights
protected
DtLightManager* makVrv::DtOsgLightManager::myLightManager
protected
MapLightSourceHashToLights makVrv::DtOsgLightManager::myMapLightSourceHashToLights
protected
DtOsgLightsObserver* makVrv::DtOsgLightManager::myOsgLightsObserver
protected
MapLightSourceTypeToLightID makVrv::DtOsgLightManager::myLightSourceTypeMap
protected
LightReusableVector makVrv::DtOsgLightManager::myLightSourceTypeLightVector
protected
boost::mutex makVrv::DtOsgLightManager::myMutableLightSourceTypeMutex
mutableprotected

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

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)