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

 \ ::,

which allows us to hook into our indirect engine to render using indirect rendering. More...

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

Classes

struct  CloneMasterPair
 Helper struct to make the code a bit more clear. More...
 

Public Types

typedef std::unordered_map
< int, Matrix4_32
MapInstanceIdToXform
 Structure to hold instance orientation until the instance is actually added. More...
 
typedef CloneMasterPair
< osgSim::MultiSwitch > 
MultiSwitchPair
 Structure to hold instance multi-switches' state until the instance is actually added Use the pair to hold the refs and the raw pointer to index into the map. More...
 
typedef std::unordered_map
< osgSim::MultiSwitch
*, MultiSwitchPair
MapCloneToMultiSwitchPair
 
typedef std::unordered_map
< int,
MapCloneToMultiSwitchPair
MapInstanceToMapCloneToMasterMultiSwitches
 
typedef CloneMasterPair
< osgSim::DOFTransform > 
DofTransformPair
 Maps an instance id and a master dof to the clone dof so we can get to the cloned dof which contains the state for that particular instance of the dof. More...
 
typedef std::unordered_map
< osgSim::DOFTransform
*, DofTransformPair
MapCloneToDofTransformPair
 
typedef std::unordered_map
< int,
MapCloneToDofTransformPair
MapInstanceToMapCloneToMasterDofs
 
typedef CloneMasterPair
< osg::Sequence > 
SequencePair
 Maps an instance id and a master sequence to the clone sequence so we can get to the cloned sequence which contains the state for that particular instance of the sequence. More...
 
typedef std::unordered_map
< osg::Sequence
*, SequencePair
MapCloneToSequencePair
 
typedef std::unordered_map
< int, MapCloneToSequencePair
MapInstanceToMapCloneToMasterSequences
 
typedef std::map< const
std::string,
DtIndirectUvOffsetManager::UvOffset
MapAnnotationToUvOffsetData
 Maps and instance id and a string to the current uv offset for this particular annotation. More...
 
typedef std::unordered_map
< int,
MapAnnotationToUvOffsetData
MapInstanceToMapAnnotationToUvOffsetData
 
typedef std::unordered_map
< int,
DtIndirectUvOffsetManager::UvOffset
MapInstanceToUvOffset
 

Public Member Functions

virtual void setName (const std::string &name) override
 set the name for the base class, the culling and the main thread job More...
 
virtual void setRegistrar (DtIndirectGeometryRegistrar *registrar)
 set the registrar More...
 
virtual
DtIndirectGeometryRegistrar
registrar ()
 provide access to this indirect geometries indirect registrar More...
 
virtual void setCullShaderConfig (const DtCullShaderConfig &cullShaderConfig)
 set the compute shader config More...
 
virtual const charclassName () const
 get the classes name in a char pointer. Used by OSG to identify objects of this class More...
 
virtual void drawImplementation (osg::RenderInfo &renderInfo) const
 inherited from osg::drawable will do the culling/lod'ing of the instances (via compute shaders) , and subsequent rendering of the instances More...
 
virtual unsigned int rebuildRegistrar (osg::RenderInfo &renderInfo) const
 draw imp helper function returns myLastRebuiltFrameNum More...
 
virtual int addInstance (const DtIndirectGeometryInstance &instance)
 Add an 'instance' of a model which has lod, transform, switch and node path information used by vrvOsg to add instances from: -paging databases and terrain patches -osgEarth features returns the instance id in the indirect geometry for the added instance. More...
 
virtual int addInstance (int modelId, const osg::Matrixd &xForm, float modelScale, float modelRadius, int lightPointGroupId)
 Add a simple instance of a model which only has lod and transform information used by vrvOsg to add instances from: -entity indirect path instances -CDB instances returns the instance id in the indirect geometry for the added instance. More...
 
virtual void setInstanceMatrixTransform (int instanceId, const Matrix4_32 &xForm)
 set the transform on an instance More...
 
virtual Matrix4_32 instanceMatrixTransform (int instanceId) const
 get the transform on an instance More...
 
virtual void removeInstance (int id)
 remove an instance More...
 
virtual void accept (osg::NodeVisitor &nv)
 overridden: because we do certain processing (state set modification, etc) that needs to happen outside of the draw pass. More...
 
virtual void setParent (const osg::Group *parent)
 Typically a feature tile node/cdb group node. More...
 
virtual void setRegistrarInvalid (void)
 Indicate to us that our registrar is now invalid registrars are externally held, and the DtIndirectGeometry needs to know this because it may be deleted much after the registrar has been deleted, and possibly internally to osg. More...
 
virtual void releaseGLObjects (osg::State *state) const
 release all gl objects used by this indirect geometry More...
 
virtual void accept (osg::PrimitiveFunctor &functor) const
 override of Drawable function which allows the osg Statistics to work for Indirect Geometry More...
 
