- Timestamp:
- 05/01/05 23:29:27 (19 years ago)
- Location:
- trunk/VUT
- Files:
-
- 43 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/VUT/GtpVisibility/include/CoherentHierarchicalCullingManager.h
r59 r74 17 17 { 18 18 public: 19 CoherentHierarchicalCullingManager(HierarchyInterface *hierarchyInterface);20 19 void RenderScene(); 21 20 }; -
trunk/VUT/GtpVisibility/include/CullingManager.h
r59 r74 12 12 { 13 13 public: 14 /** Constructor taking a scene traverser for a specific type of hierarchy as argument. 14 /** Default constructor. 15 @remark an appropriate hierarchy interface must be provided for the algorithms to 16 work on specific hierarchy 15 17 */ 16 CullingManager( HierarchyInterface *hierarchyInterface);18 CullingManager(); 17 19 /** Renders the scene using a specific occlusion culling algorithm, e.g., coherent 18 20 hierarchical culling or stop and wait. … … 24 26 */ 25 27 void SetHierarchyInterface(HierarchyInterface *hierarchyInterface); 28 /** Sets the threshold for the visibiliy culling algorithm. 29 @param visibilityThreshold number of visible pixels where an object 30 is still considered invisible. 31 */ 32 void SetVisibilityThreshold(unsigned int visibilityThreshold); 33 34 /** Returns number of frustum culled nodes. 35 */ 36 unsigned int GetNumFrustumCulledNodes(); 37 /** Returns number of occlusion query culled nodes. 38 */ 39 unsigned int GetNumQueryCulledNodes(); 26 40 27 41 protected: … … 29 43 unsigned int mNumQueryCulledNodes; 30 44 unsigned int mNumFrustumCulledNodes; 45 unsigned int mVisibilityThreshold; 31 46 32 unsigned int mVisibilityThreshold;33 47 HierarchyInterface *mHierarchyInterface; 34 48 }; -
trunk/VUT/GtpVisibility/include/FrustumCullingManager.h
r59 r74 12 12 { 13 13 public: 14 FrustumCullingManager(HierarchyInterface *hierarchyInterface);15 14 void RenderScene(); 16 15 }; -
trunk/VUT/GtpVisibility/include/HierarchyInterface.h
r65 r74 19 19 @returns true if node is leaf 20 20 */ 21 virtual bool IsLeaf(HierarchyNode *node) = 0;21 virtual bool IsLeaf(HierarchyNode *node) const = 0; 22 22 /** Traverses the given node. 23 23 @param node the hierarchy node … … 41 41 */ 42 42 void SetSceneRoot(HierarchyNode *root); 43 /** Get the root of the scene hierarchy. 44 @return the hierarchy root 45 */ 46 HierarchyNode *GetSceneRoot() const { 47 return mSceneRoot; 48 } 43 /** Get the root of the scene hierarchy. 44 @return the hierarchy root 45 */ 46 HierarchyNode *GetSceneRoot() const; 49 47 /** Sets the scene root and initialises this scene traverser for a traversal. 50 48 @param root current scene root … … 52 50 */ 53 51 void InitFrame(HierarchyNode *root); 54 55 52 /** Returns current frame id. 56 53 @returns frame id 57 54 */ 58 int GetFrameId();55 unsigned int GetFrameId() const; 59 56 /** Returns the current distance queue. 60 57 @returns current distance queue … … 66 63 @param node2 the second node to be compared 67 64 */ 68 virtual bool HasGreaterDistance(HierarchyNode *node1, HierarchyNode *node2) = 0;65 virtual bool HasGreaterDistance(HierarchyNode *node1, HierarchyNode *node2) const = 0; 69 66 /** Checks if the node is visible from the current view frustum. 70 67 @param node the current node … … 72 69 */ 73 70 virtual bool CheckFrustumVisible(HierarchyNode *node, bool &intersects) = 0; 71 /** Checks if the node is visible from the current view frustum. 72 @param node the current node 73 */ 74 bool CheckFrustumVisible(HierarchyNode *node); 74 75 /** Returns next available occlusion query or creates new one. 75 76 @return the next occlusion query … … 80 81 @returns if the node has renderable geometry 81 82 */ 82 virtual bool HasGeometry(HierarchyNode *node) = 0;83 virtual bool HasGeometry(HierarchyNode *node) const = 0; 83 84 /** Sets the visible flag for this node. 84 85 @param node the current node … … 88 89 /** Returns true if node has the visible flag set. See set 89 90 */ 90 virtual bool IsNodeVisible(HierarchyNode *node) = 0;91 virtual bool IsNodeVisible(HierarchyNode *node) const = 0; 91 92 /** Sets the last visited frame id for this node. 92 93 @param node the current node 93 94 @param frameId the current frame id 94 95 */ 95 virtual void SetLastVisited(HierarchyNode *node, const int frameId) = 0; 96 virtual void SetLastVisited(HierarchyNode *node, 97 const unsigned int frameId) = 0; 96 98 /** Returns frame id when this node was last visited by the traverser. See set 97 99 */ 98 virtual int LastVisited(HierarchyNode *node) = 0; 100 virtual unsigned int LastVisited(HierarchyNode *node) const = 0; 101 /** Returns number of traversed nodes. 102 */ 103 unsigned int GetNumTraversedNodes(); 104 /** Returns number of rendered nodes. 105 */ 106 unsigned int GetNumRenderedNodes(); 99 107 100 108 protected: … … 105 113 106 114 //--- statistics 107 unsigned int mNumSceneNodes;108 115 unsigned int mNumTraversedNodes; 109 unsigned int mNumRenderedGeometry;110 116 unsigned int mNumRenderedNodes; 111 117 -
trunk/VUT/GtpVisibility/include/StopAndWaitCullingManager.h
r59 r74 11 11 { 12 12 public: 13 StopAndWaitCullingManager(HierarchyInterface *hierarchyInterface);14 13 void RenderScene(); 15 14 }; -
trunk/VUT/GtpVisibility/include/VisibilityEnvironment.h
r71 r74 13 13 /** Different types of occlusion culling algorithms 14 14 */ 15 enum CullingManagerType {FRUSTUM_CULLING, STOP_AND_WAIT, COHERENT_HIERARCHICAL_CULLING}; 15 enum CullingManagerType {FRUSTUM_CULLING, 16 STOP_AND_WAIT_CULLING, 17 COHERENT_HIERARCHICAL_CULLING, 18 NUM_CULLING_MANAGERS}; 16 19 17 20 /** Loads an environment from disk. … … 21 24 } // namespace GtpVisibility 22 25 23 /** @}*/ // end of group Visibility24 25 26 #endif // VisibilityEnvironment_H -
trunk/VUT/GtpVisibility/include/VisibilityManager.h
r71 r74 41 41 void ApplyVisibilityCulling(); 42 42 43 /** Sets the threshold for the visibiliy culling algorithm. 44 @param visibilityThreshold number of visible pixels where an object 45 is still considered invisible. 46 @remark automatically sets the threshold of the current and of 47 new culling managers to this value. 48 */ 49 void SetVisibilityCullingThreshold(unsigned int threshold); 50 43 51 protected: 44 52 … … 48 56 VisibilityEnvironment *mVisibilityEnvironment; 49 57 VisibilityEnvironment::CullingManagerType mCullingManagerType; 58 59 unsigned int mVisibilityThreshold; 60 50 61 }; 51 62 } // namespace GtpVisibility -
trunk/VUT/GtpVisibility/scripts/GtpVisibility.vcproj
r71 r74 20 20 Name="VCCLCompilerTool" 21 21 Optimization="0" 22 AdditionalIncludeDirectories=""$(OGRE_PATH) /OgreMain/include";..\include"22 AdditionalIncludeDirectories=""$(OGRE_PATH)\OgreMain\include";..\include" 23 23 PreprocessorDefinitions="WIN32;_DEBUG;_LIB" 24 24 MinimalRebuild="TRUE" … … 55 55 <Configuration 56 56 Name="Release|Win32" 57 OutputDirectory="..\ bin\$(ConfigurationName)"57 OutputDirectory="..\lib\$(ConfigurationName)" 58 58 IntermediateDirectory="..\obj\$(ConfigurationName)" 59 59 ConfigurationType="4" … … 61 61 <Tool 62 62 Name="VCCLCompilerTool" 63 AdditionalIncludeDirectories="..\include;"$(OGRE_PATH)\OgreMain\include"" 63 64 PreprocessorDefinitions="WIN32;NDEBUG;_LIB" 64 65 RuntimeLibrary="2" 65 UsePrecompiledHeader=" 3"66 UsePrecompiledHeader="0" 66 67 WarningLevel="3" 67 68 Detect64BitPortabilityProblems="TRUE" -
trunk/VUT/GtpVisibility/src/CoherentHierarchicalCullingManager.cpp
r59 r74 3 3 namespace GtpVisibility { 4 4 5 //-----------------------------------------------------------------------6 CoherentHierarchicalCullingManager::CoherentHierarchicalCullingManager(HierarchyInterface *hierarchyInterface):7 CullingManager(hierarchyInterface)8 {9 }10 5 //----------------------------------------------------------------------- 11 6 void CoherentHierarchicalCullingManager::RenderScene() … … 46 41 bool intersects = false; 47 42 48 if (!mHierarchyInterface->CheckFrustumVisible(node, intersects))43 if (!mHierarchyInterface->CheckFrustumVisible(node, intersects)) 49 44 { 50 45 mNumFrustumCulledNodes ++; 51 continue;52 46 } 47 else 48 { 49 // if intersects near plane => skip occlusion query because wrong results possible 50 if (intersects) 51 { 52 // update octant's visited flag 53 mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId()); 53 54 54 // if intersects near plane => skip occlusion query because wrong results possible 55 if (intersects) 56 { 57 // update octant's visited flag 55 mHierarchyInterface->PullUpVisibility(node); 56 mHierarchyInterface->TraverseNode(node); 57 58 continue; 59 } 60 61 // identify previously visible nodes 62 bool wasVisible = mHierarchyInterface->IsNodeVisible(node) && 63 (mHierarchyInterface->LastVisited(node) == mHierarchyInterface->GetFrameId() - 1); 64 65 // identify nodes that we cannot skip queries for 66 bool mustQuery = !wasVisible || mHierarchyInterface->HasGeometry(node) || mHierarchyInterface->IsLeaf(node); 67 68 // reset node's visibility classification 69 mHierarchyInterface->SetNodeVisible(node, false); 70 71 // update node's visited flag 58 72 mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId()); 59 60 mHierarchyInterface->PullUpVisibility(node);61 mHierarchyInterface->TraverseNode(node);62 63 continue;64 }65 66 // identify previously visible nodes67 bool wasVisible = mHierarchyInterface->IsNodeVisible(node) &&68 (mHierarchyInterface->LastVisited(node) == mHierarchyInterface->GetFrameId() - 1);69 70 // identify nodes that we cannot skip queries for71 bool mustQuery = !wasVisible || mHierarchyInterface->HasGeometry(node) || mHierarchyInterface->IsLeaf(node);72 73 // reset node's visibility classification74 mHierarchyInterface->SetNodeVisible(node, false);75 76 // update node's visited flag77 mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId());78 73 79 // skip testing previously visible interior nodes80 if (mustQuery)81 {82 queryQueue.push(QueryPair(node, mHierarchyInterface->IssueOcclusionQuery(node)));83 }74 // skip testing previously visible interior nodes 75 if (mustQuery) 76 { 77 queryQueue.push(QueryPair(node, mHierarchyInterface->IssueOcclusionQuery(node))); 78 } 84 79 85 // always traverse a node if it was visible 86 if (wasVisible) 87 { 88 mHierarchyInterface->TraverseNode(node); 80 // always traverse a node if it was visible 81 if (wasVisible) 82 { 83 mHierarchyInterface->TraverseNode(node); 84 } 89 85 } 90 86 } -
trunk/VUT/GtpVisibility/src/CullingManager.cpp
r59 r74 4 4 5 5 //----------------------------------------------------------------------- 6 CullingManager::CullingManager( HierarchyInterface *hierarchyInterface):7 mHierarchyInterface( hierarchyInterface), mVisibilityThreshold(0), mNumQueryCulledNodes(0),6 CullingManager::CullingManager(): 7 mHierarchyInterface(NULL), mVisibilityThreshold(0), mNumQueryCulledNodes(0), 8 8 mNumFrustumCulledNodes(0) 9 9 { … … 14 14 mHierarchyInterface = hierarchyInterface; 15 15 } 16 //----------------------------------------------------------------------- 17 void CullingManager::SetVisibilityThreshold(unsigned int visibilityThreshold) 18 { 19 mVisibilityThreshold = visibilityThreshold; 20 } 21 //----------------------------------------------------------------------- 22 unsigned int CullingManager::GetNumFrustumCulledNodes() 23 { 24 return mNumFrustumCulledNodes; 25 } 26 //----------------------------------------------------------------------- 27 unsigned int CullingManager::GetNumQueryCulledNodes() 28 { 29 return mNumQueryCulledNodes; 30 } 16 31 } // namespace GtpVisibility -
trunk/VUT/GtpVisibility/src/DummyPreprocessingManager.cpp
r65 r74 3 3 namespace GtpVisibility { 4 4 5 DummyPreprocessingManager::DummyPreprocessingManager( HierarchyInterface *hierarchyInterface)5 DummyPreprocessingManager::DummyPreprocessingManager(HierarchyInterface *hierarchyInterface) 6 6 :PreprocessingManager(hierarchyInterface) 7 7 { … … 9 9 10 10 11 bool 12 DummyPreprocessingManager::ExportScene(const string filename) 11 bool DummyPreprocessingManager::ExportScene(const string filename) 13 12 { 14 13 ofstream s(filename.c_str()); … … 19 18 20 19 21 bool 22 DummyPreprocessingManager::LoadPreprocessedData(const string filename) 20 bool DummyPreprocessingManager::LoadPreprocessedData(const string filename) 23 21 { 24 22 // do nothing … … 31 29 Returns false if no viewcell was found. 32 30 */ 33 bool 34 DummyPreprocessingManager::LocateViewCellIds(const Vector3 ¢er, 35 const float radius, 36 vector<int> *viewCellIds 37 ) 31 bool DummyPreprocessingManager::LocateViewCellIds(const Vector3 ¢er, 32 const float radius, 33 vector<int> *viewCellIds) 38 34 { 39 35 return false; … … 43 39 Uses the specified viewcell to find its PVS 44 40 */ 45 int 46 DummyPreprocessingManager::AddViewCellPVS(const int cellID, 41 int DummyPreprocessingManager::AddViewCellPVS(const int cellID, 47 42 InfoContainer<NodeInfo> *visibleNodes, 48 43 InfoContainer<MeshInfo> *visibleMeshes ) -
trunk/VUT/GtpVisibility/src/FrustumCullingManager.cpp
r59 r74 1 1 #include "FrustumCullingManager.h" 2 3 #include <windows.h> 2 4 3 5 namespace GtpVisibility { 4 6 5 7 //----------------------------------------------------------------------- 6 FrustumCullingManager::FrustumCullingManager(HierarchyInterface *hierarchyInterface):7 CullingManager(hierarchyInterface)8 {9 }10 //-----------------------------------------------------------------------11 8 void FrustumCullingManager::RenderScene() 12 9 { 13 10 mNumFrustumCulledNodes = mNumQueryCulledNodes = 0; 14 15 while (!mHierarchyInterface->GetQueue()->empty())11 12 while (!mHierarchyInterface->GetQueue()->empty()) 16 13 { 17 14 HierarchyNode *node = mHierarchyInterface->GetQueue()->top(); … … 22 19 mHierarchyInterface->SetLastVisited(node, mHierarchyInterface->GetFrameId()); 23 20 24 bool intersects = false; 25 26 if(mHierarchyInterface->CheckFrustumVisible(node, intersects)) 21 if (!mHierarchyInterface->CheckFrustumVisible(node)) 27 22 { 28 23 mNumFrustumCulledNodes ++; 29 continue;30 24 } 31 32 //if intersects near plane => skip occlusion query because wrong results possible 33 if(intersects) 34 { 35 mHierarchyInterface->SetNodeVisible(node, true); 25 else 26 { 27 mHierarchyInterface->SetNodeVisible(node, true); 36 28 mHierarchyInterface->TraverseNode(node); 37 continue;38 29 } 39 40 mHierarchyInterface->TraverseNode(node);41 30 } 42 31 } -
trunk/VUT/GtpVisibility/src/HierarchyInterface.cpp
r59 r74 1 1 #include "HierarchyInterface.h" 2 2 3 //#include <windows.h>3 #include <windows.h> 4 4 5 5 namespace GtpVisibility { … … 7 7 //----------------------------------------------------------------------- 8 8 HierarchyInterface::HierarchyInterface(): 9 mFrameId( 1), mNumSceneNodes(0), mNumTraversedNodes(0),10 m NumRenderedNodes(0), mSceneRoot(0), mCurrentTestIdx(0)9 mFrameId(0), mNumTraversedNodes(0), mNumRenderedNodes(0), 10 mSceneRoot(0), mCurrentTestIdx(0) 11 11 { 12 12 mDistanceQueue = new DistanceQueue(GreaterDistance<HierarchyNode *>(this)); … … 25 25 void HierarchyInterface::InitFrame(HierarchyNode *root) 26 26 { 27 mFrameId = 0;27 mFrameId ++; 28 28 mNumTraversedNodes = 0; 29 29 mNumRenderedNodes = 0; … … 33 33 } 34 34 //----------------------------------------------------------------------- 35 int HierarchyInterface::GetFrameId() 35 unsigned int HierarchyInterface::GetFrameId() const 36 36 { 37 37 return mFrameId; … … 42 42 return mDistanceQueue; 43 43 } 44 //----------------------------------------------------------------------- 45 bool HierarchyInterface::CheckFrustumVisible(HierarchyNode *node) 46 { 47 bool intersects = false; 48 return CheckFrustumVisible(node, intersects); 49 } 50 //----------------------------------------------------------------------- 51 HierarchyNode *HierarchyInterface::GetSceneRoot() const 52 { 53 return mSceneRoot; 54 } 55 //----------------------------------------------------------------------- 56 unsigned int HierarchyInterface::GetNumTraversedNodes() 57 { 58 return mNumTraversedNodes; 59 } 60 //----------------------------------------------------------------------- 61 unsigned int HierarchyInterface::GetNumRenderedNodes() 62 { 63 return mNumRenderedNodes; 64 } 44 65 } // namespace GtpVisibility -
trunk/VUT/GtpVisibility/src/StopAndWaitCullingManager.cpp
r59 r74 3 3 namespace GtpVisibility { 4 4 5 //-----------------------------------------------------------------------6 StopAndWaitCullingManager::StopAndWaitCullingManager(HierarchyInterface *HierarchyInterface):7 CullingManager(HierarchyInterface)8 {9 }10 5 //----------------------------------------------------------------------- 11 6 void StopAndWaitCullingManager::RenderScene() … … 24 19 bool intersects = false; 25 20 26 if ( mHierarchyInterface->CheckFrustumVisible(node, intersects))21 if (!mHierarchyInterface->CheckFrustumVisible(node, intersects)) 27 22 { 28 23 mNumFrustumCulledNodes ++; 29 continue;30 }31 32 //if intersects near plane => skip occlusion query because wrong results possible33 if (intersects)34 {35 mHierarchyInterface->SetNodeVisible(node, true);36 mHierarchyInterface->TraverseNode(node);37 continue;38 }39 40 // node visible41 if (mHierarchyInterface->IssueOcclusionQuery(node)->GetQueryResult() >42 mVisibilityThreshold)43 {44 mHierarchyInterface->TraverseNode(node);45 24 } 46 25 else 47 26 { 48 mNumQueryCulledNodes ++; 27 //if intersects near plane => skip occlusion query because wrong results possible 28 if (intersects) 29 { 30 mHierarchyInterface->SetNodeVisible(node, true); 31 mHierarchyInterface->TraverseNode(node); 32 continue; 33 } 34 35 // node visible 36 if (mHierarchyInterface->IssueOcclusionQuery(node)->GetQueryResult() > 37 mVisibilityThreshold) 38 { 39 mHierarchyInterface->TraverseNode(node); 40 } 41 else 42 { 43 mNumQueryCulledNodes ++; 44 } 49 45 } 50 46 } -
trunk/VUT/GtpVisibility/src/VisibilityEnvironment.cpp
r59 r74 2 2 3 3 namespace GtpVisibility { 4 4 //----------------------------------------------------------------------- 5 5 VisibilityEnvironment::VisibilityEnvironment() 6 6 { 7 7 } 8 8 //----------------------------------------------------------------------- 9 9 void VisibilityEnvironment::LoadEnvironment() 10 10 { -
trunk/VUT/GtpVisibility/src/VisibilityManager.cpp
r65 r74 7 7 8 8 namespace GtpVisibility { 9 10 VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment) 9 //----------------------------------------------------------------------- 10 VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment): 11 mVisibilityThreshold(0) 11 12 { 12 13 mVisibilityEnvironment = visEnvironment; 13 //mVisibilityManagerType = VisibilityEnvironment::STOP_AND_WAIT; 14 //mVisibilityManager = new StopAndWaitCullingManager(NULL); 15 mCullingManagerType = VisibilityEnvironment::FRUSTUM_CULLING; 16 mCullingManager = new FrustumCullingManager(0); 14 15 mCullingManagerType = VisibilityEnvironment::STOP_AND_WAIT_CULLING; 16 mCullingManager = new StopAndWaitCullingManager(); 17 17 18 18 mQueryManager = new DummyQueryManager(0); 19 19 mPreprocessingManager = new DummyPreprocessingManager(0); 20 21 20 } 22 21 //----------------------------------------------------------------------- 23 22 VisibilityManager::~VisibilityManager() 24 23 { 25 24 delete mCullingManager; 26 25 } 27 28 void VisibilityManager::SetCullingManager(VisibilityEnvironment::CullingManagerType ocmType) 26 //----------------------------------------------------------------------- 27 void VisibilityManager::SetCullingManager( 28 VisibilityEnvironment::CullingManagerType ocmType) 29 29 { 30 30 if (mCullingManagerType != ocmType) … … 35 35 switch (ocmType) 36 36 { 37 case VisibilityEnvironment::STOP_AND_WAIT :38 mCullingManager = new StopAndWaitCullingManager( NULL);37 case VisibilityEnvironment::STOP_AND_WAIT_CULLING: 38 mCullingManager = new StopAndWaitCullingManager(); 39 39 break; 40 40 41 41 case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING: 42 mCullingManager = new CoherentHierarchicalCullingManager( NULL);42 mCullingManager = new CoherentHierarchicalCullingManager(); 43 43 break; 44 44 45 45 case VisibilityEnvironment::FRUSTUM_CULLING: 46 mCullingManager = new FrustumCullingManager( NULL);46 mCullingManager = new FrustumCullingManager(); 47 47 break; 48 48 default: 49 mCullingManager = new StopAndWaitCullingManager( NULL);49 mCullingManager = new StopAndWaitCullingManager(); 50 50 break; 51 51 } 52 52 } 53 53 } 54 54 //----------------------------------------------------------------------- 55 void VisibilityManager::SetVisibilityCullingThreshold(unsigned int visibilityThreshold) 56 { 57 mVisibilityThreshold = visibilityThreshold; 58 mCullingManager->SetVisibilityThreshold(mVisibilityThreshold); 59 } 60 //----------------------------------------------------------------------- 55 61 CullingManager *VisibilityManager::GetCullingManager() 56 62 { 57 63 return mCullingManager; 58 64 } 59 65 //----------------------------------------------------------------------- 60 66 void VisibilityManager::ApplyVisibilityCulling() 61 67 { 62 68 mCullingManager->RenderScene(); 63 69 } 64 70 //----------------------------------------------------------------------- 65 71 } // namespace GtpVisibility -
trunk/VUT/GtpVisibilityPreprocessor/include/Preprocessor.h
r68 r74 7 7 #include "ViewCellBsp.h" 8 8 #include "SceneGraph.h" 9 #include <string> 9 10 10 11 /** Namespace for the external visibility preprocessor -
trunk/VUT/GtpVisibilityPreprocessor/scripts/Preprocessor.vcproj
r71 r74 61 61 <Tool 62 62 Name="VCCLCompilerTool" 63 AdditionalIncludeDirectories="..\include" 63 64 PreprocessorDefinitions="WIN32;NDEBUG;_LIB" 64 65 RuntimeLibrary="2" 65 UsePrecompiledHeader=" 3"66 UsePrecompiledHeader="0" 66 67 WarningLevel="3" 67 68 Detect64BitPortabilityProblems="TRUE" -
trunk/VUT/Ogre/include/OgreBspHierarchyInterface.h
r59 r74 26 26 void TraverseNode(GtpVisibility::HierarchyNode *node); 27 27 void RenderNode(GtpVisibility::HierarchyNode *node); 28 bool IsLeaf(GtpVisibility::HierarchyNode *node) ;29 bool HasGeometry(GtpVisibility::HierarchyNode *node) ;28 bool IsLeaf(GtpVisibility::HierarchyNode *node) const; 29 bool HasGeometry(GtpVisibility::HierarchyNode *node) const; 30 30 bool HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 31 GtpVisibility::HierarchyNode *node2) ;31 GtpVisibility::HierarchyNode *node2) const; 32 32 33 33 void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); 34 void SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId); 34 void SetLastVisited(GtpVisibility::HierarchyNode *node, 35 const unsigned int frameId); 35 36 36 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) ;37 int LastVisited(GtpVisibility::HierarchyNode *node);37 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const; 38 unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const; 38 39 39 40 protected: -
trunk/VUT/Ogre/include/OgreOctreeHierarchyInterface.h
r59 r74 33 33 void TraverseNode(GtpVisibility::HierarchyNode *node); 34 34 void RenderNode(GtpVisibility::HierarchyNode *node); 35 bool IsLeaf(GtpVisibility::HierarchyNode *node) ;36 bool HasGeometry(GtpVisibility::HierarchyNode *node) ;35 bool IsLeaf(GtpVisibility::HierarchyNode *node) const; 36 bool HasGeometry(GtpVisibility::HierarchyNode *node) const; 37 37 bool HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 38 GtpVisibility::HierarchyNode *node2) ;38 GtpVisibility::HierarchyNode *node2) const; 39 39 40 40 void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); 41 void SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId);41 void SetLastVisited(GtpVisibility::HierarchyNode *node, const unsigned int frameId); 42 42 43 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) ;44 int LastVisited(GtpVisibility::HierarchyNode *node);43 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const; 44 unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const; 45 45 46 46 protected: -
trunk/VUT/Ogre/include/OgreSceneNodeHierarchyInterface.h
r59 r74 19 19 SceneNodeHierarchyInterface(SceneManager *sm, RenderSystem *rsys); 20 20 21 bool IsLeaf(GtpVisibility::HierarchyNode *node) ;21 bool IsLeaf(GtpVisibility::HierarchyNode *node) const; 22 22 23 23 void TraverseNode(GtpVisibility::HierarchyNode *node); 24 24 void RenderNode(GtpVisibility::HierarchyNode *node); 25 25 void PullUpVisibility(GtpVisibility::HierarchyNode *node); 26 bool HasGeometry(GtpVisibility::HierarchyNode *node) ;26 bool HasGeometry(GtpVisibility::HierarchyNode *node) const; 27 27 bool HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 28 GtpVisibility::HierarchyNode *node2) ;28 GtpVisibility::HierarchyNode *node2) const; 29 29 30 30 void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); 31 void SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId); 31 void SetLastVisited(GtpVisibility::HierarchyNode *node, 32 const unsigned int frameId); 32 33 33 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) ;34 int LastVisited(GtpVisibility::HierarchyNode *node);34 bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const; 35 unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const; 35 36 36 37 AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); -
trunk/VUT/Ogre/misc/OgreVisibilitySceneManager.def
r59 r74 1 LIBRARY Plugin_ OcclusionCullingSceneManager1 LIBRARY Plugin_VisibilitySceneManager 2 2 EXPORTS 3 3 dllStartPlugin -
trunk/VUT/Ogre/resources/VisibilityDemo.overlay
r59 r74 1 Example/ OcclusionCullingDemoOverlay1 Example/VisibilityDemoOverlay 2 2 { 3 3 zorder 500 4 4 // Stats block 5 container BorderPanel(Example/ Occlusion/OcclusionPanel)5 container BorderPanel(Example/Visibility/VisibilityPanel) 6 6 { 7 7 metrics_mode pixels … … 24 24 25 25 26 element TextArea(Example/ Occlusion/Algorithm)26 element TextArea(Example/Visibility/Algorithm) 27 27 { 28 28 metrics_mode pixels … … 37 37 colour_bottom 0.3 0.5 0.3 38 38 } 39 element TextArea(Example/ Occlusion/AlgorithmInfo)39 element TextArea(Example/Visibility/AlgorithmInfo) 40 40 { 41 41 metrics_mode pixels … … 51 51 } 52 52 53 element TextArea(Example/ Occlusion/Threshold)53 element TextArea(Example/Visibility/Threshold) 54 54 { 55 55 metrics_mode pixels … … 64 64 colour_bottom 0.3 0.5 0.3 65 65 } 66 element TextArea(Example/ Occlusion/ThresholdInfo)66 element TextArea(Example/Visibility/ThresholdInfo) 67 67 { 68 68 metrics_mode pixels … … 79 79 } 80 80 81 container BorderPanel(Example/ Occlusion/OcclusionStatsPanel)81 container BorderPanel(Example/Visibility/VisibilityStatsPanel) 82 82 { 83 83 metrics_mode pixels … … 87 87 top 5 88 88 width 450 89 height 10589 height 90 90 90 material Core/StatsBlockCenter 91 91 border_size 1 1 1 1 … … 100 100 border_bottomright_uv 0.9961 0.0039 1.0000 0.0000 101 101 102 element TextArea(Example/ Occlusion/FrustumCulledNodes)102 element TextArea(Example/Visibility/FrustumCulledNodes) 103 103 { 104 104 metrics_mode pixels … … 113 113 colour_bottom 0.3 0.5 0.3 114 114 } 115 element TextArea(Example/ Occlusion/FrustumCulledNodesInfo)116 { 117 metrics_mode pixels 118 left 180 119 top 5 120 width 90 121 height 30 122 font_name TrebuchetMSBold 123 char_height 16 124 caption : 125 colour_top 0.5 0.7 0.5 126 colour_bottom 0.3 0.5 0.3 127 } 128 element TextArea(Example/ Occlusion/QueryCulledNodes)115 element TextArea(Example/Visibility/FrustumCulledNodesInfo) 116 { 117 metrics_mode pixels 118 left 180 119 top 5 120 width 90 121 height 30 122 font_name TrebuchetMSBold 123 char_height 16 124 caption : 125 colour_top 0.5 0.7 0.5 126 colour_bottom 0.3 0.5 0.3 127 } 128 element TextArea(Example/Visibility/QueryCulledNodes) 129 129 { 130 130 metrics_mode pixels … … 139 139 colour_bottom 0.3 0.5 0.3 140 140 } 141 element TextArea(Example/ Occlusion/QueryCulledNodesInfo)142 { 143 metrics_mode pixels 144 left 180 145 top 20 146 width 90 147 height 30 148 font_name TrebuchetMSBold 149 char_height 16 150 caption : 151 colour_top 0.5 0.7 0.5 152 colour_bottom 0.3 0.5 0.3 153 } 154 element TextArea(Example/ Occlusion/TraversedNodes)141 element TextArea(Example/Visibility/QueryCulledNodesInfo) 142 { 143 metrics_mode pixels 144 left 180 145 top 20 146 width 90 147 height 30 148 font_name TrebuchetMSBold 149 char_height 16 150 caption : 151 colour_top 0.5 0.7 0.5 152 colour_bottom 0.3 0.5 0.3 153 } 154 element TextArea(Example/Visibility/TraversedNodes) 155 155 { 156 156 metrics_mode pixels … … 165 165 colour_bottom 0.3 0.5 0.3 166 166 } 167 element TextArea(Example/ Occlusion/TraversedNodesInfo)167 element TextArea(Example/Visibility/TraversedNodesInfo) 168 168 { 169 169 metrics_mode pixels … … 178 178 colour_bottom 0.3 0.5 0.3 179 179 } 180 element TextArea(Example/ Occlusion/SceneNodes)180 element TextArea(Example/Visibility/HierarchyNodes) 181 181 { 182 182 metrics_mode pixels … … 187 187 font_name TrebuchetMSBold 188 188 char_height 16 189 caption SceneNodes190 colour_top 0.5 0.7 0.5 191 colour_bottom 0.3 0.5 0.3 192 } 193 element TextArea(Example/ Occlusion/SceneNodesInfo)189 caption Hierarchy Nodes 190 colour_top 0.5 0.7 0.5 191 colour_bottom 0.3 0.5 0.3 192 } 193 element TextArea(Example/Visibility/HierarchyNodesInfo) 194 194 { 195 195 metrics_mode pixels … … 204 204 colour_bottom 0.3 0.5 0.3 205 205 } 206 element TextArea(Example/ Occlusion/HierarchyNodes)206 element TextArea(Example/Visibility/RenderedNodes) 207 207 { 208 208 metrics_mode pixels … … 213 213 font_name TrebuchetMSBold 214 214 char_height 16 215 caption HierarchyNodes216 colour_top 0.5 0.7 0.5 217 colour_bottom 0.3 0.5 0.3 218 } 219 element TextArea(Example/ Occlusion/HierarchyNodesInfo)215 caption Rendered Nodes 216 colour_top 0.5 0.7 0.5 217 colour_bottom 0.3 0.5 0.3 218 } 219 element TextArea(Example/Visibility/RenderedNodesInfo) 220 220 { 221 221 metrics_mode pixels 222 222 left 180 223 223 top 65 224 width 90225 height 30226 font_name TrebuchetMSBold227 char_height 16228 caption :229 colour_top 0.5 0.7 0.5230 colour_bottom 0.3 0.5 0.3231 }232 element TextArea(Example/Occlusion/RenderedNodes)233 {234 metrics_mode pixels235 left 5236 top 80237 width 180238 height 30239 font_name TrebuchetMSBold240 char_height 16241 caption Rendered Nodes242 colour_top 0.5 0.7 0.5243 colour_bottom 0.3 0.5 0.3244 }245 element TextArea(Example/Occlusion/RenderedNodesInfo)246 {247 metrics_mode pixels248 left 180249 top 80250 224 width 90 251 225 height 30 -
trunk/VUT/Ogre/scripts/Plugin_VisibilitySceneManager.vcproj
r64 r74 40 40 LinkIncremental="2" 41 41 SuppressStartupBanner="TRUE" 42 AdditionalLibraryDirectories=""$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)";"$(OGRE_PATH)\Dependencies\lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\ debug";..\lib\debug;..\..\lib\debug;..\..\GtpVisibility\lib\debug"42 AdditionalLibraryDirectories=""$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)";"$(OGRE_PATH)\Dependencies\lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"..\lib\$(ConfigurationName)";"..\..\lib\$(ConfigurationName)";"..\..\GtpVisibility\lib\$(ConfigurationName)"" 43 43 ModuleDefinitionFile="..\misc\OgreVisibilitySceneManager.def" 44 44 GenerateDebugInformation="TRUE" … … 87 87 EnableFiberSafeOptimizations="TRUE" 88 88 OptimizeForProcessor="2" 89 AdditionalIncludeDirectories=" ..\include;$(OGRE_PATH)\OgreMain\include"90 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_OCCLUSIONCULLINGSCENEMANAGER_EXPORTS "89 AdditionalIncludeDirectories=""$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Dependencies\include";..\include;..\..\GtpVisibility\include" 90 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_OCCLUSIONCULLINGSCENEMANAGER_EXPORTS;GTP_VISIBILITY_MODIFIED_OGRE" 91 91 StringPooling="TRUE" 92 92 RuntimeLibrary="2" … … 102 102 Name="VCLinkerTool" 103 103 IgnoreImportLibrary="TRUE" 104 AdditionalDependencies="OgreMain.lib "104 AdditionalDependencies="OgreMain.lib CEGUIBase.lib OgreGUIRenderer.lib Plugin_OctreeSceneManager.lib GtpVisibility.lib" 105 105 OutputFile="$(OutDir)/Plugin_VisibilitySceneManager.dll" 106 106 Version="0.99" 107 107 LinkIncremental="1" 108 108 SuppressStartupBanner="TRUE" 109 AdditionalLibraryDirectories=""$(OGRE_PATH)\ OgreMain\lib\$(ConfigurationName)";"..\..\..\Dependencies\lib\$(ConfigurationName)""109 AdditionalLibraryDirectories=""$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib";"..\..\GtpVisibility\lib\$(ConfigurationName)";"..\..\lib\$(ConfigurationName)";"..\lib\$(ConfigurationName)";"$(OGRE_PATH)\Dependencies\lib\$(ConfigurationName)"" 110 110 ModuleDefinitionFile="..\misc\OgreVisibilitySceneManager.def" 111 111 GenerateDebugInformation="TRUE" … … 144 144 Name="SceneManager_Plugins" 145 145 Filter=""> 146 <File 147 RelativePath="..\..\GtpVisibility\include\VisibilityManager.h"> 148 </File> 146 149 <Filter 147 150 Name="Header Files" … … 154 157 </File> 155 158 <File 156 RelativePath="..\include\OgreVisibilityDotSceneManager.h">157 </File>158 <File159 159 RelativePath="..\include\OgreVisibilityOctreeSceneManager.h"> 160 160 </File> … … 171 171 <File 172 172 RelativePath="..\src\OgreOctreeHierarchyInterface.cpp"> 173 </File>174 <File175 RelativePath="..\src\OgreVisibilityDotSceneManager.cpp">176 173 </File> 177 174 <File … … 202 199 </File> 203 200 <File 201 RelativePath="..\include\OgreVisibilityOptionsManager.h"> 202 </File> 203 <File 204 204 RelativePath="..\include\OgreVisibilitySceneManager.h"> 205 205 </File> … … 221 221 </File> 222 222 <File 223 RelativePath="..\src\OgreVisibilityOptionsManager.cpp"> 224 </File> 225 <File 223 226 RelativePath="..\src\OgreVisibilitySceneManager.cpp"> 227 </File> 228 <File 229 RelativePath="..\src\OgreVisibilitySceneManagerDll.cpp"> 224 230 </File> 225 231 </Filter> -
trunk/VUT/Ogre/src/OgreBspHierarchyInterface.cpp
r59 r74 16 16 } 17 17 //----------------------------------------------------------------------- 18 bool BspHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) 18 bool BspHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) const 19 19 { 20 20 return true; 21 21 } 22 22 //----------------------------------------------------------------------- 23 bool BspHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) 23 bool BspHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) const 24 24 { 25 25 return true; … … 27 27 //----------------------------------------------------------------------- 28 28 bool BspHierarchyInterface::HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 29 GtpVisibility::HierarchyNode *node2) 29 GtpVisibility::HierarchyNode *node2) const 30 30 { 31 31 return true; … … 37 37 } 38 38 //----------------------------------------------------------------------- 39 void BspHierarchyInterface::SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible) 39 void BspHierarchyInterface::SetNodeVisible(GtpVisibility::HierarchyNode *node, 40 const bool visible) 40 41 { 41 42 } 42 43 //----------------------------------------------------------------------- 43 void BspHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId) 44 void BspHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, 45 const unsigned int frameId) 44 46 { 45 47 } … … 53 55 } 54 56 //----------------------------------------------------------------------- 55 bool BspHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) 57 bool BspHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) const 56 58 { 57 59 return true; 58 60 } 59 61 //----------------------------------------------------------------------- 60 int BspHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) 62 unsigned int BspHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) const 61 63 { 62 64 return 0; -
trunk/VUT/Ogre/src/OgreOctreeHierarchyInterface.cpp
r59 r74 2 2 #include "OgreVisibilityOctreeSceneManager.h" 3 3 #include <OgreOctree.h> 4 //#include <windows.h>4 #include <windows.h> 5 5 6 6 namespace Ogre { … … 19 19 RenderNode(node); 20 20 21 for(int i=0; i<8; i++)21 for(int i=0; i<8; ++i) 22 22 { 23 23 Octree *nextChild = 24 24 static_cast<Octree *>(node)->mChildren[(i & 4) >> 2][(i & 2) >> 1][i & 1]; 25 25 26 if(nextChild)26 if (nextChild) 27 27 { 28 28 mDistanceQueue->push(nextChild); … … 31 31 } 32 32 //----------------------------------------------------------------------- 33 bool OctreeHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) 33 bool OctreeHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) const 34 34 { 35 35 Octree *octant = static_cast<Octree *>(node); … … 37 37 for(int i=0; i<8; i++) 38 38 { 39 if (octant->mChildren[(i & 4) >> 2][(i & 2) >> 1][i & 1])39 if (octant->mChildren[(i & 4) >> 2][(i & 2) >> 1][i & 1]) 40 40 return false; 41 41 } … … 44 44 } 45 45 //----------------------------------------------------------------------- 46 bool OctreeHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) 46 bool OctreeHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) const 47 47 { 48 48 return static_cast<Octree *>(node)->numNodes() > 0; … … 55 55 //----------------------------------------------------------------------- 56 56 bool OctreeHierarchyInterface::HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 57 GtpVisibility::HierarchyNode *node2) 57 GtpVisibility::HierarchyNode *node2) const 58 58 { 59 59 // matt: change this (inefficient) … … 66 66 } 67 67 //----------------------------------------------------------------------- 68 Real OctreeHierarchyInterface::GetSquaredViewDepth(const Camera* cam, const AxisAlignedBox* box) const 68 Real OctreeHierarchyInterface::GetSquaredViewDepth(const Camera* cam, 69 const AxisAlignedBox* box) const 69 70 { 70 Vector3 mid 71 Vector3 mid = ((box->getMinimum() - box->getMaximum()) * 0.5) + box->getMinimum(); 71 72 return (cam->getDerivedPosition() - mid).squaredLength(); 72 73 } 73 74 //----------------------------------------------------------------------- 74 void OctreeHierarchyInterface::SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible) 75 void OctreeHierarchyInterface::SetNodeVisible(GtpVisibility::HierarchyNode *node, 76 const bool visible) 75 77 { 76 78 #ifdef GTP_VISIBILITY_MODIFIED_OGRE … … 79 81 } 80 82 //----------------------------------------------------------------------- 81 void OctreeHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId) 83 void OctreeHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, 84 const unsigned int frameId) 82 85 { 83 86 #ifdef GTP_VISIBILITY_MODIFIED_OGRE … … 117 120 } 118 121 //----------------------------------------------------------------------- 119 bool OctreeHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) 122 bool OctreeHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) const 120 123 { 121 124 #ifdef GTP_VISIBILITY_MODIFIED_OGRE … … 126 129 } 127 130 //----------------------------------------------------------------------- 128 int OctreeHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) 131 unsigned int OctreeHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) const 129 132 { 130 133 #ifdef GTP_VISIBILITY_MODIFIED_OGRE -
trunk/VUT/Ogre/src/OgrePlatformHierarchyInterface.cpp
r59 r74 10 10 11 11 //----------------------------------------------------------------------- 12 PlatformHierarchyInterface::PlatformHierarchyInterface(SceneManager *sm, RenderSystem *rsys) 12 PlatformHierarchyInterface::PlatformHierarchyInterface(SceneManager *sm, RenderSystem *rsys): 13 mSceneManager(sm), mRenderSystem(rsys) 13 14 { 14 15 mHalfBoundingBox[0] = mHalfBoundingBox[1] = NULL; … … 45 46 46 47 mRenderSystem->_setWorldMatrix(Ogre::Matrix4::IDENTITY); 47 48 48 49 static RenderOperation ro; 49 50 50 mSceneManager->useRenderableViewProjMode(halfbox); 51 mSceneManager->useRenderableViewProjMode(halfbox); 52 mSceneManager->setPass(halfbox->getTechnique()->getPass(0)); 51 53 halfbox->getRenderOperation(ro); 52 54 ro.srcRenderable = halfbox; … … 66 68 return mHalfBoundingBox[half]; 67 69 } 68 //-----------------------------------------------------------------------69 /*void OcclusionHierarchyInterface::setNumHierarchyNodes(int num)70 {71 mNumSceneNodes = num;72 }*/73 70 //----------------------------------------------------------------------- 74 71 void PlatformHierarchyInterface::SetCamera(Ogre::Camera *cam) -
trunk/VUT/Ogre/src/OgreSceneNodeHierarchyInterface.cpp
r59 r74 49 49 } 50 50 //----------------------------------------------------------------------- 51 bool SceneNodeHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) 51 bool SceneNodeHierarchyInterface::IsLeaf(GtpVisibility::HierarchyNode *node) const 52 52 { 53 53 return (static_cast<SceneNode *>(node)->numChildren() == 0); 54 54 } 55 55 //----------------------------------------------------------------------- 56 bool SceneNodeHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) 56 bool SceneNodeHierarchyInterface::HasGeometry(GtpVisibility::HierarchyNode *node) const 57 57 { 58 58 SceneNode *sceneNode = static_cast<SceneNode *>(node); … … 75 75 //----------------------------------------------------------------------- 76 76 bool SceneNodeHierarchyInterface::HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 77 GtpVisibility::HierarchyNode *node2) 77 GtpVisibility::HierarchyNode *node2) const 78 78 { 79 79 SceneNode *sceneNode1 = static_cast<SceneNode *>(node1); … … 92 92 } 93 93 //----------------------------------------------------------------------- 94 void SceneNodeHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId) 94 void SceneNodeHierarchyInterface::SetLastVisited(GtpVisibility::HierarchyNode *node, 95 const unsigned int frameId) 95 96 { 96 97 #ifdef GTP_VISIBILITY_MODIFIED_OGRE … … 100 101 } 101 102 //----------------------------------------------------------------------- 102 bool SceneNodeHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) 103 bool SceneNodeHierarchyInterface::IsNodeVisible(GtpVisibility::HierarchyNode *node) const 103 104 { 104 105 #ifdef GTP_VISIBILITY_MODIFIED_OGRE … … 110 111 } 111 112 //----------------------------------------------------------------------- 112 int SceneNodeHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) 113 unsigned int SceneNodeHierarchyInterface::LastVisited(GtpVisibility::HierarchyNode *node) const 113 114 { 114 115 #ifdef GTP_VISIBILITY_MODIFIED_OGRE -
trunk/VUT/Ogre/src/OgreVisibilityOctreeSceneManager.cpp
r59 r74 1 1 #include "OgreVisibilityOctreeSceneManager.h" 2 #include "OgreVisibilityOptionsManager.h" 2 3 #include <OgreMath.h> 3 4 #include <OgreIteratorWrappers.h> … … 17 18 18 19 //mDisplayNodes = true; 19 //mShowBoundingBoxes = true;20 //mShowBoxes = true;20 mShowBoundingBoxes = true; 21 mShowBoxes = true; 21 22 //mMaxDepth = 20; 22 23 } … … 45 46 setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE); 46 47 47 mHierarchyInterface->InitFrame(m SceneRoot, mCameraInProgress);48 mHierarchyInterface->InitFrame(mOctree, mCameraInProgress); 48 49 mVisibilityManager->ApplyVisibilityCulling(); 49 50 … … 66 67 void VisibilityOctreeSceneManager::_updateSceneGraph(Camera* cam) 67 68 { 68 //mOcclusionOctreeHierarchyInterface->setNumSceneNodes((int)mSceneNodes.size());69 69 mVisibilityManager->GetCullingManager()->SetHierarchyInterface(mHierarchyInterface); 70 70 mHierarchyInterface->SetRenderSystem(mDestRenderSystem); … … 78 78 bool VisibilityOctreeSceneManager::setOption(const String & key, const void * val) 79 79 { 80 return /*mVisibilitySceneTraverser->setOption( key, val) || */OctreeSceneManager::setOption( key, val ); 80 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 81 setOption(key, val) || OctreeSceneManager::setOption(key, val); 81 82 } 82 83 //----------------------------------------------------------------------- 83 84 bool VisibilityOctreeSceneManager::getOption(const String & key, void *val) 84 85 { 85 return /*mVisibilitySceneTraverser->getOption( key, val) || */OctreeSceneManager::getOption(key, val); 86 if (key == "NumHierarchyNodes") 87 { 88 * static_cast<unsigned int *>(val) = (unsigned int)mNumOctreeNodes; 89 return true; 90 } 91 92 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 93 getOption(key, val) && OctreeSceneManager::getOption(key, val); 86 94 } 87 95 //----------------------------------------------------------------------- … … 93 101 bool VisibilityOctreeSceneManager::getOptionKeys(StringVector & refKeys) 94 102 { 95 return /*mVisibilitySceneTraverser->getOptionKeys ( refKeys ) || */OctreeSceneManager::getOptionKeys(refKeys); 103 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 104 getOptionKeys ( refKeys ) || OctreeSceneManager::getOptionKeys(refKeys); 96 105 } 97 106 //----------------------------------------------------------------------- -
trunk/VUT/Ogre/src/OgreVisibilitySceneManager.cpp
r59 r74 5 5 #include "OgreVisibilitySceneManager.h" 6 6 #include "OgreSceneNodeHierarchyInterface.h" 7 #include "OgreVisibilityOptionsManager.h" 7 8 8 9 //#include <windows.h> … … 45 46 46 47 mHierarchyInterface->InitFrame(mSceneRoot, mCameraInProgress); 47 48 48 mVisibilityManager->ApplyVisibilityCulling(); 49 49 … … 61 61 void VisibilitySceneManager::_updateSceneGraph(Camera* cam) 62 62 { 63 //mVisibilitySceneTraverser->setNumSceneNodes((int)mSceneNodes.size());64 63 mVisibilityManager->GetCullingManager()->SetHierarchyInterface(mHierarchyInterface); 65 64 mHierarchyInterface->SetRenderSystem(mDestRenderSystem); 66 65 67 //mVisibilitySceneTraverser->setNumQueries((int)mSceneNodes.size());68 69 66 SceneManager::_updateSceneGraph(cam); 70 67 } … … 72 69 bool VisibilitySceneManager::setOption(const String & key, const void * val) 73 70 { 74 //mVisibilitySceneTraverser->setOption(key, val);75 returnSceneManager::setOption(key, val);71 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 72 setOption(key, val) || SceneManager::setOption(key, val); 76 73 } 77 74 //----------------------------------------------------------------------- 78 75 bool VisibilitySceneManager::getOption(const String & key, void *val) 79 76 { 80 //mVisibilitySceneTraverser->getOption(key, val); 77 if (key == "NumHierarchyNodes") 78 { 79 * static_cast<unsigned int *>(val) = (unsigned int)mSceneNodes.size(); 80 return true; 81 } 81 82 82 return SceneManager::getOption(key, val); 83 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 84 getOption(key, val) && SceneManager::getOption(key, val); 83 85 } 84 86 //----------------------------------------------------------------------- … … 90 92 bool VisibilitySceneManager::getOptionKeys(StringVector & refKeys) 91 93 { 92 SceneManager::getOptionKeys(refKeys); 93 //mVisibilitySceneTraverser->getOptionKeys( refKeys ); 94 95 return true; 94 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 95 getOptionKeys(refKeys) || SceneManager::getOptionKeys(refKeys); 96 96 } 97 97 //----------------------------------------------------------------------- -
trunk/VUT/Ogre/src/OgreVisibilitySceneManagerDll.cpp
r59 r74 24 24 */ 25 25 26 #include <Ogre OcclusionCullingTerrainSceneManager.h>27 #include <Ogre OcclusionCullingOctreeSceneManager.h>28 //#include <Ogre OcclusionCullingDotSceneManager.h>26 #include <OgreVisibilityTerrainSceneManager.h> 27 #include <OgreVisibilityOctreeSceneManager.h> 28 //#include <OgreVisibilityDotSceneManager.h> 29 29 #include <OgreHeightmapTerrainPageSource.h> 30 #include " GtpVisibilityManager.h"31 #include " GtpVisibilityStopAndWaitManager.h"32 #include " GtpVisibilityEnvironment.h"30 #include "VisibilityManager.h" 31 #include "StopAndWaitCullingManager.h" 32 #include "VisibilityEnvironment.h" 33 33 34 34 #include <OgreRoot.h> 35 35 36 36 //#include <windows.h> 37 GtpVisibility:: Environment *visEnv;38 GtpVisibility:: Manager *visManager;37 GtpVisibility::VisibilityEnvironment *visEnv; 38 GtpVisibility::VisibilityManager *visManager; 39 39 40 40 namespace Ogre { 41 41 42 // OcclusionCullingDotSceneManager *occlusionDotPlugin;43 OcclusionCullingOctreeSceneManager *cullingOctreePlugin;44 OcclusionCullingTerrainSceneManager *cullingTerrainPlugin;42 // VisibilityDotSceneManager *occlusionDotPlugin; 43 VisibilityOctreeSceneManager *cullingOctreePlugin; 44 VisibilityTerrainSceneManager *cullingTerrainPlugin; 45 45 46 46 HeightmapTerrainPageSource *heightmapTerrainPageSource; … … 49 49 extern "C" void dllStartPlugin(void) 50 50 { 51 visManager = new GtpVisibility:: Manager(visEnv);51 visManager = new GtpVisibility::VisibilityManager(visEnv); 52 52 // Create new scene manager 53 //occlusionDotPlugin = new OcclusionCullingDotSceneManager();54 cullingOctreePlugin = new OcclusionCullingOctreeSceneManager(visManager);55 cullingTerrainPlugin = new OcclusionCullingTerrainSceneManager(visManager);53 //occlusionDotPlugin = new VisibilityDotSceneManager(); 54 cullingOctreePlugin = new VisibilityOctreeSceneManager(visManager); 55 cullingTerrainPlugin = new VisibilityTerrainSceneManager(visManager); 56 56 heightmapTerrainPageSource = new HeightmapTerrainPageSource(); 57 57 -
trunk/VUT/Ogre/src/OgreVisibilityTerrainSceneManager.cpp
r59 r74 1 1 #include "OgreVisibilityTerrainSceneManager.h" 2 2 #include "OgreOctreeHierarchyInterface.h" 3 #include "OgreVisibilityOptionsManager.h" 3 4 #include <OgreMath.h> 4 5 #include <OgreIteratorWrappers.h> … … 18 19 19 20 setVisibilityManager(visManager); 20 //mShowBoxes = true;21 mShowBoxes = true; 21 22 //mDisplayNodes = true; 22 //mShowBoundingBoxes = true;23 mShowBoundingBoxes = true; 23 24 mMaxDepth = 20; 24 25 } … … 47 48 setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE); 48 49 49 mHierarchyInterface->InitFrame(mSceneRoot, mCameraInProgress); 50 mHierarchyInterface->InitFrame(mOctree, mCameraInProgress); 51 mVisibilityManager->ApplyVisibilityCulling(); 50 52 51 mVisibilityManager->ApplyVisibilityCulling();52 53 #ifdef GTP_VISIBILITY_MODIFIED_OGRE 53 54 _deleteRenderedQueueGroups(); … … 70 71 mVisibilityManager->GetCullingManager()->SetHierarchyInterface(mHierarchyInterface); 71 72 mHierarchyInterface->SetRenderSystem(mDestRenderSystem); 73 72 74 #ifdef GTP_VISIBILITY_MODIFIED_OGRE 73 75 mHierarchyInterface->SetNumOctreeNodes(mNumOctreeNodes); … … 78 80 bool VisibilityTerrainSceneManager::setOption(const String & key, const void * val) 79 81 { 80 return /*mOcclusionOctreeHierarchyInterface->setOption( key, val) || */TerrainSceneManager::setOption( key, val ); 82 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 83 setOption(key, val) || TerrainSceneManager::setOption(key, val); 81 84 } 82 85 //----------------------------------------------------------------------- 83 86 bool VisibilityTerrainSceneManager::getOption(const String & key, void *val) 84 87 { 85 return /*mOcclusionOctreeHierarchyInterface->getOption( key, val) || */TerrainSceneManager::getOption( key, val ) ; 88 if (key == "NumHierarchyNodes") 89 { 90 * static_cast<unsigned int *>(val) = (unsigned int)mNumOctreeNodes; 91 return true; 92 } 93 94 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 95 getOption(key, val) && TerrainSceneManager::getOption(key, val); 86 96 } 87 97 //----------------------------------------------------------------------- 88 98 bool VisibilityTerrainSceneManager::getOptionValues(const String & key, StringVector &refValueList) 89 99 { 90 return TerrainSceneManager::getOptionValues( key, refValueList 100 return TerrainSceneManager::getOptionValues( key, refValueList); 91 101 } 92 102 //----------------------------------------------------------------------- 93 103 bool VisibilityTerrainSceneManager::getOptionKeys(StringVector & refKeys) 94 104 { 95 return /*mOcclusionOctreeHierarchyInterface->getOptionKeys ( refKeys ) ||*/ TerrainSceneManager::getOptionKeys( refKeys ); 105 return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface). 106 getOptionKeys(refKeys) || TerrainSceneManager::getOptionKeys(refKeys); 96 107 } 97 108 //----------------------------------------------------------------------- -
trunk/VUT/chcdemo/HierarchyNode.cpp
r10 r74 151 151 } 152 152 153 int HierarchyNode::LastVisited()153 unsigned int HierarchyNode::LastVisited() 154 154 { 155 155 return mLastVisited; 156 156 } 157 157 158 void HierarchyNode::SetLastVisited( int lastVisited)158 void HierarchyNode::SetLastVisited(unsigned int lastVisited) 159 159 { 160 160 mLastVisited = lastVisited; -
trunk/VUT/scripts/GtpVisibility.sln
r71 r74 11 11 EndProjectSection 12 12 EndProject 13 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCulling DotScene", "..\work\TestCullingDotScene\TestCullingDotScene.vcproj", "{BE13944C-D05E-467F-B0AC-8A65A3B5FE60}"13 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCullingTerrain", "..\work\TestCullingTerrain\TestCullingTerrain.vcproj", "{248F19A6-2FE0-4F5D-8928-E0EA10609887}" 14 14 ProjectSection(ProjectDependencies) = postProject 15 15 {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} 16 16 {101A7691-74F3-48B4-96A3-CF35578F5900} = {101A7691-74F3-48B4-96A3-CF35578F5900} 17 EndProjectSection18 EndProject19 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCullingTerrain", "..\work\TestCullingTerrain\TestCullingTerrain.vcproj", "{248F19A6-2FE0-4F5D-8928-E0EA10609887}"20 ProjectSection(ProjectDependencies) = postProject21 {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436}22 17 {101A7691-74F3-48B4-96A3-CF35578F5900} = {101A7691-74F3-48B4-96A3-CF35578F5900} 23 18 EndProjectSection … … 45 40 {248F19A6-2FE0-4F5D-8928-E0EA10609887}.Release.ActiveCfg = Release|Win32 46 41 {248F19A6-2FE0-4F5D-8928-E0EA10609887}.Release.Build.0 = Release|Win32 47 {BE13944C-D05E-467F-B0AC-8A65A3B5FE60}.Debug.ActiveCfg = Debug|Win3248 {BE13944C-D05E-467F-B0AC-8A65A3B5FE60}.Debug.Build.0 = Debug|Win3249 {BE13944C-D05E-467F-B0AC-8A65A3B5FE60}.Release.ActiveCfg = Release|Win3250 {BE13944C-D05E-467F-B0AC-8A65A3B5FE60}.Release.Build.0 = Release|Win3251 42 {248F19A6-2FE0-4F5D-8928-E0EA10609887}.Debug.ActiveCfg = Debug|Win32 52 43 {248F19A6-2FE0-4F5D-8928-E0EA10609887}.Debug.Build.0 = Debug|Win32 -
trunk/VUT/work/TestCulling/TestCulling.vcproj
r64 r74 21 21 Name="VCCLCompilerTool" 22 22 Optimization="0" 23 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../include "24 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_DEBUG;WIN32;_STLP_DEBUG;PLUGIN_TERRAIN_IMPORTS "23 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../include;../../GtpVisibility/include" 24 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_DEBUG;WIN32;_STLP_DEBUG;PLUGIN_TERRAIN_IMPORTS;GTP_VISIBILITY_MODIFIED_OGRE" 25 25 MinimalRebuild="TRUE" 26 26 BasicRuntimeChecks="3" … … 37 37 OutputFile="$(OGRE_PATH)/Samples/Common/bin/Debug/TestCulling.exe" 38 38 LinkIncremental="2" 39 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\ Debug";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\debug";"$(OGRE_PATH)\OgreMain\Lib\Debug";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\debug";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib""39 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\$(ConfigurationName)";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\OgreMain\Lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib"" 40 40 GenerateDebugInformation="TRUE" 41 41 ProgramDatabaseFile="$(OutDir)/TestCulling.pdb" … … 66 66 <Configuration 67 67 Name="Release|Win32" 68 OutputDirectory=" Release"69 IntermediateDirectory=" Release"68 OutputDirectory=".\bin\$(ConfigurationName)" 69 IntermediateDirectory=".\obj\$(ConfigurationName)" 70 70 ConfigurationType="1" 71 71 CharacterSet="2"> 72 72 <Tool 73 73 Name="VCCLCompilerTool" 74 AdditionalIncludeDirectories=" ..\..\..\Samples\Common\Include, ..\..\..\OgreMain\include"75 PreprocessorDefinitions="_WINDOWS ,_STLP_USE_DYNAMIC_LIB,OGRE_LIBRARY_IMPORTS,_RELEASE,WIN32,_STLP_RELEASE"74 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../include;../../GtpVisibility/include" 75 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_RELEASE;WIN32;_STLP_RELEASE;GTP_VISIBILITY_MODIFIED_OGRE" 76 76 RuntimeLibrary="2" 77 77 UsePrecompiledHeader="0" … … 83 83 <Tool 84 84 Name="VCLinkerTool" 85 AdditionalDependencies="OGREMain.LIB "86 OutputFile=" ..\..\..\Samples\Common\Bin\Release\TestCulling.exe"85 AdditionalDependencies="OGREMain.LIB Plugin_OctreeSceneManager.lib CEGUIBase.lib OgreGUIRenderer.lib" 86 OutputFile="$(OGRE_PATH)/Samples/Common/bin/Release/TestCulling.exe" 87 87 LinkIncremental="1" 88 AdditionalLibraryDirectories=" ..\..\..\OgreMain\Lib\Release"88 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\$(ConfigurationName)";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\OgreMain\Lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib"" 89 89 GenerateDebugInformation="TRUE" 90 90 SubSystem="2" -
trunk/VUT/work/TestCulling/TestCullingApplication.cpp
r61 r74 3 3 TestCullingApplication.cpp 4 4 \brief 5 Tests the occlusionculling algorithm5 Tests the visibility culling algorithm 6 6 */ 7 7 … … 15 15 #include "Ogre.h" 16 16 #include "TestCullingApplication.h" 17 //#include "OgreVisibilitySceneTraverser.h"18 17 19 18 #define WIN32_LEAN_AND_MEAN … … 93 92 //----------------------------------------------------------------------- 94 93 void TestCullingApplication::generateSceneObject(const Vector3 &translationRatio, 95 const Vector3 &rotationRatio, const int idx, const String& entName) 94 const Vector3 &rotationRatio, 95 const int idx, 96 const String& entName) 96 97 { 97 98 Vector3 rotation = mMinAngle + rotationRatio * (mMaxAngle - mMinAngle); 98 Vector3 translation = mMinTranslation + translationRatio * (mMaxTranslation - mMinTranslation); 99 Vector3 translation = mMinTranslation + 100 translationRatio * (mMaxTranslation - mMinTranslation); 99 101 100 102 char name[16]; 101 103 sprintf( name, "object%d", idx ); 102 104 103 Entity *ent = mSceneMgr->createEntity( name, entName ); 104 SceneNode *node = mSceneMgr->getRootSceneNode()->createChildSceneNode( String(name) + "Node", translation); 105 Entity *ent = mSceneMgr->createEntity(name, entName); 106 SceneNode *node = mSceneMgr->getRootSceneNode()-> 107 createChildSceneNode(String(name) + "Node", translation); 105 108 node->attachObject(ent); 106 109 node->scale(0.1,0.1,0.1); … … 150 153 mRotateSpeed *= 2; 151 154 152 mCurrentAlgorithm = 0;//VisibilitySceneTraverser::RENDER_COHERENT;155 mCurrentAlgorithm = GtpVisibility::VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING; 153 156 mThreshold = 0; 154 157 … … 161 164 Overlay* pOver = OverlayManager::getSingleton().getByName("Example/VisibilityDemoOverlay"); 162 165 163 mAlgorithmInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/AlgorithmInfo"); 164 mThresholdInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/ThresholdInfo"); 165 mFrustumCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/FrustumCulledNodesInfo"); 166 mQueryCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/QueryCulledNodesInfo"); 167 mTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/TraversedNodesInfo"); 168 mSceneNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/SceneNodesInfo"); 169 mHierarchyNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/HierarchyNodesInfo"); 170 mRenderedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/RenderedNodesInfo"); 166 mAlgorithmInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/AlgorithmInfo"); 167 mThresholdInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/ThresholdInfo"); 168 mFrustumCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/FrustumCulledNodesInfo"); 169 mQueryCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/QueryCulledNodesInfo"); 170 mTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/TraversedNodesInfo"); 171 mHierarchyNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/HierarchyNodesInfo"); 172 mRenderedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/RenderedNodesInfo"); 171 173 172 174 mAlgorithmInfo->setCaption(": " + mCurrentAlgorithmCaptions[mCurrentAlgorithm]); … … 175 177 mQueryCulledNodesInfo->setCaption(": 0"); 176 178 mTraversedNodesInfo->setCaption(": 0"); 177 mSceneNodesInfo->setCaption(": 0");178 179 mHierarchyNodesInfo->setCaption(": 0"); 179 180 mRenderedNodesInfo->setCaption(": 0"); … … 275 276 void MouseQueryListener::changeAlgorithm() 276 277 { 277 //mCurrentAlgorithm = ++mCurrentAlgorithm % VisibilitySceneTraverser::NUM_RENDERMODES;278 mCurrentAlgorithm = ++mCurrentAlgorithm % GtpVisibility::VisibilityEnvironment::NUM_CULLING_MANAGERS, 278 279 279 280 mAlgorithmInfo->setCaption(": " + mCurrentAlgorithmCaptions[mCurrentAlgorithm]); … … 295 296 mTraversedNodesInfo->setCaption(str); 296 297 297 mSceneMgr->getOption("NumSceneNodes", &opt); sprintf(str,": %d", opt); 298 mSceneNodesInfo->setCaption(str); 299 300 mSceneMgr->getOption("NumOctreeNodes", &opt); sprintf(str,": %d", opt); 298 mSceneMgr->getOption("NumHierarchyNodes", &opt); sprintf(str,": %d", opt); 301 299 mHierarchyNodesInfo->setCaption(str); 302 300 -
trunk/VUT/work/TestCulling/TestCullingApplication.h
r61 r74 5 5 #include "CEGUIForwardRefs.h" 6 6 #include "ExampleApplication.h" 7 //#include "OgreVisibilitySceneTraverser.h"7 #include "VisibilityEnvironment.h" 8 8 9 9 … … 18 18 } 19 19 20 String mCurrentAlgorithmCaptions[ 3] =20 String mCurrentAlgorithmCaptions[GtpVisibility::VisibilityEnvironment::NUM_CULLING_MANAGERS] = 21 21 { 22 " Cull Frustum",23 "Stop and Wait ",24 "Coherent OcclusionCulling"22 "View Frustum Culling", 23 "Stop and Wait Culling", 24 "Coherent Hierarchical Culling" 25 25 }; 26 26 … … 80 80 OverlayElement *mTraversedNodesInfo; 81 81 OverlayElement *mHierarchyNodesInfo; 82 OverlayElement *mSceneNodesInfo;83 82 OverlayElement *mRenderedNodesInfo; 84 83 }; -
trunk/VUT/work/TestCullingTerrain/TerrainContentGenerator.cpp
r61 r74 3 3 TerrainContentGenerator.cpp 4 4 \brief 5 Creates content for the terrain ,5 Creates content for the terrain. 6 6 */ 7 7 #include "TerrainContentGenerator.h" 8 8 9 /********************************************/ 10 /* TerrainContentGenerator implementation */ 11 /********************************************/ 9 12 //----------------------------------------------------------------------- 10 13 TerrainContentGenerator::TerrainContentGenerator( SceneManager *sm, RayQueryExecutor *rayQueryEx ) … … 13 16 mRayQueryExecutor = rayQueryEx; 14 17 15 mMin Translation = Vector3(-70.0f, -70.0f,0.0f);16 mMax Translation = Vector3(70.0f, 70.0f, 600.0f);18 mMinPos = Vector3(-200.0f, -70.0f, 200.0f); 19 mMaxPos = Vector3(200.0f, 70.0f, 200.0f); 17 20 18 21 mMinAngle = 0; … … 48 51 // Setup the ray scene query 49 52 Real rotation = mMinAngle + rotationRatio.x * (mMaxAngle - mMinAngle); 50 Vector3 translation = mMinTranslation + translationRatio * (mMaxTranslation - mMinTranslation);53 Vector3 position = mMinPos + translationRatio * (mMaxPos - mMinPos); 51 54 52 translation.y = 5000;55 position.y = 5000; 53 56 54 57 Vector3 queryResult; 55 58 56 if(mRayQueryExecutor->executeRayQuery(&queryResult, translation, Vector3::NEGATIVE_UNIT_Y))59 if(mRayQueryExecutor->executeRayQuery(&queryResult, position, Vector3::NEGATIVE_UNIT_Y)) 57 60 { 58 61 char name[16]; … … 60 63 61 64 Entity *ent = mSceneMgr->createEntity(name, entName); 62 SceneNode *currentObject = mSceneMgr->getRootSceneNode( )->createChildSceneNode( String(name) + "Node", queryResult); 65 SceneNode *currentObject = mSceneMgr->getRootSceneNode()-> 66 createChildSceneNode(String(name) + "Node", queryResult); 63 67 currentObject->attachObject(ent); 64 68 currentObject->setScale(0.1f, 0.1f, 0.1f); 65 69 } 66 70 } 71 /****************************************/ 72 /* RayQueryExecutor implementation */ 73 /****************************************/ 67 74 //----------------------------------------------------------------------- 68 RayQueryExecutor::RayQueryExecutor( SceneManager *sm)75 RayQueryExecutor::RayQueryExecutor(SceneManager *sm) 69 76 { 70 77 mRaySceneQuery = sm->createRayQuery(Ray()); … … 76 83 } 77 84 //----------------------------------------------------------------------- 78 bool RayQueryExecutor::executeRayQuery( Vector3 *result, const Vector3 &pos, const Vector3 &dir)85 bool RayQueryExecutor::executeRayQuery(Vector3 *result, const Vector3 &pos, const Vector3 &dir) 79 86 { 80 Ray ray(pos, dir); 87 return executeRayQuery(result, Ray(pos, dir)); 88 } 89 90 bool RayQueryExecutor::executeRayQuery(Vector3 *result, const Ray &ray) 91 { 81 92 mRaySceneQuery->setRay(ray); 82 93 83 94 // Perform the scene query 84 95 RaySceneQueryResult &queryResult = mRaySceneQuery->execute(); 85 RaySceneQueryResult::iterator it = queryResult.begin( 96 RaySceneQueryResult::iterator it = queryResult.begin(); 86 97 87 98 if (it != queryResult.end() && it->worldFragment) -
trunk/VUT/work/TestCullingTerrain/TerrainContentGenerator.h
r61 r74 5 5 #include "ExampleApplication.h" 6 6 7 /** Class which executes a simple ray query. 8 */ 7 9 class RayQueryExecutor 8 10 { 9 11 public: 10 RayQueryExecutor( SceneManager *sm ); 11 ~RayQueryExecutor( ); 12 bool executeRayQuery( Vector3 *result, const Vector3 &pos, const Vector3 &dir ); 12 RayQueryExecutor(SceneManager *sm); 13 ~RayQueryExecutor(); 14 15 bool executeRayQuery(Vector3 *result, const Vector3 &pos, const Vector3 &dir); 16 bool RayQueryExecutor::executeRayQuery( Vector3 *result, const Ray &ray); 17 13 18 protected: 14 19 RaySceneQuery *mRaySceneQuery; 15 20 }; 16 21 /** Class which fills a terrain with content in a random way. 22 */ 17 23 class TerrainContentGenerator 18 24 { 19 25 public: 20 TerrainContentGenerator( SceneManager *sm, RayQueryExecutor *rayQueryEx);26 TerrainContentGenerator(SceneManager *sm, RayQueryExecutor *rayQueryEx); 21 27 /** Generates a the scene hierarchy with random values . 22 @param number of objects to generate28 @param number of objects to generate 23 29 */ 24 void generateScene( int numObjects ); 25 /** 26 generates a new scene object 30 void generateScene(int numObjects); 31 /** Generates a new scene object 27 32 @param tranlationRatio ratio between minimal and maximal possible translation 28 33 @param rotationRatio ratio between minimal and maximal possible rotation … … 30 35 @entName the name of the object entity 31 36 */ 32 void generateSceneObject( 33 const int idx, const String &entName);37 void generateSceneObject(const Vector3 &translationRatio, const Vector3 &rotationRatio, 38 const int idx, const String &entName); 34 39 35 40 protected: … … 37 42 Real mMinAngle; 38 43 Real mMaxAngle; 39 Vector3 mMax Translation;40 Vector3 mMin Translation;44 Vector3 mMaxPos; 45 Vector3 mMinPos; 41 46 42 47 RayQueryExecutor *mRayQueryExecutor; -
trunk/VUT/work/TestCullingTerrain/TestCullingTerrain.vcproj
r64 r74 21 21 Name="VCCLCompilerTool" 22 22 Optimization="0" 23 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../ include"24 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_DEBUG;WIN32;_STLP_DEBUG;PLUGIN_TERRAIN_IMPORTS "23 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../../GtpVisibility/include;../include" 24 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_DEBUG;WIN32;_STLP_DEBUG;PLUGIN_TERRAIN_IMPORTS;GTP_VISIBILITY_MODIFIED_OGRE" 25 25 MinimalRebuild="TRUE" 26 26 BasicRuntimeChecks="3" … … 37 37 OutputFile="$(OGRE_PATH)/Samples/Common/bin/Debug/TestCullingTerrain.exe" 38 38 LinkIncremental="2" 39 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\ Debug";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\debug";"$(OGRE_PATH)\OgreMain\Lib\Debug";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\debug";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib""39 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\$(ConfigurationName)";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\OgreMain\Lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib"" 40 40 GenerateDebugInformation="TRUE" 41 41 ProgramDatabaseFile="$(OutDir)/TestCullingTerrain.pdb" … … 66 66 <Configuration 67 67 Name="Release|Win32" 68 OutputDirectory=" Release"69 IntermediateDirectory=" Release"68 OutputDirectory=".\bin\$(ConfigurationName)" 69 IntermediateDirectory=".\obj\$(ConfigurationName)" 70 70 ConfigurationType="1" 71 71 CharacterSet="2"> 72 72 <Tool 73 73 Name="VCCLCompilerTool" 74 AdditionalIncludeDirectories=" ..\..\..\Samples\Common\Include, ..\..\..\OgreMain\include"75 PreprocessorDefinitions="_WINDOWS ,_STLP_USE_DYNAMIC_LIB,OGRE_LIBRARY_IMPORTS,_RELEASE,WIN32,_STLP_RELEASE"74 AdditionalIncludeDirectories=""$(OGRE_PATH)\Dependencies\include";"$(OGRE_PATH)\OgreMain\include";"$(OGRE_PATH)\Samples\Common\include";"$(OGRE_PATH)\Dependencies\include\CEGUI";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\include";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\include";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\include";../../GtpVisibility/include;../include" 75 PreprocessorDefinitions="_WINDOWS;_STLP_USE_DYNAMIC_LIB;OGRE_LIBRARY_IMPORTS;_RELEASE;WIN32;_STLP_RELEASE;GTP_VISIBILITY_MODIFIED_OGRE" 76 76 RuntimeLibrary="2" 77 77 UsePrecompiledHeader="0" … … 83 83 <Tool 84 84 Name="VCLinkerTool" 85 AdditionalDependencies="OGREMain.LIB "86 OutputFile=" ..\..\..\Samples\Common\Bin\Release\TestCullingTerrain.exe"85 AdditionalDependencies="OGREMain.LIB Plugin_OctreeSceneManager.lib CEGUIBase.lib OgreGUIRenderer.lib" 86 OutputFile="$(OGRE_PATH)/Samples/Common/bin/Release/TestCullingTerrain.exe" 87 87 LinkIncremental="1" 88 AdditionalLibraryDirectories=" ..\..\..\OgreMain\Lib\Release"88 AdditionalLibraryDirectories=""$(OGRE_PATH)\Dependencies\Lib\$(ConfigurationName)";"$(OGRE_ADDONS_PATH)\dotsceneoctree\PlugIns\DotSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\OgreMain\Lib\$(ConfigurationName)";"$(OGRE_PATH)\PlugIns\OctreeSceneManager\bin\$(ConfigurationName)";"$(OGRE_PATH)\Samples\Common\CEGUIRenderer\lib"" 89 89 GenerateDebugInformation="TRUE" 90 90 SubSystem="2" -
trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.cpp
r61 r74 3 3 TestCullingTerrainApplication.cpp 4 4 \brief 5 Tests the occlusionculling algorithm5 Tests the visibility culling algorithm 6 6 */ 7 7 … … 44 44 } 45 45 //----------------------------------------------------------------------- 46 void TestCullingTerrainApplication::generateSceneObject(const Vector3 &translationRatio,47 const Vector3 &rotationRatio, const int idx, const String& entName)48 {49 // Setup the ray scene query50 /*Vector3 rotation = mMinAngle + rotationRatio * (mMaxAngle - mMinAngle);51 Vector3 translation = mMinTranslation + translationRatio * (mMaxTranslation - mMinTranslation);52 53 translation.y = 5000;54 Ray ray(translation, Vector3::NEGATIVE_UNIT_Y);55 mRaySceneQuery->setRay(ray);56 57 // Execute query58 RaySceneQueryResult &result = mRaySceneQuery->execute();59 RaySceneQueryResult::iterator itr = result.begin( );60 61 // Get results, create a node/entity on the position62 if ( itr != result.end() && itr->worldFragment )63 {64 char name[16];65 sprintf( name, "%s%d", entName.c_str(), mCount++ );66 67 Entity *ent = mSceneMgr->createEntity( name, entName );68 SceneNode currentObject = mSceneMgr->getRootSceneNode( )->createChildSceneNode( String(name) + "Node", itr->worldFragment->singleIntersection );69 currentObject->attachObject( ent );70 currentObject->setScale( 0.1f, 0.1f, 0.1f );71 }*/72 }73 74 //-----------------------------------------------------------------------75 46 void TestCullingTerrainApplication::createScene( void ) 76 47 { 77 48 mRayQueryExecutor = new RayQueryExecutor(mSceneMgr); 78 49 mTerrainContentGenerator = new TerrainContentGenerator(mSceneMgr, mRayQueryExecutor); 50 79 51 // Set ambient light 80 52 mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); … … 111 83 terrain_cfg = mResourcePath + terrain_cfg; 112 84 #endif 113 mSceneMgr -> setWorldGeometry( terrain_cfg);85 mSceneMgr->setWorldGeometry(terrain_cfg); 114 86 // Infinite far plane? 115 87 if (mRoot->getRenderSystem()->getCapabilities()->hasCapability(RSC_INFINITE_FAR_PLANE)) … … 124 96 // CEGUI setup 125 97 setupGui(); 98 99 mTerrainContentGenerator->generateScene(100); 126 100 } 127 101 //----------------------------------------------------------------------- … … 149 123 void TestCullingTerrainApplication::chooseSceneManager(void) 150 124 { 151 //mSceneMgr = mRoot->getSceneManager(ST_GENERIC);152 125 mSceneMgr = mRoot->getSceneManager(ST_EXTERIOR_CLOSE); 153 126 } … … 171 144 mRotateSpeed *= 2; 172 145 173 mCurrentAlgorithm = 0;//VisibilitySceneTraverser::RENDER_COHERENT;146 mCurrentAlgorithm = GtpVisibility::VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING, 174 147 mThreshold = 0; 175 148 … … 179 152 mEventProcessor->addKeyListener(this); 180 153 181 mRay SceneQuery = mSceneMgr->createRayQuery(Ray());154 mRayQueryExecutor = new RayQueryExecutor(mSceneMgr); 182 155 183 156 // show overlay 184 157 Overlay* pOver = OverlayManager::getSingleton().getByName("Example/VisibilityDemoOverlay"); 185 158 186 mAlgorithmInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/AlgorithmInfo"); 187 mThresholdInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/ThresholdInfo"); 188 mFrustumCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/FrustumCulledNodesInfo"); 189 mQueryCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/QueryCulledNodesInfo"); 190 mTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/TraversedNodesInfo"); 191 mSceneNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/SceneNodesInfo"); 192 mHierarchyNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/HierarchyNodesInfo"); 193 mRenderedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Occlusion/RenderedNodesInfo"); 159 mAlgorithmInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/AlgorithmInfo"); 160 mThresholdInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/ThresholdInfo"); 161 mFrustumCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/FrustumCulledNodesInfo"); 162 mQueryCulledNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/QueryCulledNodesInfo"); 163 mTraversedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/TraversedNodesInfo"); 164 mHierarchyNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/HierarchyNodesInfo"); 165 mRenderedNodesInfo = OverlayManager::getSingleton().getOverlayElement("Example/Visibility/RenderedNodesInfo"); 194 166 195 167 mAlgorithmInfo->setCaption(": " + mCurrentAlgorithmCaptions[mCurrentAlgorithm]); … … 198 170 mQueryCulledNodesInfo->setCaption(": 0"); 199 171 mTraversedNodesInfo->setCaption(": 0"); 200 mSceneNodesInfo->setCaption(": 0");201 172 mHierarchyNodesInfo->setCaption(": 0"); 202 173 mRenderedNodesInfo->setCaption(": 0"); … … 207 178 MouseQueryListener::~MouseQueryListener( ) 208 179 { 209 delete mRay SceneQuery;180 delete mRayQueryExecutor; 210 181 } 211 182 //----------------------------------------------------------------------- … … 225 196 // Setup the ray scene query 226 197 Ray mouseRay = mCamera->getCameraToViewportRay( e->getX(), e->getY() ); 227 mRaySceneQuery->setRay( mouseRay ); 228 229 // Execute query 230 RaySceneQueryResult &result = mRaySceneQuery->execute(); 231 RaySceneQueryResult::iterator itr = result.begin( ); 232 198 199 Vector3 queryResult; 233 200 // Get results, create a node/entity on the position 234 if ( itr != result.end() && itr->worldFragment)201 if(mRayQueryExecutor->executeRayQuery(&queryResult, mouseRay)) 235 202 { 236 203 char name[16]; 237 204 sprintf( name, "Robot%d", mCount++ ); 238 205 239 Entity *ent = mSceneMgr->createEntity( name, "robot.mesh" ); 240 mCurrentObject = mSceneMgr->getRootSceneNode( )->createChildSceneNode( String(name) + "Node", itr->worldFragment->singleIntersection ); 206 Entity *ent = mSceneMgr->createEntity(name, "robot.mesh"); 207 mCurrentObject = mSceneMgr->getRootSceneNode()-> 208 createChildSceneNode( String(name) + "Node", queryResult); 241 209 mCurrentObject->attachObject( ent ); 242 210 mCurrentObject->setScale( 0.1f, 0.1f, 0.1f ); … … 275 243 if ( mLMouseDown ) 276 244 { 277 Ray mouseRay = mCamera->getCameraToViewportRay( e->getX(), e->getY() ); 278 mRaySceneQuery->setRay( mouseRay ); 279 280 RaySceneQueryResult &result = mRaySceneQuery->execute(); 281 RaySceneQueryResult::iterator itr = result.begin( ); 282 283 if ( itr != result.end() && itr->worldFragment ) 245 Vector3 queryResult; 246 Ray mouseRay = mCamera->getCameraToViewportRay(e->getX(), e->getY()); 247 248 if(mRayQueryExecutor->executeRayQuery(&queryResult, mouseRay)) 284 249 { 285 mCurrentObject->setPosition( itr->worldFragment->singleIntersection);286 } 250 mCurrentObject->setPosition(queryResult); 251 } 287 252 } 288 253 // If we are dragging the right mouse button. … … 297 262 { 298 263 // clamp to terrain 299 Vector3 camPos = mCamera->getPosition( ); 300 Ray cameraRay( Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y ); 301 mRaySceneQuery->setRay( cameraRay ); 302 303 // Perform the scene query 304 RaySceneQueryResult &queryResult = mRaySceneQuery->execute(); 305 RaySceneQueryResult::iterator it = queryResult.begin( ); 306 307 if (it != queryResult.end() && it->worldFragment) 264 Vector3 camPos = mCamera->getPosition(); 265 Vector3 queryResult; 266 267 if(mRayQueryExecutor->executeRayQuery(&queryResult, 268 Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y)) 308 269 { 309 SceneQuery::WorldFragment* wf = it->worldFragment; 310 311 mCamera->setPosition(mCamera->getPosition().x, wf->singleIntersection.y + 10, 270 mCamera->setPosition(mCamera->getPosition().x, queryResult.y + 10, 312 271 mCamera->getPosition().z); 313 272 } … … 347 306 void MouseQueryListener::changeAlgorithm() 348 307 { 349 //mCurrentAlgorithm = ++mCurrentAlgorithm % VisibilitySceneTraverser::NUM_RENDERMODES; 308 mCurrentAlgorithm = ++mCurrentAlgorithm % 309 GtpVisibility::VisibilityEnvironment::NUM_CULLING_MANAGERS, 350 310 351 311 mAlgorithmInfo->setCaption(": " + mCurrentAlgorithmCaptions[mCurrentAlgorithm]); … … 367 327 mTraversedNodesInfo->setCaption(str); 368 328 369 mSceneMgr->getOption("NumSceneNodes", &opt); sprintf(str,": %d", opt); 370 mSceneNodesInfo->setCaption(str); 371 372 mSceneMgr->getOption("NumOctreeNodes", &opt); sprintf(str,": %d", opt); 329 mSceneMgr->getOption("NumHierarchyNodes", &opt); sprintf(str,": %d", opt); 373 330 mHierarchyNodesInfo->setCaption(str); 374 331 -
trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.h
r61 r74 6 6 #include "ExampleApplication.h" 7 7 #include "TerrainContentGenerator.h" 8 #include "VisibilityEnvironment.h" 8 9 9 10 Real timeDelay = 0; … … 17 18 } 18 19 19 String mCurrentAlgorithmCaptions[ 3/*VisibilitySceneTraverser::NUM_RENDERMODES*/] =20 String mCurrentAlgorithmCaptions[GtpVisibility::VisibilityEnvironment::NUM_CULLING_MANAGERS] = 20 21 { 21 " Cull Frustum",22 "Stop and Wait ",23 "Coherent OcclusionCulling"22 "View Frustum Culling", 23 "Stop and Wait Culling", 24 "Coherent Hierarchical Culling" 24 25 }; 25 26 … … 83 84 84 85 SceneNode *mCurrentObject; // The newly created object 85 RaySceneQuery *mRaySceneQuery; // The ray scene query pointer86 86 int mCount; // The number of robots on the screen 87 87 … … 101 101 virtual void createCamera(void); 102 102 103 /**104 generates a new scene object105 @param tranlationRatio ratio between minimal and maximal possible translation106 @param rotationRatio ratio between minimal and maximal possible rotation107 @idx the index of the new object108 @entName the name of the object entity109 */110 void generateSceneObject(const Vector3 &translationRatio, const Vector3 &rotationRatio,111 const int idx, const String &entName);112 113 103 CEGUI::OgreCEGUIRenderer *mGUIRenderer; 114 104 CEGUI::System *mGUISystem; -
trunk/VUT/work/ogre_changes/OgreMain/include/OgreSceneManager.h
r61 r74 130 130 */ 131 131 void _renderSceneNode( Camera *cam, SceneNode *node ); 132 133 132 /** deletes all queues which we were currently processing 134 133 @remark clears renderqueue after rendering scene node 135 134 */ 136 135 void _deleteRenderedQueueGroups(); 137 138 139 void myrenderSingleObject(Renderable* rend, Pass* pass, bool doLightIteration, 140 const LightList* manualLightList = 0) 141 { 142 setPass(pass); 143 renderSingleObject(rend, pass, doLightIteration, manualLightList);} 144 136 /** Internal method used by _renderVisibleObjects to deal with renderables 137 which override the camera's own view / projection materices. 138 @remark made public by matt 139 */ 140 void useRenderableViewProjMode(Renderable* pRend); 141 /** Method for setting up the renderstate for a rendering pass. 142 @param 143 pass The Pass details to set. 144 @returns 145 A Pass object that was used instead of the one passed in, can 146 happen when rendering shadow passes 147 @remark made public by matt 148 */ 149 virtual Pass* setPass(Pass* pass); 145 150 #endif // GTP_VISIBILITY_MODIFIED_OGRE 146 /** Internal method used by _renderVisibleObjects to deal with renderables 147 which override the camera's own view / projection materices. made 148 public by matt */ 149 void useRenderableViewProjMode(Renderable* pRend); 150 151 151 152 protected: 152 153 … … 250 251 /** Retrieves the internal render queue. */ 251 252 virtual RenderQueue* getRenderQueue(void); 253 #ifndef GTP_VISIBILITY_MODIFIED_OGRE // made public, is found in the modfified section 252 254 /** Internal method for setting up the renderstate for a rendering pass. 253 255 @param … … 258 260 */ 259 261 virtual Pass* setPass(Pass* pass); 262 #endif 260 263 /// A pass designed to let us render shadow colour on white for texture shadows 261 264 Pass* mShadowCasterPlainBlackPass; … … 332 335 AnimationList mAnimationsList; 333 336 AnimationStateSet mAnimationStates; 334 337 #ifndef GTP_VISIBILITY_MODIFIED_OGRE // made public, is found in the modfified section 338 /** Internal method used by _renderVisibleObjects to deal with renderables 339 which override the camera's own view / projection materices. */ 340 void useRenderableViewProjMode(Renderable* pRend); 341 #endif 335 342 /// Controller flag for determining if we need to set view/proj matrices 336 343 bool mCamChanged;
Note: See TracChangeset
for help on using the changeset viewer.