Ignore:
Timestamp:
11/06/06 20:47:06 (18 years ago)
Author:
bittner
Message:

new visibility filter support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/Pvs.h

    r1707 r1715  
    9797{ 
    9898public: 
    99         Pvs(): /*mSamples(0), */mEntries() {} 
     99  Pvs(): mSamples(0), mEntries() {} 
     100   
    100101 
    101102        //virtual ~Pvs(); 
     
    199200        /// Map of PVS entries 
    200201        std::map<T, S, LtSample<T> > mEntries; 
     202 
     203  /// Number of samples used to create the PVS 
     204  int mSamples; 
    201205}; 
    202206 
     
    340344Pvs<T, S>::AddSample(T sample, const float pdf) 
    341345{ 
    342         S *data = Find(sample); 
    343    
    344         if (data)   
    345         { 
    346                 data->mSumPdf += pdf; 
    347                 return data->mSumPdf; 
    348         } 
    349         else  
    350         { 
    351                 mEntries[sample] = S(pdf); 
    352                 return pdf; 
     346  mSamples++; 
     347  S *data = Find(sample); 
     348   
     349  if (data)   
     350        { 
     351          data->mSumPdf += pdf; 
     352          return data->mSumPdf; 
     353        } 
     354  else  
     355        { 
     356          mEntries[sample] = S(pdf); 
     357          return pdf; 
    353358        } 
    354359} 
     
    358363S * Pvs<T, S>::AddSample2(T sample, const float pdf) 
    359364{ 
    360         S *data = Find(sample); 
    361    
    362         if (data)   
    363         { 
    364                 data->mSumPdf += pdf; 
    365         } 
    366         else  
    367         { 
    368                 mEntries[sample] = S(pdf); 
    369                 data = Find(sample); 
    370         } 
    371  
    372         return data; 
     365  mSamples++; 
     366  S *data = Find(sample); 
     367   
     368  if (data)   
     369        { 
     370          data->mSumPdf += pdf; 
     371        } 
     372  else  
     373        { 
     374          mEntries[sample] = S(pdf); 
     375          data = Find(sample); 
     376        } 
     377   
     378  return data; 
    373379} 
    374380 
     
    378384                                  float &contribution) 
    379385{ 
     386  mSamples++; 
    380387  S *data = Find(sample); 
    381388   
     
    415422                                                  const float pdf) 
    416423{ 
     424  mSamples--; 
     425   
    417426  std::map<T, S, LtSample<T> >:: 
    418427        iterator it = mEntries.find(sample); 
     
    436445int Pvs<T, S>::AddPvs(const Pvs<T, S> &pvs) 
    437446{ 
     447  mSamples += pvs.mSamples; 
    438448  std::map<T, S, LtSample<T> >:: 
    439449        const_iterator it, it_end = pvs.mEntries.end(); 
     
    452462int Pvs<T, S>::SubtractPvs(const Pvs<T, S> &pvs) 
    453463{ 
     464  mSamples -= pvs.mSamples; 
    454465  std::map<T, S, LtSample<T> >:: 
    455466        const_iterator it, it_end = pvs.mEntries.end(); 
Note: See TracChangeset for help on using the changeset viewer.