Ignore:
Timestamp:
10/23/06 20:24:14 (18 years ago)
Author:
mattausch
Message:

updated priority meaurement: taking total cost and memory into account

File:
1 edited

Legend:

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

    r1666 r1667  
    786786 
    787787 
    788 void VspTree::EvalSubdivisionCandidate(VspSubdivisionCandidate &splitCandidate) 
    789 { 
    790         float frontProb; 
    791         float backProb; 
     788void VspTree::EvalSubdivisionCandidate(VspSubdivisionCandidate &splitCandidate, bool computeSplitPlane) 
     789{ 
     790        if (computeSplitPlane) 
     791        { 
     792                float frontProb; 
     793                float backProb; 
     794 
     795                // compute locally best split plane 
     796                const float ratio = SelectSplitPlane(splitCandidate.mParentData,  
     797                                                                                         splitCandidate.mSplitPlane,  
     798                                                                                         frontProb,  
     799                                                                                         backProb); 
     800         
     801                const bool maxCostRatioViolated = mTermMaxCostRatio < ratio; 
     802 
     803                const int maxCostMisses = splitCandidate.mParentData.mMaxCostMisses; 
     804                // max cost threshold violated? 
     805                splitCandidate.SetMaxCostMisses(maxCostRatioViolated  ? maxCostMisses + 1: maxCostMisses); 
     806        } 
    792807         
    793808        VspLeaf *leaf = dynamic_cast<VspLeaf *>(splitCandidate.mParentData.mNode); 
    794809         
    795         // compute locally best split plane 
    796         const float ratio = SelectSplitPlane(splitCandidate.mParentData,  
    797                                                                                  splitCandidate.mSplitPlane,  
    798                                                                                  frontProb,  
    799                                                                                  backProb); 
    800  
    801         const bool maxCostRatioViolated = mTermMaxCostRatio < ratio; 
    802  
    803         // max cost threshold violated? 
    804         splitCandidate.SetMaxCostMisses(maxCostRatioViolated  ?  
    805                         splitCandidate.mParentData.mMaxCostMisses + 1: 
    806                         splitCandidate.mParentData.mMaxCostMisses); 
    807  
    808810        // compute global decrease in render cost 
    809811        float oldRenderCost; 
     
    821823        // otherwise danger of being stuck in a local minimum!! 
    822824        const float factor = mRenderCostDecreaseWeight; 
    823  
    824825        float priority = factor * renderCostDecr + (1.0f - factor) * oldRenderCost; 
    825826 
    826         if (mHierarchyManager->mConsiderMemory) 
    827         { 
    828                 //cout << "here4 rc: " << factor * renderCostDecr << " pvs: " << (1.0f - factor) * splitCandidate.GetPvsEntriesIncr() << endl; 
    829                 //const float priority = factor * renderCostDecr - (1.0f - factor) * splitCandidate.GetPvsEntriesIncr(); 
     827        if (1)//0 && mHierarchyManager->mConsiderMemory) 
     828        { 
    830829                priority /= ((float)splitCandidate.GetPvsEntriesIncr() + mHierarchyManager->mMemoryConst); 
    831830        } 
     
    835834 
    836835 
    837 float VspTree::EvalPriority(const VspSubdivisionCandidate &splitCandidate) const 
     836/*float VspTree::EvalPriority(const VspSubdivisionCandidate &splitCandidate) const 
    838837{ 
    839838        // compute global decrease in render cost 
     
    857856 
    858857        return priority; 
    859 } 
     858}*/ 
    860859 
    861860 
Note: See TracChangeset for help on using the changeset viewer.