17 #include <osg/ref_ptr>
18 #include <osg/PositionAttitudeTransform>
20 #include <osg/BoundingBox>
22 #include <OsgST_Forest.h>
24 #include <boost/unordered_set.hpp>
26 #include <tbb/mutex.h>
28 namespace makOsgSpeedTree
31 struct TreeInstanceDescriptor;
36 class DtAgentUpdateResolverInterface;
37 class DtSpeedTreeModelInstance;
38 class DtSpeedTreeCore;
39 class DtEnvironmentInfo;
40 class DtOsgCullVisitorParameters;
42 class DtCoordinateConverter;
50 friend class DtSpeedTreeForestClassesCreator;
76 virtual void removeAllTrees();
80 virtual void removeAllUniqueTreesAndUniqueCell(
DtUniqueID cellID);
82 virtual void setTreeClippingPlane(
float fFar);
83 virtual void getTreeClippingPlane(
float& fFar );
85 virtual void setTree3DLodDistances(
float fNear,
float fFar);
86 virtual void getTree3DLodDistances(
float& fNear,
float& fFar );
88 virtual void setTreeBillboardDistances(
float fStart,
float fEnd);
89 virtual void getTreeBillboardDistances(
float& fStart,
float& fEnd);
92 virtual void setBillboardFadeOutRange(
float fRange);
94 virtual void getBillboardFadeOutRange(
float& fRange);
96 virtual void enableBillboardRendering(
bool enable);
97 virtual bool isBillboardRenderingEnabled()
const;
99 virtual void enable3DTreeRendering(
bool enable);
100 virtual bool is3DTreeRenderingEnabled()
const;
102 virtual void enableReceiveShadows(
bool enable);
105 void setBoundingBox(
const osg::BoundingBox& box);
106 const osg::BoundingBox& getBoundingBox(
void)
const;
115 const makOsgSpeedTree::TreeType* pTreeType,
uint32 programID);
119 virtual void slot_reloadShaders();
122 virtual void slot_treeProfilingChanged(
bool active);
125 virtual void slot_useGlobalAmbientChanged(
bool enabled);
128 virtual void slot_useGlobalDiffuseChanged(
bool enabled);
132 virtual void slot_perPixelLightingEnabledChanged(
bool enabled);
135 virtual void slot_planarReflectionsShowSpeedTreesChanged(
bool enabled);
138 virtual void processUnitialized();
141 virtual bool initialized();
144 virtual tbb::mutex& mergeDrawMutex();
147 virtual tbb::mutex& mergeUpdateMutex();
158 void init(
const std::string& strVisManagerType);
172 void connectSignals(
void);
174 osg::Vec3f computeWindDirection(
float fDirection);
176 void setWindStrength(
float fStrength);
177 void setWindDirection(
float fDirection);
183 osg::RenderInfo& renderInfo);
185 osg::RenderInfo& renderInfo);
189 void pushGraphicsState(osg::RenderInfo& renderInfo);
190 void popGraphicsState(osg::RenderInfo& renderInfo);
194 const std::string& modelDef);
201 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
205 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
207 void applyModelDefParameters(makOsgSpeedTree::TreeInstanceDescriptor& desc,
212 osg::RenderInfo& renderInfo);
217 static bool isReflectionCamera(osg::Camera *camera);
231 makOsgSpeedTree::TreeInstanceDescriptorCollection
260 typedef boost::unordered_map<DtUniqueID, makOsgSpeedTree::TreeInstance*>
DtSpeedTreeForestObjectCreator is the SpeedTree implementation of a DtForestObjectCreator.
Definition: DtSpeedTreeForest.h:299
const std::string mySpeedTreeMultiViewUserFuncsVertexShader
Definition: DtSpeedTreeForest.h:273
MapModelDefToSTFileName myMapModelDefToSTFileName
Definition: DtSpeedTreeForest.h:236
osg::GLExtensions * myExt
Definition: DtSpeedTreeForest.h:280
static bool theEnableAsyncUpdate
Definition: DtSpeedTreeForest.h:227
static unsigned int theLastImGuiFrameNumber
Definition: DtSpeedTreeForest.h:226
The DtEnvironmentInfo class is responsible for holding data related to the environment such as sky li...
Definition: DtEnvironmentInfo.h:25
float myFarPlane
Definition: DtSpeedTreeForest.h:246
bool myShouldUpdateThisFrame
Definition: DtSpeedTreeForest.h:293
#define DT_DLL_VRVST
Definition: vrvSt.h:23
std::string strSRTFileName
Definition: DtSpeedTreeForest.h:167
DtCoordinateConverter is the base class for 'local (cig) to geocentric' converters.
Definition: DtCoordinateConverter.h:25
bool myReloadShaders
Should we reload the SpeedTree shaders.
Definition: DtSpeedTreeForest.h:268
makOsgSpeedTree::TreeInstanceDescriptor myScratchTreeInstanceDesc
Definition: DtSpeedTreeForest.h:230
boost::unordered_map< DtUniqueID, makOsgSpeedTree::TreeInstanceCollection > MapCellsToTrees
Definition: DtSpeedTreeForest.h:257
const std::string mySpeedTreeDefaultUserFuncsPixelShader
Definition: DtSpeedTreeForest.h:271
makOsgSpeedTree::TreeInstanceCollection myScratchInstanceCollection
Definition: DtSpeedTreeForest.h:233
Contains DLL export macros.
std::vector< DtTreeRecord * > DtVectorTreeRecords
Definition: DtTreeRecord.h:137
DtSpeedTreeCore & myCore
Definition: DtSpeedTreeForest.h:253
Contains makVrv::DtForestObject class.
DtForestObject provides a way to make lots of trees.
Definition: DtForestObject.h:26
osg::BoundingBox myBoundingBox
Definition: DtSpeedTreeForest.h:252
float modelDefScale
Definition: DtSpeedTreeForest.h:168
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:33
MapTreeIDToTree myMapTreeIDtoTree
Definition: DtSpeedTreeForest.h:262
DtSpeedTreeCore wraps and provides the interface to makOsgSpeedTree.
Definition: DtSpeedTreeCore.h:28
static const float myCellSize
Definition: DtSpeedTreeForest.h:223
const std::string mySpeedTreeDefaultUserFuncsVertexShader
Definition: DtSpeedTreeForest.h:270
virtual bool isReceiveShadowsEnabled() const
Definition: DtSpeedTreeForest.h:103
A DtTreeRecord holds the requisite information needed to create a tree in a forest.
Definition: DtTreeRecord.h:30
boost::unordered_map< DtUniqueID, makOsgSpeedTree::TreeInstance * > MapTreeIDToTree
Definition: DtSpeedTreeForest.h:261
DtSpeedTreeForest is the SpeedTree implementation of a distributed DtForestObject.
Definition: DtSpeedTreeForest.h:47
DtEnvironmentInfo & myEnvInfo
Definition: DtSpeedTreeForest.h:254
bool myReceiveShadows
Definition: DtSpeedTreeForest.h:281
osg::ref_ptr< osg::PositionAttitudeTransform > myPat
Definition: DtSpeedTreeForest.h:250
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
The osg cull vistor parameters class provides additional culling and intersector parameters for choos...
Definition: DtOsgCullVisitorParameters.h:38
DtCoordinateConverter * myMergeBackgroundConverter
Definition: DtSpeedTreeForest.h:291
DtCoordinateConverter * myMainThreadConverter
Definition: DtSpeedTreeForest.h:290
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
MapCellsToTrees myMapCellsToTrees
Definition: DtSpeedTreeForest.h:258
osg::ref_ptr< osg::Uniform > myNormalMatrixUniform
Definition: DtSpeedTreeForest.h:278
Base class to provide boost signal/slot management.
osg::Camera * myCamera
Definition: DtSpeedTreeForest.h:240
boost::unordered_map< int, bool > myShaderBoundMap
Definition: DtSpeedTreeForest.h:244
osg::ref_ptr< makOsgSpeedTree::Forest > myForest
Definition: DtSpeedTreeForest.h:251
makOsgSpeedTree::TreeInstanceDescriptorCollection myScratchTreeInstanceDescCollection
Definition: DtSpeedTreeForest.h:232
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtSignalConnectionManager myConnections
Definition: DtSpeedTreeForest.h:242
int myPreviousTU
Definition: DtSpeedTreeForest.h:238
unsigned int uint32
Definition: DtCommonTypes.h:28
The DtForestObjectCreator for the DtForestObject class.
Definition: DtForestObject.h:103
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
tbb::mutex myForestMergeDrawMutex
Definition: DtSpeedTreeForest.h:286
std::map< std::string, ModelDefParams > MapModelDefToSTFileName
Definition: DtSpeedTreeForest.h:235
Contains the DtCVMarkerSeries and DtCVMarkerSeries class declarations responsible for wrapping up to ...
osg::ref_ptr< osg::Uniform > myProjectionMatrixInverseUniform
Definition: DtSpeedTreeForest.h:275
Contains makVrv::DtTreeRecord class.
unsigned int myLastShaderHash
shader hash for the last shaders passed down to SpeedTree
Definition: DtSpeedTreeForest.h:265
osg::ref_ptr< osg::Group > myRoot
The forest is a collection of trees under a group node.
Definition: DtSpeedTreeForest.h:249
Definition: DtSpeedTreeForest.h:165
tbb::mutex myForestMergeUpdateMutex
Definition: DtSpeedTreeForest.h:288
tbb::mutex myForestAddRemoveMutex
Definition: DtSpeedTreeForest.h:287