25 #include <osgSim/LightPointNode>
27 #include <boost/thread.hpp>
28 #include <boost/thread/recursive_mutex.hpp>
29 #include <boost/thread/shared_mutex.hpp>
45 class DtLightPointNode;
46 class DtLightPointDrawable;
128 virtual void registerInstancedLightPoints(
LightPointVec &lightPoints,
bool daylightControlled);
131 virtual void findAndRegisterLightPoints(osg::Node* node,
const std::string& groupName,
bool daylightControlled,
const DtIndirectFadeParameters& fadeParameters,
bool combineLightPoints);
136 const std::string& groupName,
bool daylightControlled,
142 const std::string& groupName,
bool daylightControlled,
149 virtual DtLightPointNode *createLightPointNode(osg::Node *nodeRef,
bool daylightControlled);
163 virtual DtGlBuffer *lightPointNodeBuffer(osg::Camera* camera);
168 virtual void updateLightPointVertexBuffer(
const std::vector<DtLightPointDrawable::LightPointVertexAttrib>& vertexAttribData,
int minChanged,
int maxChanged);
179 virtual void slot_preTick();
182 virtual void clearNodeBuffer(
const osg::Camera* camera);
185 unsigned int nodeBufferMaxNodeId(
const osg::Camera *camera);
193 virtual void processImGui();
199 virtual bool debugLabelsEnabled()
const;
202 virtual bool debugDirectionEnabled()
const;
205 virtual bool softerLightPointsEnabled()
const;
208 virtual float softenIntensity()
const;
212 virtual void setShouldReplaceOsgSimLightPoints(
bool enable);
216 virtual bool shouldReplaceOsgSimLightPoints();
219 virtual void freeNodeIds(std::vector<int> &nodeIds);
221 virtual void releaseGLObjects(osg::State * state)
const;
224 virtual void setInstanceReflectionMatrix(
const osg::Camera *camera,
const osg::Matrixf &reflectMat);
227 virtual const osg::Matrixf &instanceReflectionMatrix(
const osg::Camera *camera);
230 virtual bool drawLightPoints();
241 virtual void slot_reloadShaders();
244 virtual void setupShaders();
248 int parseNodeGroupId(osg::Node *lightPointNode);
251 std::string parseNodeGroupName(osg::Node *node);
254 virtual void populateLightPointNode(osg::Node *nodeRef,
DtLightPointNode *dtLpRef,
bool daylightControlled,
bool newNode);
259 static void cleanupNodes(osg::Node* node);
float pixelSize[4]
Definition: DtOsgLightPointManager.h:60
std::map< nodeIntPair, int > NodeIdMap
Definition: DtOsgLightPointManager.h:273
Definition: DtOsgLightPointManager.h:55
osg::ref_ptr< DtLightPointDrawable > myMasterLightPointDrawable
Definition: DtOsgLightPointManager.h:282
DtGlBuffer * myLightPointNodeBuffer
Definition: DtOsgLightPointManager.h:268
boost::mutex myMutex
Definition: DtOsgLightPointManager.h:277
GroupIdMap myImGuiProcessedGroupIds
Definition: DtOsgLightPointManager.h:291
std::pair< DtLightPointNode *, int > nodeIntPair
Definition: DtOsgLightPointManager.h:272
Contains makVrv::DtLightPointManager class.
bool myDebugLabelsEnabled
Definition: DtOsgLightPointManager.h:284
DtGlBuffer * myLightPointVertexBuffer
Definition: DtOsgLightPointManager.h:269
bool mySofterLightPointsEnabled
Definition: DtOsgLightPointManager.h:287
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float intensity[4]
Definition: DtOsgLightPointManager.h:58
ParentGroupIdMap myImGuiGroups
Definition: DtOsgLightPointManager.h:294
osg::ref_ptr< osg::Node > LightPointNodeRef
Definition: DtOsgLightPointManager.h:52
float sectors[4]
Definition: DtOsgLightPointManager.h:59
std::map< std::string, GroupIdMap > ParentGroupIdMap
Definition: DtOsgLightPointManager.h:293
float radiusScale
Definition: DtOsgLightPointManager.h:72
float fadeParametersAttenuationDistance
Definition: DtOsgLightPointManager.h:76
osg::Vec4f eyeLocal
Definition: DtOsgLightPointManager.h:69
float sensorSettings[4]
Definition: DtOsgLightPointManager.h:62
boost::signalslib::signal< void(LightPointNodeObsSet &)> signal_lightPointsRegistered
Emitted when the terrain patch has light points added.
Definition: DtOsgLightPointManager.h:233
DtOsgLightPointManager registers LightPoint nodes so their TBO can be created and updated in a single...
Definition: DtOsgLightPointManager.h:106
Definition: DtOsgLightPointManager.h:66
std::set< LightPointNodeObs > LightPointNodeObsSet
Definition: DtOsgLightPointManager.h:53
DtDe & myDtDe
Definition: DtOsgLightPointManager.h:300
boost::shared_mutex myLightsTableMutex
Definition: DtOsgLightPointManager.h:280
Contains makVrv::DtLightPointDrawable class.
float mySoftenIntensity
Definition: DtOsgLightPointManager.h:288
Contains makVrv::DtVirtualBaseClass class.
GLuint64 textureId
Definition: DtOsgLightPointManager.h:74
int groupId
Definition: DtOsgLightPointManager.h:85
std::vector< DtLightPointNodeAndXform > DtLightPointNodeAndXformVector
Vector of light point nodes and their transforms. We need to keep every path to every light at this p...
Definition: DtLightPointNodeAndXform.h:66
NodeIdMap myNodeIds
Definition: DtOsgLightPointManager.h:274
CameraVectorMap myLightPointNodeDataMap
Definition: DtOsgLightPointManager.h:267
float fadeParametersMinRange
Definition: DtOsgLightPointManager.h:75
Utility class container for light point types.
osg::observer_ptr< osg::Node > LightPointNodeObs
typedef a map of light point nodes use observer pointers so when they are deleted we don't try to use...
Definition: DtLightPointNodeAndXform.h:21
bool myDebugDirectionEnabled
Definition: DtOsgLightPointManager.h:285
std::set< int > myFreeNodeIds
Definition: DtOsgLightPointManager.h:275
struct for holding the fade parameters used by the indirect rendering cull compute shader ...
Definition: DtIndirectFadeParameters.h:17
Derived from osg::Node and is a replacement for the osgSim::LightPointNode represents a group of ligh...
Definition: DtLightPointNode.h:37
float posScale
Definition: DtOsgLightPointManager.h:71
osg::ref_ptr< osg::Node > lightPoint
Definition: DtOsgLightPointManager.h:83
template light point data
Definition: DtOsgLightPointManager.h:80
Class derived from osg::Drawable to handle all DtLightPointNode light points it gathers all the light...
Definition: DtLightPointDrawable.h:52
float resIntensityDaylight2Unused[4]
Definition: DtOsgLightPointManager.h:61
std::vector< LightPoint > LightPointVec
Definition: DtOsgLightPointManager.h:88
boost::recursive_mutex myNodeBufferMutex
Definition: DtOsgLightPointManager.h:279
A generic OpenGL buffer. This can be: -> a vertex buffer -> an index buffer -> a shader storage buffe...
Definition: DtGlBuffer.h:29
DtGlBuffer * myLightPointTypeBuffer
Definition: DtOsgLightPointManager.h:263
Base class to provide boost signal/slot management.
bool myDrawLightPoints
Definition: DtOsgLightPointManager.h:289
unsigned int attachDrawableIx
Definition: DtOsgLightPointManager.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:70
int groupId
Definition: DtOsgLightPointManager.h:70
boost::mutex myNodeIdMutex
Definition: DtOsgLightPointManager.h:278
LightPointNodeObsSet myLightPointNodes
Definition: DtOsgLightPointManager.h:298
LightPoint()
Definition: DtOsgLightPointManager.h:82
float isInstancedReflection
Definition: DtOsgLightPointManager.h:73
std::map< const osg::Camera *, osg::Matrixf > myInstanceReflectionMatrix
Definition: DtOsgLightPointManager.h:296
std::map< const osg::Camera *, std::vector< float > > CameraVectorMap
Definition: DtOsgLightPointManager.h:266
DtGlBuffer * myLightPointGroupBuffer
Definition: DtOsgLightPointManager.h:264
Contains makVrv::DtIndirectViewParameters class.
float color[4]
Definition: DtOsgLightPointManager.h:57
Contains makVrv::DtIndirectFadeParameters class.
bool myShouldReplaceOsgSimLightPoints
Definition: DtOsgLightPointManager.h:286
osg::Matrixf modelView
Definition: DtOsgLightPointManager.h:68
std::map< std::string, int > GroupIdMap
Definition: DtLightPointManager.h:35
DtLightPointManager core base class for DtOsgLightPointManger (which does most of the work for light ...
Definition: DtLightPointManager.h:28