12 #include <osg/FrameStamp>
41 class DtIndirectGeometryRegistrar;
42 class DtInstanceContainer;
43 class DtOsgShaderFilesCache;
44 class DtIndirectCullProgram;
45 class DtCpuCullingHelper;
46 class DtOsgLightPointManager;
47 class DtGLDeleteObjectManager;
48 class DtCoreGlBufferCreator;
92 typedef std::set<osg::observer_ptr<const osg::Camera> >
CameraSet;
130 virtual void updateGpuBuffers(osg::RenderInfo& renderInfo);
134 virtual void modelIdsToNumInstancesChanged(
void);
137 virtual void updatePerInstancePerGeomBuffers(
const MapIntToInt& modelIdsToNumInstances,
const osg::Camera* camera);
141 ,
const osg::FrameStamp* frameStamp
146 ,
const osg::Camera* camera);
149 virtual void bindGpuOutputInstanceBuffer(
const osg::Camera* camera)
const;
152 virtual void unbindGpuOutputInstanceBuffer(
const osg::Camera* camera)
const;
159 virtual bool bindCommandBufferAndSsbos(
const DtGlBuffer* gpuDofTransformBuffer
163 ,
const osg::Camera* camera);
166 virtual void unbindCommandBufferAndSsbos(
const osg::Camera* camera);
172 virtual void bindGpuOutputInstanceBufferDebug(
const osg::Camera* camera)
const;
176 virtual void unbindGpuOutputInstanceBufferDebug(
const osg::Camera* camera)
const;
181 virtual bool bindIndirectThingsDebug(
const DtGlBuffer* gpuDofTransformBuffer,
const osg::Camera* camera);
184 virtual void unbindIndirectThingsDebug(
const osg::Camera* camera);
188 virtual bool useInstanceCount(
void)
const;
192 virtual int numDrawCommands(
const osg::Camera* camera)
const;
195 virtual void releaseGLObjects(osg::State* state)
const;
198 virtual void reloadShaders()
const;
201 virtual bool buffersInitializedForCamera(
const osg::Camera* camera)
const;
204 virtual unsigned int maxNumInstances(
void)
const;
210 virtual const std::vector<InstancesOffsetAndNumOfInstances>& instancesOffsetAndNumInstances(
void)
const;
213 virtual bool readyToUpdateAndGpuBuffersNeedUpdate()
const;
216 virtual bool gpuBuffersNeedUpdate()
const;
219 virtual bool textureUpdateDirty()
const;
222 virtual void setTextureUpdateDirty(
bool flag);
225 virtual bool perGeomInstanceDataDirty()
const;
228 virtual void setPerGeomInstanceDataDirty(
bool flag);
231 virtual bool instancesInvalidatedDirty()
const;
234 virtual void invalidateInstance(
int instanceId,
int offset,
int size);
237 virtual const DtGlBuffer* gpuInputPerGeomInstancesBuffer(
void)
const;
240 virtual const DtGlBuffer* gpuMaterialsBuffer()
const;
243 virtual void fillOutputInstances(std::vector<
DtVector4<int> >& outputInstances,
const osg::Camera* camera)
const;
249 virtual void setName(
const std::string& name);
252 virtual const std::string& name(
void)
const;
256 virtual void updateGpuInputPerGeomInstancesBufferByInvalidating();
261 virtual void updateGpuGeometrySpecificationsBuffer();
262 virtual void updateGpuMaterialsBuffer();
263 virtual void updateGpuInputPerGeomInstancesBuffer();
264 virtual void updateGpuLightPointBuffers();
265 virtual void updateGpuIndirectBuffersInstanceCount(
const MapIntToInt& modelIdsToNumInstances,
const osg::Camera* camera);
266 virtual void updateGpuIndirectBuffersNonInstanceCount(
const MapIntToInt& modelIdsToNumInstances,
const osg::Camera* camera);
267 virtual void clearGpuIndirectBuffer(
const osg::Camera* camera);
268 virtual void clearStateIdCommandCountBuffer();
273 virtual void updateGpuTexturesBuffer(osg::RenderInfo& renderInfo);
276 virtual void updateInstancesOffsetAndInstances(
const MapIntToInt& modelIdsToNumInstances);
279 virtual void updateInstancesOffsetAndInstancesBuffer(
void);
282 virtual void updateStateIdToMaxNumCommands(
const MapIntToInt& modelIdsToNumInstances);
285 virtual void updateStateIdToMaxNumCommandsBuffer(
void);
288 virtual bool checkSpecBuffersOk(
void)
const;
294 virtual void deleteBuffers(
void);
301 virtual void flushCameraSpecificBuffers();
304 virtual void flushSingleCameraSpecificBufferMap(
CameraToBufferMap& cameraToBufferMap);
307 virtual void flushSingleCameraSet(
CameraSet& cameraSet);
422 static const std::string& theClassName();
unsigned int myMaxNumInstancesPreCulling
Definition: DtGpuCulling.h:361
Contains the DtCullShaderConfig class declaration.
DtCoreGlBufferCreator & myDtCoreGlBufferCreator
Definition: DtGpuCulling.h:396
bool myPerGeomInstanceDataDirty
Definition: DtGpuCulling.h:315
Manager to delete GLBuffer in the main thread.
Definition: DtGlDeleteObjectManager.h:33
DtIndirectGeometryRegistrar * myRegistrar
Definition: DtGpuCulling.h:310
DtMaterial class declaration.
DtGlBuffer * myGpuInstancesOffsetAndNumInstancesBuffer
Definition: DtGpuCulling.h:359
Virtual base class.
Definition: DtVirtualBaseClass.h:19
const DtInstanceContainer & myInstanceContainer
Definition: DtGpuCulling.h:311
Contains makVrv::DtIndirectInstancesInvalidated class.
DtCullShaderConfig myCullShaderConfig
Definition: DtGpuCulling.h:356
DtOsgLightPointManager & myLightPointManager
Definition: DtGpuCulling.h:377
std::vector< InstancesOffsetAndNumOfInstances > myInstancesOffsetAndNumInstances
Definition: DtGpuCulling.h:358
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
creator for DtCoreGlBuffer
Definition: DtCoreGlBuffer.h:58
This class is a component of the DtIndirectGeometry It inputs are: -> the instances registered with Dt...
Definition: DtGpuCulling.h:64
int myOffset
Definition: DtGpuCulling.h:84
Indirect geometry can have multiple models and their corresponding ids registered in it...
Definition: DtIndirectGeometryRegistrar.h:106
voidpf void uLong size
Definition: ioapi.h:39
Contains makVrv::DtFirstTextureStreamedModelAndIndexTracker class.
int myOffset
Definition: DtGpuCulling.h:71
creator for DtGpuCulling
Definition: DtGpuCulling.h:405
DtGlBuffer * myGpuStateIdToMaxNumCommandsBuffer
Definition: DtGpuCulling.h:370
std::vector< StateIdOffsetAndMaxCommands > VectorStateIdOffsetAndMaxCommands
Definition: DtGpuCulling.h:88
DtGeometrySpecification class declaration.
bool operator==(const InstancesOffsetAndNumOfInstances &rhs) const
Definition: DtGpuCulling.h:74
VectorInts myGeomSpecIndexToCommandIndex
Definition: DtGpuCulling.h:374
unsigned int myLastNumUniqueGeometries
Definition: DtGpuCulling.h:385
DtIndirectInstancesInvalidated myInstancesInvalidated
Definition: DtGpuCulling.h:316
shader configuration storage class.
Definition: DtCullShaderConfig.h:19
DtModelIdAndStreamedBytesTracker mySpecBufferTracker
Definition: DtGpuCulling.h:389
DtOsgLightPointManager registers LightPoint nodes so their TBO can be created and updated in a single...
Definition: DtOsgLightPointManager.h:105
std::map< int, int > MapIntToInt
Definition: DtCommonTypes.h:25
DtGlBuffer * myGpuInputPerGeomInstancesBuffer
contains switch states/ lod info
Definition: DtGpuCulling.h:314
DtFirstTextureStreamedModelAndIndexTracker myFirstTextureStreamedModelAndIndexTracker
Keep track of the first model and what index to start using bindless textures.
Definition: DtGpuCulling.h:383
CameraToBufferMap myMutableGpuOutputInstancesBuffers
The re-distributed/culled/switched/lod'ed instances (a subset of the input instances) ...
Definition: DtGpuCulling.h:339
Contains the DtIndirectEffectTexturesTemplate class declaration.
DtGlBuffer * myGpuSpecIndexToCommandIndexBuffer
Definition: DtGpuCulling.h:375
DtIndirectEffectTexturesTemplate myCurrentEffectTextureState
Definition: DtGpuCulling.h:397
CameraToBufferMap myMutableGpuOutputInstancesBuffersDebug
The re-distributed switched/lod'ed instances but not culled out via cull shader for debugging...
Definition: DtGpuCulling.h:347
holds a set of the instances that need to be invalidated in the instance buffers
Definition: DtIndirectInstancesInvalidated.h:20
Contains makVrv::DtVirtualBaseClass class.
Definition: DtModelIdAndStreamedBytesTracker.h:18
unsigned int myMaxNumInstances
Definition: DtGpuCulling.h:362
unsigned int myLastNumEffectTextures
Definition: DtGpuCulling.h:384
std::vector< int > VectorInts
Definition: DtCommonTypes.h:20
handles the running of the compute shader pass for indirect culling, LODing and switches ...
Definition: DtIndirectCullProgram.h:43
DtGlBuffer * myGpuMaterialsBuffer
The spec buffer containing Materials for all the models/lods of the passed in instances.
Definition: DtGpuCulling.h:327
structure for holding an offset of an instance type (model id), and number of those instances ...
Definition: DtGpuCulling.h:69
4 dimensional vector
Definition: DtMath.h:22
CameraToBufferMap myGpuIndirectBuffersDebug
The indirect command buffer for debugging culling.
Definition: DtGpuCulling.h:350
DtIndirectCullProgram * myCullProgram
Definition: DtGpuCulling.h:354
CameraToBufferMap myMutableGpuIndirectBuffers
these are mutable so the [] operator on the maps can be used in const functions The indirect command ...
Definition: DtGpuCulling.h:336
unsigned int myMaxNumLightSources
Definition: DtGpuCulling.h:364
std::map< osg::observer_ptr< const osg::Camera >, DtGlBuffer * > CameraToBufferMap
Definition: DtGpuCulling.h:91
A generic OpenGL buffer.
Definition: DtGlBuffer.h:27
int myNumOfInstances
Definition: DtGpuCulling.h:72
CameraToBufferMap myMutableGpuOutputInstanceOffsetInPerInstanceDataBuffers
The re-distributed/culled/switched/lod'ed instances' offset into the per instance data buffer...
Definition: DtGpuCulling.h:343
DtModelIdAndStreamedBytesTracker myMaterialBufferTracker
Definition: DtGpuCulling.h:388
DtGlBuffer * myGpuStateIdToCommandCountBuffer
Definition: DtGpuCulling.h:371
CameraToBufferMap myGpuLightSourceIndexOutputBuffers
Definition: DtGpuCulling.h:352
The class that is used to communicate the camera viewing parameters to the DtICullingAndLOD interface...
Definition: DtIndirectViewParameters.h:26
DtDe & myDe
Definition: DtGpuCulling.h:424
std::vector< DtGeometrySpecification > myGeometrySpecifications
c++ buffer that holds the same info
Definition: DtGpuCulling.h:323
int myNumGeometries
Definition: DtGpuCulling.h:392
std::string myName
Definition: DtGpuCulling.h:399
DtGlBuffer * myGpuGeometrySpecificationsBuffer
The spec buffer containing GeometrySpecifications for all the models/lods of the passed in instances...
Definition: DtGpuCulling.h:320
DtIndirectMaterialVector myMaterials
c++ buffer that holds the same info
Definition: DtGpuCulling.h:330
DtGlBuffer * myGpuTexturesBuffer
Definition: DtGpuCulling.h:332
bool myTextureUpdateDirty
Definition: DtGpuCulling.h:386
Contains DLL export macros.
DtDe & myDe
Definition: DtGpuCulling.h:379
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
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
int myStreamedGeometryOffsetIdx
Definition: DtGpuCulling.h:391
Definition: DtFirstTextureStreamedModelAndIndexTracker.h:16
CameraSet myModelIdsToNumInstancesChanged
Definition: DtGpuCulling.h:394
std::set< osg::observer_ptr< const osg::Camera > > CameraSet
Definition: DtGpuCulling.h:92
voidpf uLong offset
Definition: ioapi.h:42
Contains makVrv::DtIndirectViewParameters class.
Class that allows you to abstractly register effect texture types the effect texture types are client...
Definition: DtIndirectEffectTexturesTemplate.h:40
VectorStateIdOffsetAndMaxCommands myStateIdToMaxNumCommands
Definition: DtGpuCulling.h:367
std::vector< Material > DtIndirectMaterialVector
Each model type can have a number of geometries, each with an own material.
Definition: DtMaterial.h:46
int myMaxCommands
Definition: DtGpuCulling.h:85
Contains makVrv::DtModelIdAndStreamedBytesTracker class.
structure for holding an offset of a command of a given type (state id) and the number of commands of...
Definition: DtGpuCulling.h:82