VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgLightPointManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvOsg/vrvOsg.h>
17 
21 
23 
24 #include <osgSim/LightPointNode>
25 
26 #include <boost/thread.hpp>
27 
28 #include <string>
29 
30 namespace osgEarth
31 {
32  class GeoPoint;
33  class MapNode;
34 }
35 
36 namespace makVrv
37 {
38  class DtDe;
39 
40  class DtGlBuffer;
41 
42  class DtLightPointNode;
44 
47  typedef osg::observer_ptr<osg::Node> LightPointNodeObs;
49  typedef std::set<LightPointNodeObs> LightPointNodeObsSet;
50 
52  {
53  float color[4];
54  float intensity[4];
55  float sectors[4];
56  float pixelSize[4];
58  };
59 
60  //Needs to match LightPointNodeInfo in the shader
62  {
63  osg::Matrixf modelView;
64  osg::Vec4f eyeLocal;
65  int groupId;
66  float posScale;
67  float radiusScale;
69  GLuint64 textureId;
72  };
73 
86  {
87  public:
88 
91 
93  static DtOsgLightPointManager& instanceAsDtOsgLightPointManager(DtDe& de);
94 
95 
98  virtual void registerInstancedLightPoints(DtInstanceManager::LightPointVec &lightPoints, bool daylightControlled);
99 
102  virtual LightPointNodeObsSet registerLightPoints(const LightPointNodeObsSet& lightPoints,
103  const std::string& groupName, bool daylightControlled, const DtIndirectFadeParameters& fadeParameters);
104 
109  virtual DtLightPointNode *createLightPointNode(osg::Node *nodeRef, bool daylightControlled);
110 
114  virtual DtGlBuffer *lightPointTypeBuffer();
115 
118  virtual DtGlBuffer *lightPointGroupBuffer();
119 
123  virtual DtGlBuffer *lightPointNodeBuffer(osg::Camera* camera);
124 
128  virtual DtGlBuffer *lightPointVertexBufer(const std::vector<DtLightPointDrawable::LightPointVertexAttrib>& vertexAttribData, int minChanged, int maxChanged);
129 
131  virtual int nodeId(DtLightPointNode *lpNode, int instanceId);
132 
134  virtual void slot_preTick();
135 
137  virtual void clearNodeBuffer(const osg::Camera* camera);
138 
140  unsigned int nodeBufferMaxNodeId(const osg::Camera *camera);
141 
145  virtual void setNodeBufferData(int nodeId, const osg::Camera *camera, const DtLightPointNodeDataLayout& nodeData);
146 
148  virtual void processImGui();
149 
151  virtual DtLightPointDrawable *masterLightPointDrawable();
152 
154  virtual bool debugLabelsEnabled();
155 
157  virtual bool debugDirectionEnabled();
158 
160  virtual bool softerLightPointsEnabled();
161 
163  virtual float softenIntensity();
164 
167  virtual void setShouldReplaceOsgSimLightPoints(bool enable);
168 
171  virtual bool shouldReplaceOsgSimLightPoints();
172 
174  virtual void freeNodeIds(std::vector<int> &nodeIds);
175 
176  virtual void releaseGLObjects(osg::State * state) const;
177 
179  virtual void setInstanceReflectionMatrix(const osg::Camera *camera, const osg::Matrixf &reflectMat);
180 
182  virtual const osg::Matrixf &instanceReflectionMatrix(const osg::Camera *camera);
183 
185  virtual bool drawLightPoints();
186 
188  boost::signal<void(LightPointNodeObsSet&)> signal_lightPointsRegistered;
189 
190  protected:
191 
193  virtual ~DtOsgLightPointManager();
194 
196  virtual void slot_reloadShaders();
197 
199  virtual void setupShaders();
200 
203  int parseNodeGroupId(osg::Node *lightPointNode);
204 
206  std::string parseNodeGroupName(osg::Node *node);
207 
208  protected:
209 
212 
213  typedef std::map<const osg::Camera*, std::vector<float> > CameraVectorMap;
217 
218 
219  typedef std::pair<DtLightPointNode*, int> nodeIntPair;
220  typedef std::map<nodeIntPair, int> NodeIdMap;
222  std::set<int> myFreeNodeIds;
223 
224  boost::mutex myMutex;
225 
227 
234 
236 
237  typedef std::map<std::string, GroupIdMap> ParentGroupIdMap;
239 
240  std::map<const osg::Camera*, osg::Matrixf> myInstanceReflectionMatrix;
241 
243 
245  };
246 }
float pixelSize[4]
Definition: DtOsgLightPointManager.h:56
std::map< nodeIntPair, int > NodeIdMap
Definition: DtOsgLightPointManager.h:220
Definition: DtOsgLightPointManager.h:51
osg::ref_ptr< DtLightPointDrawable > myMasterLightPointDrawable
Definition: DtOsgLightPointManager.h:226
DtGlBuffer * myLightPointNodeBuffer
Definition: DtOsgLightPointManager.h:215
boost::mutex myMutex
Definition: DtOsgLightPointManager.h:224
GroupIdMap myImGuiProcessedGroupIds
Definition: DtOsgLightPointManager.h:235
std::pair< DtLightPointNode *, int > nodeIntPair
Definition: DtOsgLightPointManager.h:219
struct for holding the fade parameters used by the indirect rendering cull compute shader ...
Definition: DtGpuCullingAndLodDefines.h:21
Contains makVrv::DtLightPointManager class.
bool myDebugLabelsEnabled
Definition: DtOsgLightPointManager.h:228
DtGlBuffer * myLightPointVertexBuffer
Definition: DtOsgLightPointManager.h:216
bool mySofterLightPointsEnabled
Definition: DtOsgLightPointManager.h:231
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
float intensity[4]
Definition: DtOsgLightPointManager.h:54
ParentGroupIdMap myImGuiGroups
Definition: DtOsgLightPointManager.h:238
osg::ref_ptr< osg::Node > LightPointNodeRef
Definition: DtOsgLightPointManager.h:48
float sectors[4]
Definition: DtOsgLightPointManager.h:55
std::map< std::string, GroupIdMap > ParentGroupIdMap
Definition: DtOsgLightPointManager.h:237
float radiusScale
Definition: DtOsgLightPointManager.h:67
float fadeParametersAttenuationDistance
Definition: DtOsgLightPointManager.h:71
Contains makVrv::DtInstanceManager declaration.
boost::signal< void(LightPointNodeObsSet &)> signal_lightPointsRegistered
Emitted when the terrain patch has light points added.
Definition: DtOsgLightPointManager.h:188
osg::Vec4f eyeLocal
Definition: DtOsgLightPointManager.h:64
DtOsgLightPointManager registers LightPoint nodes so their TBO can be created and updated in a single...
Definition: DtOsgLightPointManager.h:85
Definition: DtOsgLightPointManager.h:61
std::set< LightPointNodeObs > LightPointNodeObsSet
Definition: DtOsgLightPointManager.h:49
DtDe & myDtDe
Definition: DtOsgLightPointManager.h:244
Contains makVrv::DtLightPointDrawable class.
float mySoftenIntensity
Definition: DtOsgLightPointManager.h:232
Contains makVrv::DtVirtualBaseClass class.
GLuint64 textureId
Definition: DtOsgLightPointManager.h:69
NodeIdMap myNodeIds
Definition: DtOsgLightPointManager.h:221
CameraVectorMap myLightPointNodeDataMap
Definition: DtOsgLightPointManager.h:214
float fadeParametersMinRange
Definition: DtOsgLightPointManager.h:70
Utility class container for light point types.
bool myDebugDirectionEnabled
Definition: DtOsgLightPointManager.h:229
std::set< int > myFreeNodeIds
Definition: DtOsgLightPointManager.h:222
Derived from osg::Node and is a replacement for the osgSim::LightPointNode represents a group of ligh...
Definition: DtLightPointNode.h:33
float posScale
Definition: DtOsgLightPointManager.h:66
Class derived from osg::Drawable to handle all DtLightPointNode light points it gathers all the light...
Definition: DtLightPointDrawable.h:52
Declarations for classes used in DtICullingAndLOD.
float resIntensityDaylight2Unused[4]
Definition: DtOsgLightPointManager.h:57
A generic OpenGL buffer.
Definition: DtGlBuffer.h:25
DtGlBuffer * myLightPointTypeBuffer
Definition: DtOsgLightPointManager.h:210
Base class to provide boost signal/slot management.
bool myDrawLightPoints
Definition: DtOsgLightPointManager.h:233
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
int groupId
Definition: DtOsgLightPointManager.h:65
std::vector< LightPoint > LightPointVec
Definition: DtInstanceManager.h:286
LightPointNodeObsSet myLightPointNodes
Definition: DtOsgLightPointManager.h:242
float isInstancedReflection
Definition: DtOsgLightPointManager.h:68
std::map< const osg::Camera *, osg::Matrixf > myInstanceReflectionMatrix
Definition: DtOsgLightPointManager.h:240
std::map< const osg::Camera *, std::vector< float > > CameraVectorMap
Definition: DtOsgLightPointManager.h:213
DtGlBuffer * myLightPointGroupBuffer
Definition: DtOsgLightPointManager.h:211
float color[4]
Definition: DtOsgLightPointManager.h:53
osg::observer_ptr< osg::Node > LightPointNodeObs
typedef a map of light point nodes use observer pointers so when they are deleted we don&#39;t try to use...
Definition: DtOsgLightPointManager.h:43
bool myShouldReplaceOsgSimLightPoints
Definition: DtOsgLightPointManager.h:230
osg::Matrixf modelView
Definition: DtOsgLightPointManager.h:63
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

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)