Ignore:
Timestamp:
07/06/07 03:19:45 (17 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/OnlineCullingCHC/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/src/GtpVisibility.vcproj

    r2455 r2532  
    7272                                OptimizeForWindowsApplication="TRUE" 
    7373                                AdditionalIncludeDirectories="..\include;"$(OGRE_PATH)\OgreMain\include"" 
    74                                 PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GTP_VISIBILITY_MODIFIED_OGRE;GAMETOOLS_ILLUMINATION_MODULE" 
     74                                PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GTP_VISIBILITY_MODIFIED_OGRE;GAMETOOLS_ILLUMINATION_MODULE1" 
    7575                                StringPooling="TRUE" 
    7676                                RuntimeLibrary="2" 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/src/RandomUpdateCullingManager.cpp

    r2502 r2532  
    104104                                if (mHierarchyInterface->IsNodeFullyVisible(node)) 
    105105                                { 
     106                                        int nodesTested = 0; 
     107 
    106108                                        // use different algorithm for finding random candidates 
     109#if 1 
    107110                                        HierarchyNodeContainer mynodes; 
    108111                                        mHierarchyInterface->CollectLeaves(node, mynodes); 
     
    112115                                        HierarchyNodeContainer::const_iterator nit, nit_end = mynodes.end(); 
    113116 
    114                                         int nodesTested = 0; 
    115117                                        for (nit = mynodes.begin(); nit != nit_end; ++ nit) 
    116118                                        { 
     
    120122                                                        continue; 
    121123 
     124                                                bool intersects = false; 
     125                                                const bool frustumCulled = !mHierarchyInterface->CheckFrustumVisible(leaf, intersects); 
     126 
     127                                                // don't test in these cases ... 
     128                                                if (frustumCulled || intersects) 
     129                                                        continue; 
     130                 
    122131                                                ++ nodesTested; 
    123  
     132                                                 
    124133                                                mHierarchyInterface->SetNodeVisible(leaf, false); 
    125134 
     
    130139                                                mHierarchyInterface->IssueNodeOcclusionQuery(node, mTestGeometryForVisibleLeaves); 
    131140                                        } 
    132                  
     141 
    133142                                        //std::stringstream d; d << "rc: " << mRandomCandidates << " tested: " << nodesTested << " of " << (int)mynodes.size(); 
    134143                                        //CullingLogManager::GetSingleton()->LogMessage(d.str()); 
    135144 
     145#else 
     146                                         
     147                                        HierarchyNode *leaf = mHierarchyInterface->GetRandomLeaf(node); 
     148                                         
     149                                        bool intersects = false; 
     150                                        const bool frustumCulled = !mHierarchyInterface->CheckFrustumVisible(leaf, intersects); 
     151 
     152                                        if (frustumCulled || intersects) // don't test in these cases ... 
     153                                                continue; 
     154 
     155                                        ++ nodesTested; 
     156 
     157                                        mHierarchyInterface->SetNodeVisible(leaf, false); 
     158 
     159                                        // update node's visited flag: this is important as we are not testing 
     160                                        // all nodes in the hierarchy in this mode 
     161                                        mHierarchyInterface->PullUpLastVisited(leaf, mHierarchyInterface->GetFrameId()); 
     162                                        // issue the query 
     163                                        mHierarchyInterface->IssueNodeOcclusionQuery(leaf, mTestGeometryForVisibleLeaves); 
     164 
     165#endif 
     166                                         
    136167                                        mHierarchyInterface->RenderNodeRecursive(node); 
     168 
     169                                        // bail out here, recursion has finished 
    137170                                        continue; 
    138171                                } 
     
    171204                                        const bool testGeometry = wasVisible && mHierarchyInterface->IsLeaf(node) && mTestGeometryForVisibleLeaves; 
    172205 
    173                                         // previously invisible node 
    174 #if TODO         
    175                                         if (!mHierarchyInterface->IsNodeVisible(node)) 
    176                                         { 
    177                                                 // batch queries so we can test invisible nodes 
    178                                         } 
    179 #endif 
    180206                                        queryQueue.push(QueryPair(node, mHierarchyInterface-> 
    181207                                                IssueNodeOcclusionQuery(node, testGeometry))); 
Note: See TracChangeset for help on using the changeset viewer.