virtual void setupIndirect ()
 Makes sure Indirect Geometry is ready to go, can be called from multiple threads (e.g. More...
 
virtual void setupIndirectShadersOnly ()
 Makes sure Indirect Geometry is ready to go, can be called from multiple threads (e.g. More...
 
virtual void setLocalOriginTransform (const osg::Matrixd &localOriginTransform)
 set the matrix used to adjust the local origin of this indirect geometry this is used to fix precision issue that arise from having large numbers in the vertex buffers or in the instance transforms More...
 
virtual const osg::Matrixd & localOriginTransform () const
 get the matrix used to adjust the local origin of this indirect geometry this is used to fix precision issue that arise from having large numbers in the vertex buffers or in the instance transforms More...
 
virtual bool actuallyAddQueuedUpInstances (void)
 adds all instances that have been queued up by calling addInstanceActual with them as the parameter More...
 
virtual void launchMainThreadJobAndWait (DtDe &de, DtOsgRenderer &renderer)
 finish initialization of geometry More...
 
virtual boost::condition_variable & waitCondition ()
 returns a wait condition for use as a sync point between class and main thread job More...
 
virtual void updateGpuBuffers (osg::RenderInfo &renderInfo)
 helper function for job to call the culling and lod updater More...
 
virtual void setPureSignalBasedUpdates (bool val)
 indicate whether this manager's switches get updated per frame via looking at the actual switches/multi-switches or directly using signals More...
 
virtual bool pureSignalBasedUpdates (void) const
 indicate whether this manager's switches get updated per frame via looking at the actual switches/multi-switches or directly using signals More...
 
virtual void setInstanceMultiSwitch (int id, osgSim::MultiSwitch *clone, osgSim::MultiSwitch *master)
 set the multi-switches on an instance More...
 
virtual void instanceMultiSwitches (int instanceIdIndirect, MapCloneToMultiSwitchPair &mapCloneToMasterMultiSwitches) const
 get the multi swiches map for this instance More...
 
virtual void setInstanceUvOffset (int id, const std::string &annotation, float uOffset, float vOffset)
 set the uv offset for a particular instance. More...
 
virtual void scrollUv (int id, float uOffset, float vOffset)
 scroll the uv offset for a particular instance. More...
 
virtual void instanceAnnotationsAndUvOffsets (int instanceIdIndirect, std::vector< DtIndirectAnnotationAndUvOffset > &annotations) const
 get all the annotations and uv offsets for a particular instance. More...
 
virtual void setInstanceDof (int id, osgSim::DOFTransform *clone, osgSim::DOFTransform *master)
 handle changes to an instances dof node More...
 
virtual void setInstanceDofTranslation (int id, osgSim::DOFTransform *clone, osgSim::DOFTransform *master, const Vector3_64 &trans, const Vector3_64 &transVel)
 set the translation and translation velocity on a (clone) dof More...
 
virtual void setInstanceDofOrientation (int id, osgSim::DOFTransform *clone, osgSim::DOFTransform *master, const Vector3_64 &hpr, const Vector3_64 &hprVel)
 set the HPR (heading, pitch and roll) & HPR velocity on a (clone) dof More...
 
virtual void setInstanceDofOrientation (int id, osgSim::DOFTransform *clone, osgSim::DOFTransform *master, const Vector3_64 &hprVel, bool forceUpdate)
 set the HPR velocity on a (clone) dof More...
 
virtual void instanceDofs (int instanceIdIndirect, MapCloneToDofTransformPair &mapCloneToDofTransformPair) const
 get the dofs for a particular instance More...
 
virtual void setInstanceSequence (int id, osg::Sequence *clone, osg::Sequence *master)
 handle change to an instances sequence node More...
 
virtual void instanceSequences (int instanceIdIndirect, MapCloneToSequencePair &mapCloneToMasterSequences) const
 get the sequences for a particular instance id More...
 
virtual void setFadeParameters (const DtIndirectFadeParameters &fadeParameters)
 set the fade parameters More...
 
virtual const
DtIndirectFadeParameters
fadeParameters (void) const
 set the fade parameters More...
 
virtual void perCameraUpdateAndCull (osg::RenderInfo &renderInfo, const osg::Camera *camera, const osg::Matrix &modelViewMatrix, const osg::FrameStamp *frameStamp)
 update any per camera data that is needed and then run the cull compute shader for this camera More...
 
virtual void fillViewParameters (DtIndirectViewParameters &destViewParameters, const osg::Matrix &modelViewMatrix, const osg::Camera *camera, osg::RenderInfo &renderInfo) const
 calculate and fill the destination view parameters based on the model view, camera, and renderInfo More...
 
virtual bool readyToRender (const int instanceIdInIndirect) const
 can the instance be rendered this frame? More...
 
virtual bool hasInProgressInstanceMove () const
 does this indirect geometry have any instances in the process of moving? used by the indirect geometry grid node to force this geometry to render even when it is not in the frustum since it has instances that are in the process of moving. More...
 
virtual void addInProgressInstanceMove ()
 Add one to the count of instances in the process of moving. More...
 
virtual void subtractInProgressInstanceMove ()
 remove one from the count of instances in the process of moving. More...
 
virtual bool instanceEverAdded (void) const
 was an instance ever added? not the same as numInstances() (implemented as pass through to the internal instance container) More...
 
virtual int numValidInstances (void) const
 the number of (valid) instances (implemented as pass through to the internal instance container) More...
 
virtual const osg::Geode * parentGeode (void) const
 internal. More...
 
virtual osg::Geode * parentGeode (void)
 
virtual void setManagesIndividualInstances (bool val)
 indicate whether we can manage individual instances (set position, orientation, deletion, etc) More...
 
virtual bool managesIndividualInstances () const
 indicate whether we can manage individual instances (set position, orientation, deletion, etc) More...
 
virtual void setInstanceColor (int instanceIdIndirect, const Vector4_32 &color)
 set/get the color for a particular instance. More...
 
virtual Vector4_32 instanceColor (int instanceIdIndirect) const
 
virtual void setInstanceOtherData0 (int instanceIdIndirect, const Vector4_32 &data)
 set/get the otherdata0 for a particular instance. More...
 
virtual Vector4_32 instanceOtherData0 (int instanceIdIndirect) const
 
virtual void setInstanceVisibility (int instanceIdIndirect, bool visible)
 set/get the visibility for a particular instance. More...
 
virtual bool instanceVisibility (int instanceIdIndirect) const
 
virtual void setInstanceLightPointMaxDistance (int instanceIdIndirect, float lightPointMaxDistance)
 set/get the light point max distance for a particular instance. More...
 
virtual float instanceLightPointMaxDistance (int instanceIdIndirect) const
 
virtual void setUpdateBuffersJobsRequiredCurrentFrame (bool requiredCurrentFrame)
 set/get whether to force immediate update of patch indirect geometries internal buffers. More...
 
virtual bool updateBuffersJobsRequiredCurrentFrame (void) const
 

Protected Types

typedef std::unordered_map
< int, int
MapIndirectIdToInstanceContainerId
 Map of instances' id in indirect geometry to their id in the instance container. More...
 
typedef std::unordered_set< intSetInstancesToDelete
 Structure to hold instance ids to be deleted. More...
 

Protected Member Functions

 DtIndirectGeometry (DtDe &de, bool terrainPatch)
 purposely protected. only creator can create More...
 
virtual ~DtIndirectGeometry ()
 purposely protected More...
 
virtual bool addInstanceActual (const DtIndirectGeometryInstance &instance)
 actually add the instances that were queued up via possibly multiple threads this happens as part of the culling call More...
 
virtual void setupShadersIfNecessary ()
 to initialize the shader files cache, because DtIndirectGeometry doesn't have direct access to DtDe yet (it could; but that would break the cdb plugin) lock myInternalsMutex before calling More...
 
virtual void setupDebugUniforms ()
 setup the uniforms needed to visualize debug information for indirect geometry lock myInternalsMutex before calling More...
 
virtual void installDefaultMaterial (osg::StateSet *ss)
 install a default material on ourselves, so that there's no state leakage with regards ubos/osg::material because we are using materials encoded into an ssbo for indirect rendering More...
 
virtual void slot_reloadShaders ()
 slot for handling when the shaders are reloaded More...
 
virtual void updateIndicesCount (const DtAggregateModelInfo &modelInfo, int instanceContainerIndex)
 internal method to update num of triangles that this geometry will render in the worst case (all lods across all models across all instances) More...
 
virtual void removeInstanceFromIndicesCount (int instanceContainerIndex)
 remove a particular instances indicies from the count. More...
 
virtual void updateModelIdsToInstances (int modelId, int instanceId, bool add)
 increment the number of instance for the model id (called internally when an instance is added) More...
 
virtual void drawFromCommandBuffer (osg::RenderInfo &renderInfo, const DtIndirectViewParameters &viewParameters, const osg::Camera *camera) const
 setup and draw a command buffer More...
 
virtual void setMultiSwitchOnInstanceInInstanceContainer (int instanceContainerId, osgSim::MultiSwitch *clone, osgSim::MultiSwitch *master)
 wrapper function for setting a switch state in the switch manager More...
 
virtual void setDofOnInstanceInInstanceContainer (int instanceContainerId, osgSim::DOFTransform *clone, osgSim::DOFTransform *master)
 wrapper function for setting a dof state in the dof manager More...
 
virtual void updateInstancePositionOrientationAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 added actual functions are called when the instance is added to update the state that has been already set for that instance and pass it down to the managers. More...
 
virtual void updateInstanceSwitchesAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 update an instance's switches More...
 
virtual void updateInstanceSequencesAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 update an instance's sequences More...
 
virtual void setUvOffsetOnInstanceInInstanceContainer (const int instanceId, const std::string &annotation, float uOffset, float vOffset)
 set the uv offset for a particular instance in the instance container. More...
 
virtual void updateInstanceUvOffsetsAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 set all the uv offsets that have been saved off from before the instance was added. More...
 
virtual void updateInstanceColorAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 set color that has been saved off before the instance was added More...
 
virtual void updateInstanceOtherData0AddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 set otherdata0 that has been saved off before the instance was added More...
 
virtual void updateInstanceVisibilityLightPointMaxDistanceActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 set visibility, light point max distance and other data 1 that has been saved off before the instance was added More...
 
virtual bool updateInstanceDeletionBeforeAddedActual (const DtIndirectGeometryInstance &instance)
 check to see if this instance was marked for deletion before it was added More...
 
virtual void updateInstancesDofsAddedActual (const DtIndirectGeometryInstance &instance, int outInstanceIndex)
 update an instance's dofs states More...
 
virtual void removeInstanceInInstanceContainer (int instanceContainerId)
 remove an instance from the instance container More...
 
virtual void reloadShadersIfNecessary (void) const
 reload the shaders if necessary (marks a flag and they are reloaded before the next draw. More...
 
virtual void update (const osg::FrameStamp *frameStamp)
 run update on managers that need to run during the update traversal. More...
 
virtual DtIndirectDrawComponentdrawComponent (int stateId) const
 get the indirect draw component for a particular state More...
 
virtual bool hasLightPoints (void) const
 similar to the drawComponent above, but checks for the existence of GL_POINTS (light points) primitives More...
 
virtual void debugDrawIfNecessary (osg::RenderInfo &renderInfo, const int maxCommands, const osg::Camera *camera)
 
virtual void deleteDrawComponents (void)
 delete the draw components More...
 
virtual void initDrawComponents (void)
 initialize the draw components More...
 
virtual
DtIndirectModelScalingAlgorithm 
scalingAlgorithm (const DtOsgCullVisitorParameters *params) const
 get the scaling algorithm, given the cull parameters More...
 
virtual const
DtOsgCullVisitorParameters
findCullVisitorParameters (osg::RenderInfo &renderInfo) const
 get the cull visitor parameters based on the current render info. More...
 

Protected Attributes

osg::ref_ptr
< DtIndirectGeometryRegistrar
myRegistrar
 pointer to the (external) registrar More...
 
tbb::concurrent_queue
< DtIndirectGeometryInstance
myQueueInstancesToAdd
 addInstance may be called from multiple threads. Hence, concurrent queue More...
 
DtGpuCullingmyGpuCulling
 
MapIntToInt myModelIDsToInstances
 
MapIntToInt myInstancesToModelIds
 
const bool myIsTerrainPatch
 
DtIndirectEffectTexturesTemplate myEffectTexturesState
 the accumulated effect textures' state which represents the superset of all effect textures cumulatively used by the models of the instances of this Indirect geometry More...
 
unsigned int myNumTextCoordArrays
 
DtSignalConnectionManager myConnections
 
osg::Matrixd myLocalOriginTransformMatrix
 
int myNumIndicesAcrossAllModels
 number of indices across all unique models across instances More...
 
std::map< int, intmyInstanceContainerIdToNumIndices
 
bool myLastDebugIndirectColorOn
 
bool myLastDebugIndirectColorByGeomIndex
 
bool myLastMissingTextureColorOn
 
DtIndirectVaoManagermyVaoManager
 
DtInstanceContainer myInstanceContainer
 container for all the instances registered here More...
 
DtIndirectSwitchManagermySwitchManager
 
DtIndirectDofManagermyDofManager
 
DtIndirectLodManagermyLodManager
 
DtIndirectUvOffsetManagermyUvOffsetManager
 
DtIndirectPerInstanceDataManagermyPerInstanceDataManager
 
unsigned int myMutableLastRegistrarRebuildNumber
 
unsigned int myMutableLastFrameTexturesUpdated
 
bool myMutableShadersSetup
 
bool myMutableShouldReloadShaders
 FIXME should be a static but currently the cull shader is per indirect. More...
 
MapIndirectIdToInstanceContainerId myMapIndirectIdToInstanceContainerId
 
unsigned int myLastFrameUpdated
 
const osg::Camera * myLastCamera
 
boost::condition_variable myWaitCondition
 
boost::mutex myWaitMutex
 
boost::mutex myInternalsMutex
 
osg::ref_ptr
< DtIndirectGeometryInitMainThreadJob
myMainThreadInitJob
 
osg::ref_ptr
< DtIndirectGeometryUpdateBuffersMainThreadJob
myMainThreadUpdateBuffersJob
 
osg::ref_ptr
< DtIndirectGeometryUpdateMainThreadJob
myMainThreadUpdateJob
 
DtIndirectFadeParameters myFadeParameters
 
std::atomic< intmyRunningInstanceId
 
MapInstanceIdToXform myMapInstanceIdToXform
 Structure to hold instance orientation until the instance is actually added. More...
 
MapInstanceToMapCloneToMasterMultiSwitches myMapInstanceToMapCloneToMasterMultiSwitches
 Structure to hold instance multi-switches' state until the instance is actually added Use the pair to hold the refs and the raw pointer to index into the map. More...
 
MapInstanceToMapCloneToMasterDofs myMapInstanceToMapCloneToMasterDofs
 Maps an instance id and a master dof to the clone dof so we can get to the cloned dof which contains the state for that particular instance of the dof. More...
 
MapInstanceToMapCloneToMasterSequences myMapInstanceToMapCloneToMasterSequences
 Maps an instance id and a master sequence to the clone sequence so we can get to the cloned sequence which contains the state for that particular instance of the sequence. More...
 
MapInstanceToMapAnnotationToUvOffsetData myMapInstanceToMapAnnotationToUvOffsetData
 Maps and instance id and a string to the current uv offset for this particular annotation. More...
 
MapInstanceToUvOffset myMapInstanceToUvOffset
 Maps and instance id to the current uv offset for all scrollable uv offsets. More...
 
std::unordered_map< int,
Vector4_32
myMapInstanceToColor
 Maps an instance id to the color for that instance. More...
 
std::unordered_map< int,
Vector4_32
myMapInstanceToOtherData0
 Maps an instance id to the other data0 for that instance. More...
 
std::unordered_map< int, boolmyMapInstanceToVisibility
 Maps an instance id to the visibility for that instance. More...
 
std::unordered_map< int, float > myMapInstanceToLightPointMaxDistance
 Maps an instance id to the light point max distance for that instance. More...
 
SetInstancesToDelete mySetInstancesIndirectIdsToDelete
 
bool myManagesIndividualInstances
 
DtDemyDe
 
osg::ref_ptr< osg::Uniform > myModelViewMatrixUniform
 
osg::ref_ptr< osg::Uniform > myProjectionMatrixUniform
 
DtIndirectDefaultDrawComponentmyDefaultDrawComponent
 
DtIndirectLightPointDrawComponentmyLightPointDrawComponent
 
DtIndirectDebugCullComponentmyIndirectDebugCullComponent
 
osg::ref_ptr< osg::StateSet > myDefaultDrawStateSet
 
osg::ref_ptr< osg::StateSet > myLightPointDrawStateSet
 
bool myUpdateBuffersJobsRequiredCurrentFrame
 whether gpu buffers for instances are updated immediately More...
 
unsigned int myLastFrameUpdateTraversed
 
int myNumInProgressInstanceMoves
 

Static Protected Attributes

static DtVirtualProgramCachetheVirtualProgramCache
 

Private Member Functions

 DtIndirectGeometry ()=delete
 not allowed More...
 
 DtIndirectGeometry (const DtIndirectGeometry &other)=delete
 Copy Constructor not implemented – Copy Not Allowed. More...
 
DtIndirectGeometryoperator= (const DtIndirectGeometry &other)=delete
 Assignment Operator Not implemented – Assignment Not Allowed. More...
 

Friends

class DtIndirectGeometryCreator
 
class DtIndirectVaoManager
 
class DtIndirectGeometryInitMainThreadJob
 needed to give access to wait conditions and mutexes. More...
 

Detailed Description

 \ ::,

which allows us to hook into our indirect engine to render using indirect rendering.

In the case of features, the

See Also
DtIndirectGeometry is parented to the feature tile nodes and manages the indirect rendering of all the feature points in that tile. For paging databases it manages the indirect rendering of a complete tile. For terrain patches it manages the indirect rendering of the full patch. For entities the
DtIndirectGeometry is managed by a
DtIndirectGeometryGrid which has a
DtIndirectGeometry per geo cell. Contains some managers for processing the state (
DtIndirectSwitchManager,
DtIndirectDofManager,
DtIndirectLodManager,
DtIndirectUvOffsetManager,
DtIndirectPerInstanceDataManager) Uses a
DtGpuCulling object for processing the state of the entities and culling them to setup the command buffer for drawing. Finally
DtIndirectDrawComponent objects are used to draw the geometry based on the state

Member Typedef Documentation

Structure to hold instance orientation until the instance is actually added.

Structure to hold instance multi-switches' state until the instance is actually added Use the pair to hold the refs and the raw pointer to index into the map.

Maps an instance id and a master switch to the clone switch so we can get to the cloned switch which contains the state for that particular instance of the switch.

typedef std::unordered_map< osgSim::MultiSwitch*, MultiSwitchPair> makVrv::DtIndirectGeometry::MapCloneToMultiSwitchPair

Maps an instance id and a master dof to the clone dof so we can get to the cloned dof which contains the state for that particular instance of the dof.

typedef std::unordered_map< osgSim::DOFTransform*, DofTransformPair > makVrv::DtIndirectGeometry::MapCloneToDofTransformPair

Maps an instance id and a master sequence to the clone sequence so we can get to the cloned sequence which contains the state for that particular instance of the sequence.

typedef std::unordered_map< osg::Sequence*, SequencePair > makVrv::DtIndirectGeometry::MapCloneToSequencePair

Maps and instance id and a string to the current uv offset for this particular annotation.

Map of instances' id in indirect geometry to their id in the instance container.

typedef std::unordered_set<int> makVrv::DtIndirectGeometry::SetInstancesToDelete
protected

Structure to hold instance ids to be deleted.

Constructor & Destructor Documentation

makVrv::DtIndirectGeometry::DtIndirectGeometry ( DtDe de,
bool  terrainPatch 
)
protected

purposely protected. only creator can create

virtual makVrv::DtIndirectGeometry::~DtIndirectGeometry ( )
protectedvirtual

purposely protected

makVrv::DtIndirectGeometry::DtIndirectGeometry ( )
privatedelete

not allowed

makVrv::DtIndirectGeometry::DtIndirectGeometry ( const DtIndirectGeometry other)
privatedelete

Copy Constructor not implemented – Copy Not Allowed.

Member Function Documentation

DtIndirectGeometry& makVrv::DtIndirectGeometry::operator= ( const DtIndirectGeometry other)
privatedelete

Assignment Operator Not implemented – Assignment Not Allowed.

virtual void makVrv::DtIndirectGeometry::setName ( const std::string &  name)
overridevirtual

set the name for the base class, the culling and the main thread job

virtual void makVrv::DtIndirectGeometry::setRegistrar ( DtIndirectGeometryRegistrar registrar)
virtual

set the registrar

Parameters
registrarThe indirect geometry registrar which will contain the 'specs' corresponding to models whose instances this DtIndirectGeometry rendered This is purposely separated out from DtIndirectGeometry, because several DtIndirectGeometry'ies may share the same models (for example cdb gt layers), in which case all DtIndirectGeometry'ies share the same registrar or use the 1 registrar per tile (as is the case with cdb gs layers) in which case one registrar is made per geometry(tile)
virtual DtIndirectGeometryRegistrar* makVrv::DtIndirectGeometry::registrar ( )
virtual

provide access to this indirect geometries indirect registrar

virtual void makVrv::DtIndirectGeometry::setCullShaderConfig ( const DtCullShaderConfig cullShaderConfig)
virtual

set the compute shader config

virtual const char* makVrv::DtIndirectGeometry::className ( ) const
virtual

get the classes name in a char pointer. Used by OSG to identify objects of this class

virtual void makVrv::DtIndirectGeometry::drawImplementation ( osg::RenderInfo &  renderInfo) const
virtual

inherited from osg::drawable will do the culling/lod'ing of the instances (via compute shaders) , and subsequent rendering of the instances

virtual unsigned int makVrv::DtIndirectGeometry::rebuildRegistrar ( osg::RenderInfo &  renderInfo) const
virtual

draw imp helper function returns myLastRebuiltFrameNum

virtual int makVrv::DtIndirectGeometry::addInstance ( const DtIndirectGeometryInstance instance)
virtual

Add an 'instance' of a model which has lod, transform, switch and node path information used by vrvOsg to add instances from: -paging databases and terrain patches -osgEarth features returns the instance id in the indirect geometry for the added instance.

virtual int makVrv::DtIndirectGeometry::addInstance ( int  modelId,
const osg::Matrixd &  xForm,
float  modelScale,
float  modelRadius,
int  lightPointGroupId 
)
virtual

Add a simple instance of a model which only has lod and transform information used by vrvOsg to add instances from: -entity indirect path instances -CDB instances returns the instance id in the indirect geometry for the added instance.

virtual void makVrv::DtIndirectGeometry::setInstanceMatrixTransform ( int  instanceId,
const Matrix4_32 xForm 
)
virtual

set the transform on an instance

virtual Matrix4_32 makVrv::DtIndirectGeometry::instanceMatrixTransform ( int  instanceId) const
virtual

get the transform on an instance

virtual void makVrv::DtIndirectGeometry::removeInstance ( int  id)
virtual

remove an instance

virtual void makVrv::DtIndirectGeometry::accept ( osg::NodeVisitor &  nv)
virtual

overridden: because we do certain processing (state set modification, etc) that needs to happen outside of the draw pass.

So, we check for and do this in the cull visitor pass

virtual void makVrv::DtIndirectGeometry::setParent ( const osg::Group *  parent)
virtual

Typically a feature tile node/cdb group node.

virtual void makVrv::DtIndirectGeometry::setRegistrarInvalid ( void  )
virtual

Indicate to us that our registrar is now invalid registrars are externally held, and the DtIndirectGeometry needs to know this because it may be deleted much after the registrar has been deleted, and possibly internally to osg.

virtual void makVrv::DtIndirectGeometry::releaseGLObjects ( osg::State *  state) const
virtual

release all gl objects used by this indirect geometry

virtual void makVrv::DtIndirectGeometry::accept ( osg::PrimitiveFunctor &  functor) const
virtual

override of Drawable function which allows the osg Statistics to work for Indirect Geometry

virtual void makVrv::DtIndirectGeometry::setupIndirect ( )
virtual

Makes sure Indirect Geometry is ready to go, can be called from multiple threads (e.g.

cdb) -draw components' effect textures' state is setup correctly -debug uniforms are set up correctly

virtual void makVrv::DtIndirectGeometry::setupIndirectShadersOnly ( )
virtual

Makes sure Indirect Geometry is ready to go, can be called from multiple threads (e.g.

cdb) -draw components' effect textures' state is setup correctly

virtual const osg::Geode* makVrv::DtIndirectGeometry::parentGeode ( void  ) const
virtual

internal.

Access the parent geode for this indirect geometry

virtual osg::Geode* makVrv::DtIndirectGeometry::parentGeode ( void  )
virtual
virtual void makVrv::DtIndirectGeometry::setLocalOriginTransform ( const osg::Matrixd &  localOriginTransform)
virtual

set the matrix used to adjust the local origin of this indirect geometry this is used to fix precision issue that arise from having large numbers in the vertex buffers or in the instance transforms

virtual const osg::Matrixd& makVrv::DtIndirectGeometry::localOriginTransform ( ) const
virtual

get the matrix used to adjust the local origin of this indirect geometry this is used to fix precision issue that arise from having large numbers in the vertex buffers or in the instance transforms

virtual bool makVrv::DtIndirectGeometry::actuallyAddQueuedUpInstances ( void  )
virtual

adds all instances that have been queued up by calling addInstanceActual with them as the parameter

virtual void makVrv::DtIndirectGeometry::launchMainThreadJobAndWait ( DtDe de,
DtOsgRenderer renderer 
)
virtual

finish initialization of geometry

virtual boost::condition_variable& makVrv::DtIndirectGeometry::waitCondition ( )
virtual

returns a wait condition for use as a sync point between class and main thread job

virtual void makVrv::DtIndirectGeometry::updateGpuBuffers ( osg::RenderInfo &  renderInfo)
virtual

helper function for job to call the culling and lod updater

virtual void makVrv::DtIndirectGeometry::setManagesIndividualInstances ( bool  val)
virtual

indicate whether we can manage individual instances (set position, orientation, deletion, etc)

virtual bool makVrv::DtIndirectGeometry::managesIndividualInstances ( ) const
virtual

indicate whether we can manage individual instances (set position, orientation, deletion, etc)

virtual void makVrv::DtIndirectGeometry::setPureSignalBasedUpdates ( bool  val)
virtual

indicate whether this manager's switches get updated per frame via looking at the actual switches/multi-switches or directly using signals

virtual bool makVrv::DtIndirectGeometry::pureSignalBasedUpdates ( void  ) const
virtual

indicate whether this manager's switches get updated per frame via looking at the actual switches/multi-switches or directly using signals

virtual void makVrv::DtIndirectGeometry::setInstanceMultiSwitch ( int  id,
osgSim::MultiSwitch *  clone,
osgSim::MultiSwitch *  master 
)
virtual

set the multi-switches on an instance

virtual void makVrv::DtIndirectGeometry::instanceMultiSwitches ( int  instanceIdIndirect,
MapCloneToMultiSwitchPair mapCloneToMasterMultiSwitches 
) const
virtual

get the multi swiches map for this instance

virtual void makVrv::DtIndirectGeometry::setInstanceUvOffset ( int  id,
const std::string &  annotation,
float  uOffset,
float  vOffset 
)
virtual

set the uv offset for a particular instance.

virtual void makVrv::DtIndirectGeometry::scrollUv ( int  id,
float  uOffset,
float  vOffset 
)
virtual

scroll the uv offset for a particular instance.

virtual void makVrv::DtIndirectGeometry::instanceAnnotationsAndUvOffsets ( int  instanceIdIndirect,
std::vector< DtIndirectAnnotationAndUvOffset > &  annotations 
) const
virtual

get all the annotations and uv offsets for a particular instance.

virtual void makVrv::DtIndirectGeometry::setInstanceColor ( int  instanceIdIndirect,
const Vector4_32 color 
)
virtual

set/get the color for a particular instance.

virtual Vector4_32 makVrv::DtIndirectGeometry::instanceColor ( int  instanceIdIndirect) const
virtual
virtual void makVrv::DtIndirectGeometry::setInstanceOtherData0 ( int  instanceIdIndirect,
const Vector4_32 data 
)
virtual

set/get the otherdata0 for a particular instance.

virtual Vector4_32 makVrv::DtIndirectGeometry::instanceOtherData0 ( int  instanceIdIndirect) const
virtual
virtual void makVrv::DtIndirectGeometry::setInstanceVisibility ( int  instanceIdIndirect,
bool  visible 
)
virtual

set/get the visibility for a particular instance.

virtual bool makVrv::DtIndirectGeometry::instanceVisibility ( int  instanceIdIndirect) const
virtual
virtual void makVrv::DtIndirectGeometry::setInstanceLightPointMaxDistance ( int  instanceIdIndirect,
float  lightPointMaxDistance 
)
virtual

set/get the light point max distance for a particular instance.

virtual float makVrv::DtIndirectGeometry::instanceLightPointMaxDistance ( int  instanceIdIndirect) const
virtual
virtual void makVrv::DtIndirectGeometry::setInstanceDof ( int  id,
osgSim::DOFTransform *  clone,
osgSim::DOFTransform *  master 
)
virtual

handle changes to an instances dof node

virtual void makVrv::DtIndirectGeometry::setInstanceDofTranslation ( int  id,
osgSim::DOFTransform *  clone,
osgSim::DOFTransform *  master,
const Vector3_64 trans,
const Vector3_64 transVel 
)
virtual

set the translation and translation velocity on a (clone) dof

virtual void makVrv::DtIndirectGeometry::setInstanceDofOrientation ( int  id,
osgSim::DOFTransform *  clone,
osgSim::DOFTransform *  master,
const Vector3_64 hpr,
const Vector3_64 hprVel 
)
virtual

set the HPR (heading, pitch and roll) & HPR velocity on a (clone) dof

virtual void makVrv::DtIndirectGeometry::setInstanceDofOrientation ( int  id,
osgSim::DOFTransform *  clone,
osgSim::DOFTransform *  master,
const Vector3_64 hprVel,
bool  forceUpdate 
)
virtual

set the HPR velocity on a (clone) dof

virtual void makVrv::DtIndirectGeometry::instanceDofs ( int  instanceIdIndirect,
MapCloneToDofTransformPair mapCloneToDofTransformPair 
) const
virtual

get the dofs for a particular instance

virtual void makVrv::DtIndirectGeometry::setInstanceSequence ( int  id,
osg::Sequence *  clone,
osg::Sequence *  master 
)
virtual

handle change to an instances sequence node

virtual void makVrv::DtIndirectGeometry::instanceSequences ( int  instanceIdIndirect,
MapCloneToSequencePair mapCloneToMasterSequences 
) const
virtual

get the sequences for a particular instance id

virtual void makVrv::DtIndirectGeometry::setFadeParameters ( const DtIndirectFadeParameters fadeParameters)
virtual

set the fade parameters

virtual const DtIndirectFadeParameters& makVrv::DtIndirectGeometry::fadeParameters ( void  ) const
virtual

set the fade parameters

virtual void makVrv::DtIndirectGeometry::perCameraUpdateAndCull ( osg::RenderInfo &  renderInfo,
const osg::Camera *  camera,
const osg::Matrix &  modelViewMatrix,
const osg::FrameStamp *  frameStamp 
)
virtual

update any per camera data that is needed and then run the cull compute shader for this camera

virtual void makVrv::DtIndirectGeometry::fillViewParameters ( DtIndirectViewParameters destViewParameters,
const osg::Matrix &  modelViewMatrix,
const osg::Camera *  camera,
osg::RenderInfo &  renderInfo 
) const
virtual

calculate and fill the destination view parameters based on the model view, camera, and renderInfo

virtual void makVrv::DtIndirectGeometry::setUpdateBuffersJobsRequiredCurrentFrame ( bool  requiredCurrentFrame)
virtual

set/get whether to force immediate update of patch indirect geometries internal buffers.

Internal gpu buffers are not necessarily updated in a given frame/tick even if they are dirty (i.e. new models, textures came in). Setting this to true forces the internal buffers to update immediately that frame/tick.

virtual bool makVrv::DtIndirectGeometry::updateBuffersJobsRequiredCurrentFrame ( void  ) const
virtual
virtual bool makVrv::DtIndirectGeometry::readyToRender ( const int  instanceIdInIndirect) const
virtual

can the instance be rendered this frame?

virtual bool makVrv::DtIndirectGeometry::hasInProgressInstanceMove ( ) const
virtual

does this indirect geometry have any instances in the process of moving? used by the indirect geometry grid node to force this geometry to render even when it is not in the frustum since it has instances that are in the process of moving.

virtual void makVrv::DtIndirectGeometry::addInProgressInstanceMove ( )
virtual

Add one to the count of instances in the process of moving.

virtual void makVrv::DtIndirectGeometry::subtractInProgressInstanceMove ( )
virtual

remove one from the count of instances in the process of moving.

virtual bool makVrv::DtIndirectGeometry::instanceEverAdded ( void  ) const
virtual

was an instance ever added? not the same as numInstances() (implemented as pass through to the internal instance container)

virtual int makVrv::DtIndirectGeometry::numValidInstances ( void  ) const
virtual

the number of (valid) instances (implemented as pass through to the internal instance container)

virtual bool makVrv::DtIndirectGeometry::addInstanceActual ( const DtIndirectGeometryInstance instance)
protectedvirtual

actually add the instances that were queued up via possibly multiple threads this happens as part of the culling call

virtual void makVrv::DtIndirectGeometry::setupShadersIfNecessary ( )
protectedvirtual

to initialize the shader files cache, because DtIndirectGeometry doesn't have direct access to DtDe yet (it could; but that would break the cdb plugin) lock myInternalsMutex before calling

virtual void makVrv::DtIndirectGeometry::setupDebugUniforms ( )
protectedvirtual

setup the uniforms needed to visualize debug information for indirect geometry lock myInternalsMutex before calling

virtual void makVrv::DtIndirectGeometry::installDefaultMaterial ( osg::StateSet *  ss)
protectedvirtual

install a default material on ourselves, so that there's no state leakage with regards ubos/osg::material because we are using materials encoded into an ssbo for indirect rendering

virtual void makVrv::DtIndirectGeometry::slot_reloadShaders ( )
protectedvirtual

slot for handling when the shaders are reloaded

virtual void makVrv::DtIndirectGeometry::updateIndicesCount ( const DtAggregateModelInfo modelInfo,
int  instanceContainerIndex 
)
protectedvirtual

internal method to update num of triangles that this geometry will render in the worst case (all lods across all models across all instances)

virtual void makVrv::DtIndirectGeometry::removeInstanceFromIndicesCount ( int  instanceContainerIndex)
protectedvirtual

remove a particular instances indicies from the count.

should be called when an instance is removed.

virtual void makVrv::DtIndirectGeometry::updateModelIdsToInstances ( int  modelId,
int  instanceId,
bool  add 
)
protectedvirtual

increment the number of instance for the model id (called internally when an instance is added)

virtual void makVrv::DtIndirectGeometry::drawFromCommandBuffer ( osg::RenderInfo &  renderInfo,
const DtIndirectViewParameters viewParameters,
const osg::Camera *  camera 
) const
protectedvirtual

setup and draw a command buffer

virtual void makVrv::DtIndirectGeometry::setMultiSwitchOnInstanceInInstanceContainer ( int  instanceContainerId,
osgSim::MultiSwitch *  clone,
osgSim::MultiSwitch *  master 
)
protectedvirtual

wrapper function for setting a switch state in the switch manager

virtual void makVrv::DtIndirectGeometry::setDofOnInstanceInInstanceContainer ( int  instanceContainerId,
osgSim::DOFTransform *  clone,
osgSim::DOFTransform *  master 
)
protectedvirtual

wrapper function for setting a dof state in the dof manager

virtual void makVrv::DtIndirectGeometry::updateInstancePositionOrientationAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

added actual functions are called when the instance is added to update the state that has been already set for that instance and pass it down to the managers.

update an instances position and orientation

virtual void makVrv::DtIndirectGeometry::updateInstanceSwitchesAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

update an instance's switches

virtual void makVrv::DtIndirectGeometry::updateInstanceSequencesAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

update an instance's sequences

virtual void makVrv::DtIndirectGeometry::setUvOffsetOnInstanceInInstanceContainer ( const int  instanceId,
const std::string &  annotation,
float  uOffset,
float  vOffset 
)
protectedvirtual

set the uv offset for a particular instance in the instance container.

virtual void makVrv::DtIndirectGeometry::updateInstanceUvOffsetsAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

set all the uv offsets that have been saved off from before the instance was added.

virtual void makVrv::DtIndirectGeometry::updateInstanceColorAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

set color that has been saved off before the instance was added

virtual void makVrv::DtIndirectGeometry::updateInstanceOtherData0AddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

set otherdata0 that has been saved off before the instance was added

virtual void makVrv::DtIndirectGeometry::updateInstanceVisibilityLightPointMaxDistanceActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

set visibility, light point max distance and other data 1 that has been saved off before the instance was added

virtual bool makVrv::DtIndirectGeometry::updateInstanceDeletionBeforeAddedActual ( const DtIndirectGeometryInstance instance)
protectedvirtual

check to see if this instance was marked for deletion before it was added

virtual void makVrv::DtIndirectGeometry::updateInstancesDofsAddedActual ( const DtIndirectGeometryInstance instance,
int  outInstanceIndex 
)
protectedvirtual

update an instance's dofs states

virtual void makVrv::DtIndirectGeometry::removeInstanceInInstanceContainer ( int  instanceContainerId)
protectedvirtual

remove an instance from the instance container

virtual void makVrv::DtIndirectGeometry::reloadShadersIfNecessary ( void  ) const
protectedvirtual

reload the shaders if necessary (marks a flag and they are reloaded before the next draw.

virtual void makVrv::DtIndirectGeometry::update ( const osg::FrameStamp *  frameStamp)
protectedvirtual

run update on managers that need to run during the update traversal.

Currenly only the dof manager. The dof manager needs to update so that the dof transforms are updated in time for the post update to update the observer if it is attached to a part.

virtual DtIndirectDrawComponent* makVrv::DtIndirectGeometry::drawComponent ( int  stateId) const
protectedvirtual

get the indirect draw component for a particular state

virtual bool makVrv::DtIndirectGeometry::hasLightPoints ( void  ) const
protectedvirtual

similar to the drawComponent above, but checks for the existence of GL_POINTS (light points) primitives

virtual void makVrv::DtIndirectGeometry::debugDrawIfNecessary ( osg::RenderInfo &  renderInfo,
const int  maxCommands,
const osg::Camera *  camera 
)
protectedvirtual
virtual void makVrv::DtIndirectGeometry::deleteDrawComponents ( void  )
protectedvirtual

delete the draw components

virtual void makVrv::DtIndirectGeometry::initDrawComponents ( void  )
protectedvirtual

initialize the draw components

virtual DtIndirectModelScalingAlgorithm makVrv::DtIndirectGeometry::scalingAlgorithm ( const DtOsgCullVisitorParameters params) const
protectedvirtual

get the scaling algorithm, given the cull parameters

virtual const DtOsgCullVisitorParameters* makVrv::DtIndirectGeometry::findCullVisitorParameters ( osg::RenderInfo &  renderInfo) const
protectedvirtual

get the cull visitor parameters based on the current render info.

Friends And Related Function Documentation

friend class DtIndirectGeometryCreator
friend
friend class DtIndirectVaoManager
friend

needed to give access to wait conditions and mutexes.

Member Data Documentation

osg::ref_ptr<DtIndirectGeometryRegistrar> makVrv::DtIndirectGeometry::myRegistrar
protected

pointer to the (external) registrar

tbb::concurrent_queue<DtIndirectGeometryInstance> makVrv::DtIndirectGeometry::myQueueInstancesToAdd
protected

addInstance may be called from multiple threads. Hence, concurrent queue

DtGpuCulling* makVrv::DtIndirectGeometry::myGpuCulling
protected
MapIntToInt makVrv::DtIndirectGeometry::myModelIDsToInstances
protected
MapIntToInt makVrv::DtIndirectGeometry::myInstancesToModelIds
protected
const bool makVrv::DtIndirectGeometry::myIsTerrainPatch
protected
DtIndirectEffectTexturesTemplate makVrv::DtIndirectGeometry::myEffectTexturesState
protected

the accumulated effect textures' state which represents the superset of all effect textures cumulatively used by the models of the instances of this Indirect geometry

unsigned int makVrv::DtIndirectGeometry::myNumTextCoordArrays
protected
DtSignalConnectionManager makVrv::DtIndirectGeometry::myConnections
protected
osg::Matrixd makVrv::DtIndirectGeometry::myLocalOriginTransformMatrix
protected
int makVrv::DtIndirectGeometry::myNumIndicesAcrossAllModels
protected

number of indices across all unique models across instances

std::map<int, int> makVrv::DtIndirectGeometry::myInstanceContainerIdToNumIndices
protected
bool makVrv::DtIndirectGeometry::myLastDebugIndirectColorOn
protected
bool makVrv::DtIndirectGeometry::myLastDebugIndirectColorByGeomIndex
protected
bool makVrv::DtIndirectGeometry::myLastMissingTextureColorOn
protected
DtIndirectVaoManager* makVrv::DtIndirectGeometry::myVaoManager
protected
DtInstanceContainer makVrv::DtIndirectGeometry::myInstanceContainer
protected

container for all the instances registered here

DtIndirectSwitchManager* makVrv::DtIndirectGeometry::mySwitchManager
protected
DtIndirectDofManager* makVrv::DtIndirectGeometry::myDofManager
protected
DtIndirectLodManager* makVrv::DtIndirectGeometry::myLodManager
protected
DtIndirectUvOffsetManager* makVrv::DtIndirectGeometry::myUvOffsetManager
protected
DtIndirectPerInstanceDataManager* makVrv::DtIndirectGeometry::myPerInstanceDataManager
protected
unsigned int makVrv::DtIndirectGeometry::myMutableLastRegistrarRebuildNumber
mutableprotected
unsigned int makVrv::DtIndirectGeometry::myMutableLastFrameTexturesUpdated
mutableprotected
bool makVrv::DtIndirectGeometry::myMutableShadersSetup
mutableprotected
bool makVrv::DtIndirectGeometry::myMutableShouldReloadShaders
mutableprotected

FIXME should be a static but currently the cull shader is per indirect.

MapIndirectIdToInstanceContainerId makVrv::DtIndirectGeometry::myMapIndirectIdToInstanceContainerId
protected
unsigned int makVrv::DtIndirectGeometry::myLastFrameUpdated
protected
const osg::Camera* makVrv::DtIndirectGeometry::myLastCamera
protected
boost::condition_variable makVrv::DtIndirectGeometry::myWaitCondition
protected
boost::mutex makVrv::DtIndirectGeometry::myWaitMutex
protected
boost::mutex makVrv::DtIndirectGeometry::myInternalsMutex
protected
osg::ref_ptr<DtIndirectGeometryInitMainThreadJob> makVrv::DtIndirectGeometry::myMainThreadInitJob
protected
osg::ref_ptr<DtIndirectGeometryUpdateBuffersMainThreadJob> makVrv::DtIndirectGeometry::myMainThreadUpdateBuffersJob
protected
osg::ref_ptr<DtIndirectGeometryUpdateMainThreadJob> makVrv::DtIndirectGeometry::myMainThreadUpdateJob
protected
DtIndirectFadeParameters makVrv::DtIndirectGeometry::myFadeParameters
protected
std::atomic<int> makVrv::DtIndirectGeometry::myRunningInstanceId
protected
MapInstanceIdToXform makVrv::DtIndirectGeometry::myMapInstanceIdToXform
protected

Structure to hold instance orientation until the instance is actually added.

MapInstanceToMapCloneToMasterMultiSwitches makVrv::DtIndirectGeometry::myMapInstanceToMapCloneToMasterMultiSwitches
protected

Structure to hold instance multi-switches' state until the instance is actually added Use the pair to hold the refs and the raw pointer to index into the map.

Maps an instance id and a master switch to the clone switch so we can get to the cloned switch which contains the state for that particular instance of the switch.

MapInstanceToMapCloneToMasterDofs makVrv::DtIndirectGeometry::myMapInstanceToMapCloneToMasterDofs
protected

Maps an instance id and a master dof to the clone dof so we can get to the cloned dof which contains the state for that particular instance of the dof.

MapInstanceToMapCloneToMasterSequences makVrv::DtIndirectGeometry::myMapInstanceToMapCloneToMasterSequences
protected

Maps an instance id and a master sequence to the clone sequence so we can get to the cloned sequence which contains the state for that particular instance of the sequence.

MapInstanceToMapAnnotationToUvOffsetData makVrv::DtIndirectGeometry::myMapInstanceToMapAnnotationToUvOffsetData
protected

Maps and instance id and a string to the current uv offset for this particular annotation.

MapInstanceToUvOffset makVrv::DtIndirectGeometry::myMapInstanceToUvOffset
protected

Maps and instance id to the current uv offset for all scrollable uv offsets.

std::unordered_map<int, Vector4_32> makVrv::DtIndirectGeometry::myMapInstanceToColor
protected

Maps an instance id to the color for that instance.

std::unordered_map<int, Vector4_32> makVrv::DtIndirectGeometry::myMapInstanceToOtherData0
protected

Maps an instance id to the other data0 for that instance.

std::unordered_map<int, bool> makVrv::DtIndirectGeometry::myMapInstanceToVisibility
protected

Maps an instance id to the visibility for that instance.

std::unordered_map<int, float> makVrv::DtIndirectGeometry::myMapInstanceToLightPointMaxDistance
protected

Maps an instance id to the light point max distance for that instance.

SetInstancesToDelete makVrv::DtIndirectGeometry::mySetInstancesIndirectIdsToDelete
protected
bool makVrv::DtIndirectGeometry::myManagesIndividualInstances
protected
DtDe& makVrv::DtIndirectGeometry::myDe
protected
osg::ref_ptr<osg::Uniform> makVrv::DtIndirectGeometry::myModelViewMatrixUniform
protected
osg::ref_ptr<osg::Uniform> makVrv::DtIndirectGeometry::myProjectionMatrixUniform
protected
DtIndirectDefaultDrawComponent* makVrv::DtIndirectGeometry::myDefaultDrawComponent
protected
DtIndirectLightPointDrawComponent* makVrv::DtIndirectGeometry::myLightPointDrawComponent
protected
DtIndirectDebugCullComponent* makVrv::DtIndirectGeometry::myIndirectDebugCullComponent
protected
osg::ref_ptr<osg::StateSet> makVrv::DtIndirectGeometry::myDefaultDrawStateSet
protected
osg::ref_ptr<osg::StateSet> makVrv::DtIndirectGeometry::myLightPointDrawStateSet
protected
bool makVrv::DtIndirectGeometry::myUpdateBuffersJobsRequiredCurrentFrame
protected

whether gpu buffers for instances are updated immediately

unsigned int makVrv::DtIndirectGeometry::myLastFrameUpdateTraversed
protected
int makVrv::DtIndirectGeometry::myNumInProgressInstanceMoves
protected
DtVirtualProgramCache* makVrv::DtIndirectGeometry::theVirtualProgramCache
staticprotected

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)