Ignore:
Timestamp:
10/24/06 17:42:03 (18 years ago)
Author:
mattausch
Message:

worked on pvs heuristics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp

    r1673 r1676  
    251251        Environment::GetSingleton()->GetBoolValue("BvHierarchy.useCostHeuristics", mUseCostHeuristics); 
    252252        Environment::GetSingleton()->GetBoolValue("BvHierarchy.useSah", mUseSah); 
    253          
    254         char subdivisionStatsLog[100]; 
     253 
     254    char subdivisionStatsLog[100]; 
    255255        Environment::GetSingleton()->GetStringValue("BvHierarchy.subdivisionStats", subdivisionStatsLog); 
    256256        mSubdivisionStats.open(subdivisionStatsLog); 
     
    260260         
    261261        Environment::GetSingleton()->GetBoolValue("BvHierarchy.Construction.useGlobalSorting", mUseGlobalSorting); 
     262        Environment::GetSingleton()->GetIntValue("BvHierarchy.minRaysForVisibility", mMinRaysForVisibility); 
     263         
    262264 
    263265        mUseBboxAreaForSah = true; 
     
    283285        Debug << "render cost decrease weight: " << mRenderCostDecreaseWeight << endl; 
    284286        Debug << "use global sort: " << mUseGlobalSorting << endl; 
     287        Debug << "minimal rays for visibility: " << mMinRaysForVisibility << endl; 
     288 
    285289        Debug << endl; 
    286290} 
     
    487491        if (computeSplitPlane) 
    488492        { 
     493                const bool sufficientSamples = splitCandidate.mParentData.mNumRays < mMinRaysForVisibility; 
     494 
     495                const bool useVisibiliyBasedHeuristics =  
     496                        !mUseSah && 
     497                        !(mHierarchyManager->GetViewSpaceSubdivisionType() == HierarchyManager::KD_BASED_VIEWSPACE_SUBDIV) && 
     498                        sufficientSamples; 
     499 
    489500                // compute best object partition 
    490501                const float ratio =     SelectObjectPartition(splitCandidate.mParentData,  
    491502                                                                                                  splitCandidate.mFrontObjects,  
    492                                                                                                   splitCandidate.mBackObjects); 
     503                                                                                                  splitCandidate.mBackObjects, 
     504                                                                                                  useVisibiliyBasedHeuristics); 
    493505         
    494506                // cost ratio violated? 
     
    497509                const int previousMisses = splitCandidate.mParentData.mMaxCostMisses; 
    498510 
    499                 splitCandidate.SetMaxCostMisses(maxCostRatioViolated ?  
    500                                                                                 previousMisses + 1 : previousMisses); 
     511                splitCandidate.SetMaxCostMisses(maxCostRatioViolated ? previousMisses + 1 : previousMisses); 
    501512 
    502513        } 
     
    12181229float BvHierarchy::SelectObjectPartition(const BvhTraversalData &tData, 
    12191230                                                                                 ObjectContainer &frontObjects, 
    1220                                                                                  ObjectContainer &backObjects) 
     1231                                                                                 ObjectContainer &backObjects, 
     1232                                                                                 bool useVisibilityBasedHeuristics) 
    12211233{ 
    12221234        ObjectContainer nFrontObjects[3]; 
     
    12451257                //-- split objects using heuristics 
    12461258                                 
    1247                                 if (!mUseSah && 
    1248                                         (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
    1249                                         HierarchyManager::KD_BASED_VIEWSPACE_SUBDIV)) 
     1259                                if (useVisibilityBasedHeuristics) 
    12501260                                { 
    12511261                                        /////////// 
Note: See TracChangeset for help on using the changeset viewer.