Ignore:
Timestamp:
12/20/06 12:18:41 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r1912 r1913  
    346346VspLeaf::VspLeaf():  
    347347mViewCell(NULL), mSubdivisionCandidate(NULL) 
    348 //, mPvs(NULL) 
    349348{ 
    350349} 
     
    380379VspLeaf::VspLeaf(VspInterior *parent):  
    381380VspNode(parent), mViewCell(NULL) 
    382 //, mPvs(NULL) 
    383381{} 
    384382 
     
    386384VspLeaf::VspLeaf(VspInterior *parent, ViewCellLeaf *viewCell):  
    387385VspNode(parent), mViewCell(viewCell) 
    388 //, mPvs(NULL) 
    389386{ 
    390387} 
     
    735732                         
    736733                mTotalCost -= sc->GetRenderCostDecrease(); 
    737                 mTotalPvsSize += (int)(tFrontData.mPvs + tBackData.mPvs - tData.mPvs); 
     734                //mTotalPvsSize += (int)(tFrontData.mPvs + tBackData.mPvs - tData.mPvs); 
    738735                mPvsEntries += sc->GetPvsEntriesIncr(); 
    739736 
     
    899896        } 
    900897 
    901         const float oldPvsRatio = oldPvsSize / splitCandidate.mParentData.mPvs; 
     898        const float oldPvsRatio = (splitCandidate.mParentData.mPvs > 0) ?  
     899                oldPvsSize / splitCandidate.mParentData.mPvs : 1; 
    902900        const float correctedOldPvs = splitCandidate.mParentData.mCorrectedPvs * oldPvsRatio; 
    903901 
    904902        cout <<"here102 "<< endl; 
    905903        cout << "old pvs ratio: " << oldPvsRatio << endl; 
    906         const float correctedFrontPvs =  
     904        splitCandidate.mCorrectedFrontPvs =  
    907905                mHierarchyManager->EvalCorrectedPvs(fPvsSize,  
    908906                                                                                        correctedOldPvs,  
    909907                                                                                        splitCandidate.GetAvgRayContribution()); 
    910908        cout <<"here103 "<< endl; 
    911         const float correctedBackPvs =  
     909        splitCandidate.mCorrectedBackPvs =  
    912910                mHierarchyManager->EvalCorrectedPvs(bPvsSize,  
    913911                                                                                        correctedOldPvs,  
     
    915913 
    916914         
    917         cout << "vsp front entries " << fPvsSize << " corrected: " << correctedFrontPvs << endl; 
    918         cout << "vsp back entries " << bPvsSize << " corrected: " << correctedBackPvs << endl; 
    919  
    920         return (int)(correctedFrontPvs + correctedBackPvs - correctedOldPvs); 
     915        cout << "vsp front entries " << fPvsSize << " corrected: " << splitCandidate.mCorrectedFrontPvs << endl; 
     916        cout << "vsp back entries " << bPvsSize << " corrected: " << splitCandidate.mCorrectedBackPvs << endl; 
     917 
     918        return (int)(splitCandidate.mCorrectedFrontPvs + splitCandidate.mCorrectedBackPvs - correctedOldPvs); 
    921919} 
    922920 
     
    961959 
    962960        //-- compute render cost 
    963         frontData.mRenderCost = (float)EvalRenderCost(*frontData.mRays); 
    964         backData.mRenderCost = (float)EvalRenderCost(*backData.mRays); 
    965          
    966         frontData.mCorrectedRenderCost = sc.mCorrectedFrontPvs; 
    967         backData.mCorrectedRenderCost = sc.mCorrectedBackPvs; 
     961        frontData.mRenderCost = (float)EvalPvsCost(*frontData.mRays); 
     962        backData.mRenderCost = (float)EvalPvsCost(*backData.mRays); 
     963         
     964        frontData.mCorrectedRenderCost = sc.mCorrectedFrontRenderCost; 
     965        backData.mCorrectedRenderCost = sc.mCorrectedBackRenderCost; 
    968966 
    969967        //////// 
     
    16051603        //-- evaluate render cost heuristics 
    16061604 
    1607         const float oldRenderCostRatio = tData.mPvs ? (totalPvs / tData.mPvs) : 1; 
    1608  
    1609         const float penaltyOld = tData.mCorrectedPvs * oldRenderCostRatio; 
    1610  
    1611         cout <<"here107 " << penaltyOld << endl; 
    1612         sc.mCorrectedFrontPvs = mHierarchyManager->EvalCorrectedPvs(pvsFront, penaltyOld, avgRayContri); 
    1613         cout <<"here108 " << tData.mCorrectedPvs << " " << oldRenderCostRatio << endl; 
    1614         sc.mCorrectedBackPvs = mHierarchyManager->EvalCorrectedPvs(pvsBack, penaltyOld, avgRayContri); 
    1615  
    1616         cout << "vsp front pvs " << pvsFront << " corrected: " << sc.mCorrectedFrontPvs << endl; 
    1617         cout << "vsp back pvs " << pvsBack << " corrected: " << sc.mCorrectedBackPvs << endl; 
     1605        const float oldRenderCostRatio = (tData.mRenderCost > 0)?  
     1606                (totalPvs / tData.mRenderCost) : 1; 
     1607 
     1608        const float penaltyOld = tData.mCorrectedRenderCost * oldRenderCostRatio; 
     1609 
     1610        cout <<"here107 old render cost ratio " << oldRenderCostRatio << " old cost: " << penaltyOld << endl; 
     1611        sc.mCorrectedFrontRenderCost = mHierarchyManager->EvalCorrectedPvs(pvsFront, penaltyOld, avgRayContri); 
     1612        cout <<"here108 " << tData.mCorrectedRenderCost << " " << oldRenderCostRatio << endl; 
     1613        sc.mCorrectedBackRenderCost = mHierarchyManager->EvalCorrectedPvs(pvsBack, penaltyOld, avgRayContri); 
     1614 
     1615        cout << "vsp front pvs " << pvsFront << " corrected: " << sc.mCorrectedFrontRenderCost << endl; 
     1616        cout << "vsp back render cost " << pvsBack << " corrected: " << sc.mCorrectedBackRenderCost << endl; 
    16181617 
    16191618        const float oldRenderCost = pOverall * penaltyOld; 
    1620         const float newRenderCost = sc.mCorrectedFrontPvs * pFront + sc.mCorrectedBackPvs * pBack; 
     1619        const float newRenderCost = sc.mCorrectedFrontRenderCost * pFront +  
     1620                                                                sc.mCorrectedFrontRenderCost * pBack; 
    16211621 
    16221622        // we also return the old render cost 
     
    29342934        VspTraversalData vData(leaf, 0, &rays, pvsCost, prop, mBoundingBox); 
    29352935 
    2936  
    29372936#if WORK_WITH_VIEWCELL_PVS 
    29382937        // add first view cell to all the objects view cell pvs 
     
    29472946#endif 
    29482947 
    2949         mTotalCost = vData.mCorrectedPvs = pvsCost; 
    2950         mPvsEntries = EvalPvsEntriesSize(rays); 
     2948        mTotalCost = vData.mCorrectedRenderCost = vData.mRenderCost = pvsCost; 
     2949        mPvsEntries = vData.mCorrectedPvs = vData.mPvs = EvalPvsEntriesSize(rays); 
    29512950 
    29522951        ////////////// 
Note: See TracChangeset for help on using the changeset viewer.