25 #include <osg/ref_ptr>
26 #include <osg/observer_ptr>
27 #include <osgSim/DOFTransform>
29 #include <unordered_map>
41 struct PerGeomInstance;
42 class DtInstanceContainer;
44 class DtOsgShaderFilesCache;
45 class DtIndirectViewParameters;
47 class DtIndirectDofProgram;
48 class DtIndirectClearBufferProgram;
49 class DtGlDeleteObjectManager;
69 #define CPU_SIDE_COMPILATION 1
70 #include <../data/shaders/indirect/DofInfoBuffer.h>
71 #undef CPU_SIDE_COMPILATION
104 ,
float modelRadius);
107 virtual void removeDofPaths(
int instanceId);
111 virtual bool setDof(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId,
int flags);
114 virtual bool setDofAnimationFlags(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId
115 ,
int animationFlags);
118 virtual bool setDofTranslation(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId
123 virtual bool setDofOrientation(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId
126 ,
int animationFlags);
129 virtual bool setDofOrientation(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId
130 ,
const Vector3_64& hprVel,
bool forceUpdate,
int animationFlags);
133 virtual void setDofTransform(IndirectDofInfo& info,
const osgSim::DOFTransform* clone);
136 virtual void setInstanceXform(
const Matrix4_32& xform,
int instanceId);
139 virtual Matrix4_32 instanceXform(
int instanceId)
const;
142 virtual void update(
const osg::FrameStamp* frameStamp);
146 virtual void setPureSignalBasedDofs(
bool val);
150 virtual bool pureSignalBasedDofs(
void)
const;
153 virtual void reloadShaders()
const;
156 virtual void releaseGLObjects(osg::State* state)
const;
162 virtual const DtGlBuffer* gpuDofTransformBuffer(
const osg::Camera* camera)
const;
166 virtual const DtGlBuffer* gpuDofModelScaleBuffer(
const osg::Camera* camera)
const;
171 virtual void addDof(
int perGeomInstanceIndex,
const NodeDofInfoPair& dofChildPair,
int instanceId,
int baseParentDofIndex,
const int dofInfoId
172 ,
const float modelScale
173 ,
const float modelRadius);
176 virtual void updateAnimatingDofs(
const osg::FrameStamp* frameStamp);
179 virtual void deleteBuffers(
void);
182 virtual void tearDownBuffers(
void)
const;
185 virtual void updateDofBuffersIfNecessary();
189 virtual void updateDofs();
194 virtual bool findDofInfoIndex(osgSim::DOFTransform* clone, osgSim::DOFTransform* master,
int instanceId
201 virtual void printInfo();
206 virtual void flushCameraSpecificBuffers(
void);
210 virtual void createCameraSpecificBuffersIfNeeded(
const osg::Camera* camera);
213 virtual void flushCameraSpecificBuffersInMap(std::map<osg::observer_ptr<const osg::Camera>,
DtGlBuffer*>& mapToEraseFrom);
244 void operator()(IndirectDofInfo& info);
252 bool operator()(
const IndirectDofInfo& info)
const;
VectorIndirectDofInfos myVectorIndirectDofInfos
Definition: DtIndirectDofManager.h:257
std::unordered_map< int, DtIndirectAnimatingDof * > MapInfoIdxToAnimatingDof
Definition: DtIndirectDofManager.h:77
parent manager class for all Indirect managers. Managers handle information about a specific feature ...
Definition: DtIndirectManager.h:26
bool myPureSignalBasedDofs
Definition: DtIndirectDofManager.h:216
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Contains makVrv::DtIndirectDofInfo struct.
Contains makVrv::DtIndirectManager class.
osg::observer_ptr< osg::Node > NodeObserverPtr
Definition: DtIndirectDofManager.h:73
voidpf void uLong size
Definition: ioapi.h:39
MapNodeToMapInstanceIdToDofInfoIndex myMapNodeToMapInstanceIdToDofInfoIndex
Definition: DtIndirectDofManager.h:238
CameraToBufferMap myGpuDofModelScaleBufferMap
The output buffer containing the computed model scale for each geom instance. This is used by the lod...
Definition: DtIndirectDofManager.h:232
CameraToBufferMap myGpuDofTransformBufferMap
The buffer containing the transform for each instance to know where it should be drawn.
Definition: DtIndirectDofManager.h:228
Wrapper class for wrapping osgSim::DOFTransform animations. Allows to set a translation & translation...
Definition: DtIndirectAnimatingDof.h:34
std::map< osg::ref_ptr< osgSim::DOFTransform >, MapInstanceIdToDofInfo > MapNodeToMapInstanceIdToDofInfoIndex
Definition: DtIndirectDofManager.h:80
std::pair< NodeObserverPtr, DtIndirectDofInfo > NodeDofInfoPair
Definition: DtIndirectDofManager.h:74
DtGlDeleteObjectManager & myGlDeleteObjectManager
Definition: DtIndirectDofManager.h:263
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
std::unordered_map< int, int > MapInstanceIdToDofInfo
Definition: DtIndirectDofManager.h:79
std::deque< NodeDofInfoPair > DequeNodeDofInfoPairs
Definition: DtIndirectDofManager.h:76
std::unordered_map< int, int > myInstanceToXformBaseIndex
Definition: DtIndirectDofManager.h:259
DtGlBuffer * myGpuDofInfoBuffer
The buffer containing all the dof infos for all instances managed by this manager.
Definition: DtIndirectDofManager.h:223
MapInfoIdxToAnimatingDof myAnimatingDofs
Definition: DtIndirectDofManager.h:261
const char * creatorTypeName< DtIndirectDofManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectDofManager.h:59
DtIndirectDofProgram * myMutableDofProgram
Definition: DtIndirectDofManager.h:218
handles the dof nodes for all the indirect geometry. Sets up the default state of osg::Dof...
Definition: DtIndirectDofManager.h:65
singleton class that wraps indirect dof gpu shader.
Definition: DtIndirectDofProgram.h:34
DtReusableMemoryVector< IndirectDofInfo, IndirectDofInfoInvalidator, IndirectDofInfoRemovalPredicate > VectorIndirectDofInfos
Definition: DtIndirectDofManager.h:256
unsigned int myMaxPerGeomInstanceId
Definition: DtIndirectDofManager.h:236
Contains makVrv::DtIndirectAnimatingDof class.
A generic OpenGL buffer. This can be: -> a vertex buffer -> an index buffer -> a shader storage buffe...
Definition: DtGlBuffer.h:29
The class that is used to communicate the camera viewing parameters to the DtICullingAndLOD interface...
Definition: DtIndirectViewParameters.h:26
Base class to provide boost signal/slot management.
DtIndirectClearBufferProgram * myMutableBufferClearProgram
Definition: DtIndirectDofManager.h:220
Contains makVrv::DtReusableMemoryVector class.
removal predicate to know which dof infos belong to the same instance
Definition: DtIndirectDofManager.h:248
Vaos are OpenGL context specific. They need to be deleted in the context they are created in...
Definition: DtGlDeleteObjectManager.h:58
This class clears buffers using compute shader Theoretically, there are performance gains to be achie...
Definition: DtIndirectClearBufferProgram.h:33
friend DtIndirectDofManagerCreator
only creator can create
Definition: DtIndirectDofManager.h:84
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
std::map< osg::observer_ptr< const osg::Camera >, DtGlBuffer * > CameraToBufferMap
Definition: DtIndirectDofManager.h:225
Helper class to manage instances This class allows you to add a DtInstance_64 Internally, however it stores this as a DtInstance (which the GPU can directly read)
Definition: DtInstanceContainer.h:31
initializer/invalidator for dof infos
Definition: DtIndirectDofManager.h:241
std::pair< NodeObserverPtr, int > NodeDofInfoIndexPair
Definition: DtIndirectDofManager.h:75
DtVirtualBaseClassCreator< DtIndirectDofManager, DtInstanceContainer & > DtIndirectDofManagerCreator
creator
Definition: DtIndirectDofManager.h:52
const int myInstanceIdToRemove
Definition: DtIndirectDofManager.h:253
bool myMutableDofInfoDirty
Definition: DtIndirectDofManager.h:234