Ignore:
Timestamp:
06/22/05 18:35:55 (19 years ago)
Author:
mattausch
Message:

fixed average fps + shadow maps

Location:
trunk/VUT/GtpVisibility/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibility/src/CoherentHierarchicalCullingManager.cpp

    r146 r147  
    11#include "CoherentHierarchicalCullingManager.h" 
    2 //#include <OgreLogManager.h> 
     2#include <OgreLogManager.h> 
    33 
    44namespace GtpVisibility { 
     
    5555                        if (!mHierarchyInterface->CheckFrustumVisible(node, intersects)) 
    5656                        { 
    57                                 mNumFrustumCulledNodes ++; 
     57                                ++ mNumFrustumCulledNodes; 
    5858                                 
    59                                 if(mVisualizeCulledNodes) 
     59                                if (mVisualizeCulledNodes) 
    6060                                { 
    6161                                        mHierarchyInterface->VisualizeCulledNode(node, FRUSTUM_CULLED); 
     
    7979                                bool wasVisible = mHierarchyInterface->IsNodeVisible(node) &&  
    8080                                        (mHierarchyInterface->LastVisited(node) == mHierarchyInterface->GetFrameId() - 1); 
    81                                  
     81                                // if visibility is assumed to be true in this frame 
     82                                bool assumeVisible = wasVisible && (mAssumedVisibility > 0) && DecideVisible(node); 
     83 
    8284                                // identify nodes that we cannot skip queries for 
    8385                                // geometry not only in leaves => test for renderable geometry 
    8486                                bool issueQuery = !wasVisible ||  
    85                                         (mHierarchyInterface->HasGeometry(node) &&  
    86                                         (!mAssumedVisibility || DecideQueryTest(node))); 
    87                                  
    88                                 // reset node's visibility classification  
    89                                 mHierarchyInterface->SetNodeVisible(node, false); 
     87                                        (mHierarchyInterface->HasGeometry(node) && !assumeVisible); 
     88                                                                 
     89                                // reset node's visibility classification 
     90                                mHierarchyInterface->SetNodeVisible(node, !issueQuery && assumeVisible); 
    9091 
    9192                                // update node's visited flag 
     
    9596                                if (issueQuery) 
    9697                                { 
    97                                         mNumQueriesIssued ++; 
     98                                        ++ mNumQueriesIssued; 
    9899                                         
    99100                                        queryQueue.push(QueryPair(node, mHierarchyInterface-> 
    100101                                                IssueOcclusionQuery(node, wasVisible))); 
    101102                                } 
    102                                          
     103                                 
    103104                                // always traverse a node if it was visible 
    104105                                if (wasVisible) 
     
    117118        mThreshold = 0; 
    118119 
    119         if (mAssumedVisibility) 
     120        if (mAssumedVisibility > 0) 
    120121        { 
    121                 mThreshold =  RAND_MAX / mAssumedVisibility; 
     122                mThreshold =  RAND_MAX - RAND_MAX / mAssumedVisibility; 
    122123        } 
     124        //std::stringstream d; d << "*** setting assumed vis: " << mAssumedVisibility; Ogre::LogManager::getSingleton().logMessage(d.str()); 
    123125} 
    124126//----------------------------------------------------------------------- 
    125 bool CoherentHierarchicalCullingManager::DecideQueryTest(HierarchyNode *node) const 
     127bool CoherentHierarchicalCullingManager::DecideVisible(HierarchyNode *node) const 
    126128{ 
     129        /*bool result = rand() < mThreshold; 
     130        std::stringstream d; d << "Assumed vis: " << mAssumedVisibility << ", result: " << result; 
     131        Ogre::LogManager::getSingleton().logMessage(d.str()); return result;*/ 
     132         
    127133        return rand() < mThreshold; 
    128134} 
  • trunk/VUT/GtpVisibility/src/FrustumCullingManager.cpp

    r139 r147  
    1717 
    1818                if (!mHierarchyInterface->CheckFrustumVisible(node)) 
    19                 {//if (mHierarchyInterface->mIsShadowPass) 
    20                         mNumFrustumCulledNodes ++; 
     19                { 
     20                        ++ mNumFrustumCulledNodes; 
    2121 
    2222                        if (mVisualizeCulledNodes) 
  • trunk/VUT/GtpVisibility/src/VisibilityManager.cpp

    r146 r147  
    1313mQueryManager(new DummyQueryManager(NULL)), 
    1414mPreprocessingManager(new DummyPreprocessingManager(NULL)), 
    15 mVisibilityEnvironment(visEnvironment) 
     15mVisibilityEnvironment(visEnvironment), 
     16mAssumedVisibility(0) 
    1617{ 
    1718        SetCullingManager(VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING); 
Note: See TracChangeset for help on using the changeset viewer.