VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions
makVrv::DtGpuCulling Class Reference

This class is a component of the DtIndirectGeometry It inputs are: -> the instances registered with DtIndirectGeometry -> the viewing parameters (view matrix, projection matrix, etc) -> the indirect registrar (so that it can generate gpu data for -> the models of the instances from the interim data accessible -> via the registrar It outputs are: -> Tndirect command buffer -> The count of the indirect commands -> The input instances shuffled around/culled/lod'ed reflecting -> their order within the indirect command buffer generated -> It will also (optionally) do culling and lod.

Classes

struct  InstancesOffsetAndNumOfInstances
 
struct  StateIdOffsetAndMaxCommands
 

Public Types

typedef std::vector
< StateIdOffsetAndMaxCommands
VectorStateIdOffsetAndMaxCommands
 
typedef std::map
< osg::observer_ptr< const
osg::Camera >, DtGlBuffer * > 
CameraToBufferMap
 
typedef std::set
< osg::observer_ptr< const
osg::Camera > > 
CameraSet
 

Public Member Functions

virtual ~DtGpuCulling ()
 
virtual void setRegistrar (DtIndirectGeometryRegistrar *registrar)
 
virtual void setRegistrarInvalid (void)
 
virtual void setDebug (bool debug)
 
virtual const DtCullShaderConfigcullShaderConfig (void) const
 
virtual void updateGpuBuffers (osg::RenderInfo &renderInfo)
 
virtual void modelIdsToNumInstancesChanged (void)
 
virtual void updatePerInstancePerGeomBuffers (const MapIntToInt &modelIdsToNumInstances, const osg::Camera *camera)
 
virtual void doCulling (const DtIndirectViewParameters &viewParameters, const osg::FrameStamp *frameStamp, const DtGlBuffer *gpuLodVisibleBuffer, const DtGlBuffer *gpuDofTransformBuffer, const DtGlBuffer *gpuSwitchStateBuffer, const DtGlBuffer *gpuPerInstanceDataBuffer, const osg::Camera *camera, bool &outputInstanceBufferChanged)
 
virtual bool bindGpuOutputInstanceBuffersWithAddressRange (const osg::Camera *camera) const
 
virtual bool bindCommandBufferAndSsbos (const DtGlBuffer *gpuDofTransformBuffer, const DtGlBuffer *gpuDofModelScaleBuffer, const DtGlBuffer *gpuUvOffsetBuffer, const DtGlBuffer *gpuPerInstanceDataBuffer, const osg::Camera *camera)
 
virtual void unbindCommandBufferAndSsbos (const osg::Camera *camera)
 
virtual void bindGpuOutputInstanceBufferDebug (const osg::Camera *camera) const
 
virtual void unbindGpuOutputInstanceBufferDebug (const osg::Camera *camera) const
 
virtual bool bindIndirectThingsDebug (const DtGlBuffer *gpuDofTransformBuffer, const osg::Camera *camera)
 
virtual void unbindIndirectThingsDebug (const osg::Camera *camera)
 
virtual bool useInstanceCount (void) const
 
virtual int numDrawCommands (const osg::Camera *camera) const
 
virtual void releaseGLObjects (osg::State *state) const
 
virtual void reloadShaders () const
 
virtual bool buffersInitializedForCamera (const osg::Camera *camera) const
 
virtual unsigned int maxNumInstances (void) const
 
virtual const
VectorStateIdOffsetAndMaxCommands
stateIdOffsetAndMaxCommands (void) const
 
virtual const std::vector
< InstancesOffsetAndNumOfInstances > & 
instancesOffsetAndNumInstances (void) const
 
virtual bool readyToUpdateAndGpuBuffersNeedUpdate () const
 
virtual bool gpuBuffersNeedUpdate () const
 
virtual bool textureUpdateDirty () const
 
virtual void setTextureUpdateDirty (bool flag)
 
virtual bool perGeomInstanceDataDirty () const
 
virtual void setPerGeomInstanceDataDirty (bool flag)
 
virtual bool instancesInvalidatedDirty () const
 
virtual void invalidateInstance (int instanceId, int offset, int size)
 
virtual const DtGlBuffergpuInputPerGeomInstancesBuffer (void) const
 
virtual const DtGlBuffergpuMaterialsBuffer () const
 
virtual void fillOutputInstances (std::vector< DtVector4< int > > &outputInstances, const osg::Camera *camera) const
 
virtual const
DtIndirectEffectTexturesTemplate
currentEffectTexturesState () const
 
virtual void setName (const std::string &name)
 
virtual const std::string & name (void) const
 

Static Public Member Functions

static bool setUpOutputFormatAndBindings ()
 
static void unsetUpOutputFormatAndBindings ()
 

Public Attributes

friend DtGpuCullingCreator
 

Protected Member Functions

 DtGpuCulling (DtDe &de, DtInstanceContainer &container, const DtCullShaderConfig &)
 
virtual void updateGpuTexturesBuffer (const osg::RenderInfo &renderInfo)
 
virtual void updateInstancesOffsetAndInstances (const MapIntToInt &modelIdsToNumInstances)
 
virtual void updateInstancesOffsetAndInstancesBuffer (void)
 
virtual void updateStateIdToMaxNumCommands (const MapIntToInt &modelIdsToNumInstances)
 
virtual void updateStateIdToMaxNumCommandsBuffer (void)
 
virtual bool checkSpecBuffersOk (void) const
 
virtual void releaseCameraToBufferMap (DtGlDeleteObjectManager &deleteManager, const CameraToBufferMap &cameraToBufferMap, bool untrackResident=false) const
 
virtual void deleteBuffers (void)
 
virtual void deleteCameraToBufferMap (CameraToBufferMap &cameraToBufferMap)
 
virtual void flushCameraSpecificBuffers ()
 
virtual void flushSingleCameraSpecificBufferMap (CameraToBufferMap &cameraToBufferMap)
 
virtual void flushSingleCameraSet (CameraSet &cameraSet)
 
virtual void addHandleToDelete (DtGlDeleteObjectManager &deleteManager, DtGlBuffer *buffer, bool untrackResident=false) const
 
virtual void setTexture (GLuint64 &textureToSet, GLuint textureID)
 
virtual void incrementUsersAndLoadIfNecessary (DtIndirectModelInfo *info)
 
virtual void decrementUsersAndUnLoadIfNecessary ()
 
virtual void updateGpuInputPerGeomInstancesBufferByInvalidating ()
 
virtual void updateGpuGeometrySpecificationsBuffer ()
 
virtual void updateGpuMaterialsBuffer ()
 
virtual void updateGpuInputPerGeomInstancesBuffer ()
 
virtual void updateGpuLightPointBuffers ()
 
virtual void updateGpuIndirectBuffersInstanceCount (const MapIntToInt &modelIdsToNumInstances, const osg::Camera *camera)
 
virtual void updateGpuIndirectBuffersNonInstanceCount (const MapIntToInt &modelIdsToNumInstances, const osg::Camera *camera)
 
virtual void clearGpuIndirectBuffer (const osg::Camera *camera)
 
virtual void clearStateIdCommandCountBuffer ()
 
virtual void clearLightSourceIndexOutputBuffer (const osg::Camera *osgCamera, unsigned int maxNumLightSources)
 

Protected Attributes

DtIndirectGeometryRegistrarmyRegistrar
 
bool myRegistrarValid
 
const DtInstanceContainermyInstanceContainer
 
DtGlBuffermyGpuInputPerGeomInstancesBuffer
 
bool myPerGeomInstanceDataDirty
 
DtIndirectInstancesInvalidated myInstancesInvalidated
 
std::vector
< DtGeometrySpecification > 
myMutableGeometrySpecifications
 
DtGlBuffermyGpuGeometrySpecificationsBuffer
 
std::vector
< DrawElementsIndirectBindlessCommandNV > 
myMutableBindlessIndexAndVertexBuffers
 
DtGlBuffermyBindlessIndexAndVertexBuffersBuffer
 
DtGlBuffermyGpuMaterialsBuffer
 
DtIndirectMaterialVector myMaterials
 
DtGlBuffermyGpuTexturesBuffer
 
CameraToBufferMap myMutableGpuIndirectBuffersBindless
 
CameraToBufferMap myMutableGpuOutputInstancesBuffersDebug
 
CameraToBufferMap myGpuIndirectBuffersDebug
 
CameraToBufferMap myGpuLightSourceIndexOutputBuffers
 
DtIndirectCullProgrammyMutableCullProgram
 
const DtCullShaderConfig myCullShaderConfig
 
std::vector
< InstancesOffsetAndNumOfInstances
myInstancesOffsetAndNumInstances
 
DtGlBuffermyGpuInstancesOffsetAndNumInstancesBuffer
 
unsigned int myMaxNumInstancesPreCulling
 
unsigned int myMaxNumInstances
 
unsigned int myMaxNumLightSources
 
VectorStateIdOffsetAndMaxCommands myStateIdToMaxNumCommands
 
DtGlBuffermyGpuStateIdToMaxNumCommandsBuffer
 
DtGlBuffermyGpuStateIdToCommandCountBuffer
 
VectorInts myGeomSpecIndexToCommandIndex
 
DtGlBuffermyGpuSpecIndexToCommandIndexBuffer
 
DtOsgLightPointManagermyLightPointManager
 
DtDemyDe
 
DtFirstTextureStreamedModelAndIndexTracker myFirstTextureStreamedModelAndIndexTracker
 
unsigned int myLastNumEffectTextures
 
unsigned int myLastNumUniqueGeometries
 
bool myTextureUpdateDirty
 
DtModelIdAndStreamedBytesTracker myMaterialBufferTracker
 
DtModelIdAndStreamedBytesTracker myMutableSpecBufferTracker
 
int myStreamedGeometryOffsetIdx
 
int myNumGeometries
 
CameraSet myModelIdsToNumInstancesChanged
 
DtCoreGlBufferCreatormyDtCoreGlBufferCreator
 
DtIndirectEffectTexturesTemplate myCurrentEffectTextureState
 
std::string myName
 
DtIndirectGlTextureResidencyManagermyGlTextureResidencyManager
 
CameraToBufferMap myMutableGpuOutputInstancesBuffers
 
CameraToBufferMap myMutableGpuOutputInstanceOffsetInPerInstanceDataBuffers
 
DtIndirectClearBufferProgrammyMutableClearBufferProgram
 
std::unordered_set
< DtIndirectModelInfo * > 
myModelsBeingUsed
 

Static Protected Attributes

static const int theGpuOutputInstanceBufferIndex
 
static const int theGpuOutputInstanceOffsetInPerInstanceDataBufferIndex
 
static const int theGpuOutputInstanceBufferDebugIndex
 

Private Member Functions

 DtGpuCulling ()=delete
 
 DtGpuCulling (const DtGpuCulling &other)=delete
 
DtGpuCullingoperator= (const DtGpuCulling &other)=delete
 

Member Typedef Documentation

typedef std::map<osg::observer_ptr<const osg::Camera>, DtGlBuffer*> makVrv::DtGpuCulling::CameraToBufferMap
typedef std::set<osg::observer_ptr<const osg::Camera> > makVrv::DtGpuCulling::CameraSet

Constructor & Destructor Documentation

virtual makVrv::DtGpuCulling::~DtGpuCulling ( )
virtual

destructor

makVrv::DtGpuCulling::DtGpuCulling ( DtDe de,
DtInstanceContainer container,
const DtCullShaderConfig  
)
protected

CTOR. only creator can create.

makVrv::DtGpuCulling::DtGpuCulling ( )
privatedelete

not allowed

makVrv::DtGpuCulling::DtGpuCulling ( const DtGpuCulling other)
privatedelete

not allowed

Member Function Documentation

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

not allowed

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

set the registrar

virtual void makVrv::DtGpuCulling::setRegistrarInvalid ( void  )
virtual

invalidate the registrar. happens for gs cells

virtual void makVrv::DtGpuCulling::setDebug ( bool  debug)
virtual

set the compute shader to debug

virtual const DtCullShaderConfig& makVrv::DtGpuCulling::cullShaderConfig ( void  ) const
virtual

get the compute shader config

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

updateGpuBuffers outInstanceTransformsUpdated indicates whether instance transforms that were marked dirty were sent to the GPU. This may not always happen with a call to updateGpuBuffers.

virtual void makVrv::DtGpuCulling::modelIdsToNumInstancesChanged ( void  )
virtual

indicate to the culling that model ids to num instances changed so that internal maps get updated

virtual void makVrv::DtGpuCulling::updatePerInstancePerGeomBuffers ( const MapIntToInt modelIdsToNumInstances,
const osg::Camera *  camera 
)
virtual

update the buffers that are needed to be correct every frame

virtual void makVrv::DtGpuCulling::doCulling ( const DtIndirectViewParameters viewParameters,
const osg::FrameStamp *  frameStamp,
const DtGlBuffer gpuLodVisibleBuffer,
const DtGlBuffer gpuDofTransformBuffer,
const DtGlBuffer gpuSwitchStateBuffer,
const DtGlBuffer gpuPerInstanceDataBuffer,
const osg::Camera *  camera,
bool outputInstanceBufferChanged 
)
virtual

Do the culling (view frustum, lod, switch)

Parameters
outputInstanceBufferChangedindicates whether output instance buffers that get get bound were determined to need resize and were resized, and because of that the gpu address also likely changed (which should trigger an external re-generation of the vao which uses these)
static bool makVrv::DtGpuCulling::setUpOutputFormatAndBindings ( )
static

bind the output instance buffer

static void makVrv::DtGpuCulling::unsetUpOutputFormatAndBindings ( )
static

unbind the output instance buffer format and bindings

virtual bool makVrv::DtGpuCulling::bindGpuOutputInstanceBuffersWithAddressRange ( const osg::Camera *  camera) const
virtual

For bindless, bind the output buffers from the culling with buffer address range This is because in bindless, the main buffers are via indirect bindless call (which is internally a buffer address range bind). You can't mix and match regular buffer binds and vertex buffer unified memory style (buffer address range)

virtual bool makVrv::DtGpuCulling::bindCommandBufferAndSsbos ( const DtGlBuffer gpuDofTransformBuffer,
const DtGlBuffer gpuDofModelScaleBuffer,
const DtGlBuffer gpuUvOffsetBuffer,
const DtGlBuffer gpuPerInstanceDataBuffer,
const osg::Camera *  camera 
)
virtual

bind the indirect command buffer and the count buffer returns false if handle is 0. Can happen if the buffer hasn't been re-created yet (e.g. when the context is deleted and recreated), depending on the job/frame syc this can happen a few frames later

virtual void makVrv::DtGpuCulling::unbindCommandBufferAndSsbos ( const osg::Camera *  camera)
virtual

unbind the indirect command buffer and the count buffer

virtual void makVrv::DtGpuCulling::bindGpuOutputInstanceBufferDebug ( const osg::Camera *  camera) const
virtual

Bind the buffer containing the output instances of the cull shader with debugging. This is the buffer representing the non-switched otu & non-loded out instances (all non view frustum culled instances).

virtual void makVrv::DtGpuCulling::unbindGpuOutputInstanceBufferDebug ( const osg::Camera *  camera) const
virtual

Unbind the buffer containing the output instances of the cull shader with debugging.

virtual bool makVrv::DtGpuCulling::bindIndirectThingsDebug ( const DtGlBuffer gpuDofTransformBuffer,
const osg::Camera *  camera 
)
virtual

bind the debug indirect command buffer, dof transform buffer and the specs buffer This allows us to draw all instances that are not switched out, lod'ed out (all non view frustum culled instances)

virtual void makVrv::DtGpuCulling::unbindIndirectThingsDebug ( const osg::Camera *  camera)
virtual

unbind the debug indirect command buffer, dof transform buffer and the specs buffer

virtual bool makVrv::DtGpuCulling::useInstanceCount ( void  ) const
virtual

whether we are optimizing for shared models (useInstanceCount()=true) or unique models (useInstanceCount()=false), across instances

virtual int makVrv::DtGpuCulling::numDrawCommands ( const osg::Camera *  camera) const
virtual

The number of draw commands generated. Is a value between [0, DtIndirectGeoUtils::getMaxDrawCountNoCullingNoLod()], inclusive.

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

release the GL objects for the GpuCulling compute shader

virtual void makVrv::DtGpuCulling::reloadShaders ( ) const
virtual

destroy the cull program and shader if they exists so they can be recreated next frame.

virtual bool makVrv::DtGpuCulling::buffersInitializedForCamera ( const osg::Camera *  camera) const
virtual

check to see if the buffers for this camera have been initialized.

virtual unsigned int makVrv::DtGpuCulling::maxNumInstances ( void  ) const
virtual

get the max number of instances that can possibly be rendered if none are culled out.

virtual const VectorStateIdOffsetAndMaxCommands& makVrv::DtGpuCulling::stateIdOffsetAndMaxCommands ( void  ) const
virtual

get the map of the state id to their offset/number

virtual const std::vector<InstancesOffsetAndNumOfInstances>& makVrv::DtGpuCulling::instancesOffsetAndNumInstances ( void  ) const
virtual

access the instances offset and num of instances map

virtual bool makVrv::DtGpuCulling::readyToUpdateAndGpuBuffersNeedUpdate ( ) const
virtual

helper function to decide if a job should be launched

virtual bool makVrv::DtGpuCulling::gpuBuffersNeedUpdate ( ) const
virtual

is anything in the buffers dirty?

virtual bool makVrv::DtGpuCulling::textureUpdateDirty ( ) const
virtual

are there textures that still need updating.

virtual void makVrv::DtGpuCulling::setTextureUpdateDirty ( bool  flag)
virtual

inform that textures are dirty

virtual bool makVrv::DtGpuCulling::perGeomInstanceDataDirty ( ) const
virtual

is per geom instance data dirty?

virtual void makVrv::DtGpuCulling::setPerGeomInstanceDataDirty ( bool  flag)
virtual

set the per geom instance data dirty

virtual bool makVrv::DtGpuCulling::instancesInvalidatedDirty ( ) const
virtual

were any instances invalidated?

virtual void makVrv::DtGpuCulling::invalidateInstance ( int  instanceId,
int  offset,
int  size 
)
virtual

invalidate an instance

virtual const DtGlBuffer* makVrv::DtGpuCulling::gpuInputPerGeomInstancesBuffer ( void  ) const
virtual

Accessor for the gpu per geom instances buffer.

virtual const DtGlBuffer* makVrv::DtGpuCulling::gpuMaterialsBuffer ( ) const
virtual

Accessor for the gpu materials buffer.

virtual void makVrv::DtGpuCulling::fillOutputInstances ( std::vector< DtVector4< int > > &  outputInstances,
const osg::Camera *  camera 
) const
virtual

For debugging. Get the values of the output instances computed by the compute shader.

virtual const DtIndirectEffectTexturesTemplate& makVrv::DtGpuCulling::currentEffectTexturesState ( ) const
virtual

get the current effect texture state as it was after the last time the textures were sent down

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

set a name on this (useful for debugging)

virtual const std::string& makVrv::DtGpuCulling::name ( void  ) const
virtual

get the name on this (useful for debugging)

virtual void makVrv::DtGpuCulling::updateGpuInputPerGeomInstancesBufferByInvalidating ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuGeometrySpecificationsBuffer ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuMaterialsBuffer ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuInputPerGeomInstancesBuffer ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuLightPointBuffers ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuIndirectBuffersInstanceCount ( const MapIntToInt modelIdsToNumInstances,
const osg::Camera *  camera 
)
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuIndirectBuffersNonInstanceCount ( const MapIntToInt modelIdsToNumInstances,
const osg::Camera *  camera 
)
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::clearGpuIndirectBuffer ( const osg::Camera *  camera)
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::clearStateIdCommandCountBuffer ( )
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::clearLightSourceIndexOutputBuffer ( const osg::Camera *  osgCamera,
unsigned int  maxNumLightSources 
)
protectedvirtual

update the various buffers that are fed to the cull shader -> if new models came in -> if textures became available (they can be asynchronously available, e.g. via osg ico) -> if the number of instances changed

virtual void makVrv::DtGpuCulling::updateGpuTexturesBuffer ( const osg::RenderInfo &  renderInfo)
protectedvirtual

The buffer containing the bindless textures' addresses of the model textures.

virtual void makVrv::DtGpuCulling::updateInstancesOffsetAndInstances ( const MapIntToInt modelIdsToNumInstances)
protectedvirtual

update the myInstancesOffsetAndNumInstances vector so it is ready to be used

virtual void makVrv::DtGpuCulling::updateInstancesOffsetAndInstancesBuffer ( void  )
protectedvirtual

update the myGpuInstancesOffsetAndNumInstancesBuffer

virtual void makVrv::DtGpuCulling::updateStateIdToMaxNumCommands ( const MapIntToInt modelIdsToNumInstances)
protectedvirtual

update the myStateIdToMaxNumCommands with the correct max state instances for each state

virtual void makVrv::DtGpuCulling::updateStateIdToMaxNumCommandsBuffer ( void  )
protectedvirtual

update the myGpuStateIdToMaxNumCommandsBuffer with the correct max state instances for each state

virtual bool makVrv::DtGpuCulling::checkSpecBuffersOk ( void  ) const
protectedvirtual

check a few of the buffers to make sure they are not null

virtual void makVrv::DtGpuCulling::releaseCameraToBufferMap ( DtGlDeleteObjectManager deleteManager,
const CameraToBufferMap cameraToBufferMap,
bool  untrackResident = false 
) const
protectedvirtual

release the resources for all the buffers in a camera to buffer map

virtual void makVrv::DtGpuCulling::deleteBuffers ( void  )
protectedvirtual

delete buffers

virtual void makVrv::DtGpuCulling::deleteCameraToBufferMap ( CameraToBufferMap cameraToBufferMap)
protectedvirtual

delete all the buffers in a camera to buffer map

virtual void makVrv::DtGpuCulling::flushCameraSpecificBuffers ( )
protectedvirtual

flush any buffers from the maps of cameras to buffers that no longer have a valid camera.

virtual void makVrv::DtGpuCulling::flushSingleCameraSpecificBufferMap ( CameraToBufferMap cameraToBufferMap)
protectedvirtual

flush a single camera to buffer map

virtual void makVrv::DtGpuCulling::flushSingleCameraSet ( CameraSet cameraSet)
protectedvirtual

flush a single camera set.

virtual void makVrv::DtGpuCulling::addHandleToDelete ( DtGlDeleteObjectManager deleteManager,
DtGlBuffer buffer,
bool  untrackResident = false 
) const
protectedvirtual

add to delete manager, and indicate whether the tracker should be told that something is becoming non-resident

virtual void makVrv::DtGpuCulling::setTexture ( GLuint64 &  textureToSet,
GLuint  textureID 
)
protectedvirtual

given a gl texture, set the value of the address in textureToSet if the texture is resident else, set the value to 0

virtual void makVrv::DtGpuCulling::incrementUsersAndLoadIfNecessary ( DtIndirectModelInfo info)
protectedvirtual

for partially unloadable registrars (gt), increment the users (this gpu culling) and load buffers, textures if needed

virtual void makVrv::DtGpuCulling::decrementUsersAndUnLoadIfNecessary ( )
protectedvirtual

for partially unloadable registrars (gt), decrements the users (this gpu culling) and unload buffers, textures if needed

Member Data Documentation

friend makVrv::DtGpuCulling::DtGpuCullingCreator
DtIndirectGeometryRegistrar* makVrv::DtGpuCulling::myRegistrar
protected
bool makVrv::DtGpuCulling::myRegistrarValid
protected
const DtInstanceContainer& makVrv::DtGpuCulling::myInstanceContainer
protected
DtGlBuffer* makVrv::DtGpuCulling::myGpuInputPerGeomInstancesBuffer
protected

contains switch states/ lod info

bool makVrv::DtGpuCulling::myPerGeomInstanceDataDirty
protected
DtIndirectInstancesInvalidated makVrv::DtGpuCulling::myInstancesInvalidated
protected
std::vector<DtGeometrySpecification> makVrv::DtGpuCulling::myMutableGeometrySpecifications
mutableprotected

c++ buffer that holds the same info

DtGlBuffer* makVrv::DtGpuCulling::myGpuGeometrySpecificationsBuffer
protected

The spec buffer containing GeometrySpecifications for all the models/lods of the passed in instances.

std::vector<DrawElementsIndirectBindlessCommandNV> makVrv::DtGpuCulling::myMutableBindlessIndexAndVertexBuffers
mutableprotected

the bindless vertex and index buffers

DtGlBuffer* makVrv::DtGpuCulling::myBindlessIndexAndVertexBuffersBuffer
protected

The gpu buffer holding the same above info.

DtGlBuffer* makVrv::DtGpuCulling::myGpuMaterialsBuffer
protected

The spec buffer containing Materials for all the models/lods of the passed in instances.

DtIndirectMaterialVector makVrv::DtGpuCulling::myMaterials
protected

c++ buffer that holds the same info

DtGlBuffer* makVrv::DtGpuCulling::myGpuTexturesBuffer
protected
CameraToBufferMap makVrv::DtGpuCulling::myMutableGpuIndirectBuffersBindless
mutableprotected

the buffer into which the commands are generated

CameraToBufferMap makVrv::DtGpuCulling::myMutableGpuOutputInstancesBuffersDebug
mutableprotected

The re-distributed switched/lod'ed instances but not culled out via cull shader for debugging.

CameraToBufferMap makVrv::DtGpuCulling::myGpuIndirectBuffersDebug
protected

The indirect command buffer for debugging culling.

CameraToBufferMap makVrv::DtGpuCulling::myGpuLightSourceIndexOutputBuffers
protected
DtIndirectCullProgram* makVrv::DtGpuCulling::myMutableCullProgram
mutableprotected
const DtCullShaderConfig makVrv::DtGpuCulling::myCullShaderConfig
protected
std::vector<InstancesOffsetAndNumOfInstances> makVrv::DtGpuCulling::myInstancesOffsetAndNumInstances
protected
DtGlBuffer* makVrv::DtGpuCulling::myGpuInstancesOffsetAndNumInstancesBuffer
protected
unsigned int makVrv::DtGpuCulling::myMaxNumInstancesPreCulling
protected
unsigned int makVrv::DtGpuCulling::myMaxNumInstances
protected
unsigned int makVrv::DtGpuCulling::myMaxNumLightSources
protected
VectorStateIdOffsetAndMaxCommands makVrv::DtGpuCulling::myStateIdToMaxNumCommands
protected
DtGlBuffer* makVrv::DtGpuCulling::myGpuStateIdToMaxNumCommandsBuffer
protected
DtGlBuffer* makVrv::DtGpuCulling::myGpuStateIdToCommandCountBuffer
protected
VectorInts makVrv::DtGpuCulling::myGeomSpecIndexToCommandIndex
protected
DtGlBuffer* makVrv::DtGpuCulling::myGpuSpecIndexToCommandIndexBuffer
protected
DtOsgLightPointManager& makVrv::DtGpuCulling::myLightPointManager
protected
DtDe& makVrv::DtGpuCulling::myDe
protected
DtFirstTextureStreamedModelAndIndexTracker makVrv::DtGpuCulling::myFirstTextureStreamedModelAndIndexTracker
mutableprotected

Keep track of the first model and what index to start using bindless textures.

unsigned int makVrv::DtGpuCulling::myLastNumEffectTextures
protected
unsigned int makVrv::DtGpuCulling::myLastNumUniqueGeometries
protected
bool makVrv::DtGpuCulling::myTextureUpdateDirty
protected
DtModelIdAndStreamedBytesTracker makVrv::DtGpuCulling::myMaterialBufferTracker
protected
DtModelIdAndStreamedBytesTracker makVrv::DtGpuCulling::myMutableSpecBufferTracker
mutableprotected
int makVrv::DtGpuCulling::myStreamedGeometryOffsetIdx
protected
int makVrv::DtGpuCulling::myNumGeometries
protected
CameraSet makVrv::DtGpuCulling::myModelIdsToNumInstancesChanged
protected
DtCoreGlBufferCreator& makVrv::DtGpuCulling::myDtCoreGlBufferCreator
protected
DtIndirectEffectTexturesTemplate makVrv::DtGpuCulling::myCurrentEffectTextureState
protected
std::string makVrv::DtGpuCulling::myName
protected
DtIndirectGlTextureResidencyManager& makVrv::DtGpuCulling::myGlTextureResidencyManager
protected
CameraToBufferMap makVrv::DtGpuCulling::myMutableGpuOutputInstancesBuffers
mutableprotected

The re-distributed/culled/switched/lod'ed instances (a subset of the input instances)

CameraToBufferMap makVrv::DtGpuCulling::myMutableGpuOutputInstanceOffsetInPerInstanceDataBuffers
mutableprotected

The re-distributed/culled/switched/lod'ed instances' offset into the per instance data buffer, so that per instance data can be accessed.

const int makVrv::DtGpuCulling::theGpuOutputInstanceBufferIndex
staticprotected
const int makVrv::DtGpuCulling::theGpuOutputInstanceOffsetInPerInstanceDataBufferIndex
staticprotected
const int makVrv::DtGpuCulling::theGpuOutputInstanceBufferDebugIndex
staticprotected
DtIndirectClearBufferProgram* makVrv::DtGpuCulling::myMutableClearBufferProgram
mutableprotected
std::unordered_set<DtIndirectModelInfo*> makVrv::DtGpuCulling::myModelsBeingUsed
protected

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

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)