Ignore:
Timestamp:
11/29/05 00:01:43 (19 years ago)
Author:
mattausch
Message:

added vview cell manager functionality

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/RenderSimulator.cpp

    r420 r439  
    2626{} 
    2727 
    28 RenderSimulator::RenderSimulator(float objRenderCost, float vcOverhead, float moveSpeed): 
    29 mObjRenderCost(objRenderCost), mVcOverhead(vcOverhead), mMoveSpeed(moveSpeed) 
    30 { 
    31 } 
    32  
    33 /***************************************************** 
    34  *     class ViewCellRenderSimulator implementation  * 
    35  *****************************************************/ 
    36  
    37 BspViewCellRenderSimulator::BspViewCellRenderSimulator(float objRenderCost,  
     28RenderSimulator::RenderSimulator(float objRenderCost,  
     29                                                                 float vcOverhead,  
     30                                                                 float moveSpeed): 
     31mObjRenderCost(objRenderCost),  
     32mVcOverhead(vcOverhead),  
     33mMoveSpeed(moveSpeed) 
     34{ 
     35} 
     36 
     37void RenderSimulator::SetObjectRenderCost(const float objRenderCost) 
     38{ 
     39        mObjRenderCost = objRenderCost; 
     40} 
     41 
     42void RenderSimulator::SetVcOverhead(const float vcOverhead) 
     43{ 
     44        mVcOverhead = vcOverhead; 
     45} 
     46 
     47void RenderSimulator::SetMoveSpeed(const float moveSpeed) 
     48{ 
     49        mMoveSpeed = moveSpeed; 
     50} 
     51 
     52/********************************************************/ 
     53/*     class BspRenderSimulator implementation          */ 
     54/********************************************************/ 
     55 
     56BspRenderSimulator::BspRenderSimulator(float objRenderCost,  
    3857                                                                                           float vcOverhead,  
    3958                                                                                           float moveSpeed, 
     
    4362} 
    4463 
    45 Real BspViewCellRenderSimulator::SimulateRendering() 
    46 { 
    47         mStat.Reset(); 
    48         mStat.Start(); 
     64SimulationStatistics BspRenderSimulator::SimulateRendering() 
     65{ 
     66        SimulationStatistics simStat; 
     67 
     68        simStat.Reset(); 
     69        simStat.Start(); 
    4970 
    5071        Real renderTime = 0; 
     
    84105                renderTime += vcCost; 
    85106 
    86                 if (vcCost > mStat.maxCost) 
    87                         mStat.maxCost = vcCost; 
    88                 else if (vcCost < mStat.minCost) 
    89                         mStat.minCost = vcCost; 
     107                if (vcCost > simStat.maxCost) 
     108                        simStat.maxCost = vcCost; 
     109                else if (vcCost < simStat.minCost) 
     110                        simStat.minCost = vcCost; 
    90111 
    91112                // probability that a view cell border is crossed 
     
    94115                // crossing the border of a view cell is also depending on the move speed 
    95116                loadPvsOverhead += pCrossVc * mVcOverhead; 
    96 overallarea+=area; 
     117overallarea += area; 
    97118                pInVcTotal += pInVc; 
    98119        } 
     
    102123        loadPvsOverhead /= pCrossVcTotal; 
    103124 
    104         mStat.avgRtWithoutOverhead = renderTime; 
    105         mStat.avgRenderTime = renderTime + loadPvsOverhead; 
    106          
    107         mStat.maxCost /= pInVcTotal; 
    108         mStat.minCost /= pInVcTotal; 
    109  
    110         mStat.Stop(); 
    111  
    112         return renderTime + loadPvsOverhead; 
    113 } 
    114  
    115 Real BspViewCellRenderSimulator::RenderPvs(ViewCell &viewCell,  
     125        simStat.avgRtWithoutOverhead = renderTime; 
     126        simStat.avgRenderTime = renderTime + loadPvsOverhead; 
     127         
     128        simStat.maxCost /= pInVcTotal; 
     129        simStat.minCost /= pInVcTotal; 
     130 
     131        simStat.Stop(); 
     132 
     133        return simStat; 
     134} 
     135 
     136Real BspRenderSimulator::RenderPvs(ViewCell &viewCell,  
    116137                                                                           float objRenderTime) const 
    117138{ 
     
    123144 *******************************************************/ 
    124145 
    125 KdViewCellRenderSimulator::KdViewCellRenderSimulator(float objRenderCost,  
     146KdRenderSimulator::KdRenderSimulator(float objRenderCost,  
    126147                                                                                         float vcOverhead, 
    127148                                                                                         float moveSpeed, 
     
    131152} 
    132153 
    133 Real KdViewCellRenderSimulator::SimulateRendering() 
    134 { 
     154SimulationStatistics KdRenderSimulator::SimulateRendering() 
     155{ 
     156        SimulationStatistics simStat; 
     157 
    135158        //mKdTree->CollectLeavesPvs(); 
    136         mStat.Reset(); 
    137         mStat.Start(); 
     159        simStat.Reset(); 
     160        simStat.Start(); 
    138161 
    139162        // total render time 
     
    170193                renderTime += vcCost; 
    171194 
    172                 if (vcCost > mStat.maxCost) 
    173                         mStat.maxCost = vcCost; 
    174                 else if (vcCost < mStat.minCost) 
    175                         mStat.minCost = vcCost; 
     195                if (vcCost > simStat.maxCost) 
     196                        simStat.maxCost = vcCost; 
     197                else if (vcCost < simStat.minCost) 
     198                        simStat.minCost = vcCost; 
    176199 
    177200                // probability that a view cell border is crossed 
     
    186209        loadPvsOverhead /= pCrossVcTotal; 
    187210 
    188     mStat.avgRtWithoutOverhead = renderTime; 
    189         mStat.avgRenderTime = renderTime + loadPvsOverhead; 
    190  
    191         mStat.maxCost /= pInVcTotal; 
    192         mStat.minCost /= pInVcTotal; 
    193  
    194         mStat.Stop(); 
    195  
    196         return renderTime + loadPvsOverhead; 
    197 } 
    198  
    199 Real KdViewCellRenderSimulator::RenderPvs(KdLeaf *leaf,  
    200                                                                                    float objRenderTime) const 
     211    simStat.avgRtWithoutOverhead = renderTime; 
     212        simStat.avgRenderTime = renderTime + loadPvsOverhead; 
     213 
     214        simStat.maxCost /= pInVcTotal; 
     215        simStat.minCost /= pInVcTotal; 
     216 
     217        simStat.Stop(); 
     218 
     219        return simStat; 
     220} 
     221 
     222Real KdRenderSimulator::RenderPvs(KdLeaf *leaf,  
     223                                                                  float objRenderTime) const 
    201224{ 
    202225        return leaf->mKdPvs.GetSize() * objRenderTime; 
Note: See TracChangeset for help on using the changeset viewer.