Ignore:
Timestamp:
11/09/06 19:41:31 (18 years ago)
Author:
bittner
Message:

visibility filter updates

File:
1 edited

Legend:

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

    r1723 r1737  
    366366 
    367367void 
    368 NormalizeRatios(float ratios[3]) 
     368NormalizeRatios(float ratios[4]) 
    369369{ 
    370370  int i; 
    371371  float sumRatios; 
    372   sumRatios = ratios[0] + ratios[1] + ratios[2]; 
     372  sumRatios = ratios[0] + ratios[1] + ratios[2] + ratios[3]; 
    373373  if (sumRatios == 0.0f) { 
    374374        ratios[0] = ratios[1] = ratios[2] = 1.0f; 
    375         sumRatios = 3.0f; 
    376   } 
    377    
    378   for (i=0 ; i < 3; i++) 
     375        sumRatios = 4.0f; 
     376  } 
     377   
     378  for (i=0 ; i < 4; i++) 
    379379        ratios[i]/=sumRatios; 
    380380 
     
    387387#endif 
    388388   
    389   for (; i < 3; i++) 
     389  for (; i < 4; i++) 
    390390        if (ratios[i] < MIN_RATIO) 
    391391          ratios[i] = MIN_RATIO; 
    392392 
    393   sumRatios = ratios[0] + ratios[1] + ratios[2]; 
    394   for (i=0 ; i < 3; i++) 
     393  sumRatios = ratios[0] + ratios[1] + ratios[2] + ratios[3]; 
     394  for (i=0 ; i < 4; i++) 
    395395        ratios[i]/=sumRatios; 
    396396   
     
    432432  int rssPass = 0; 
    433433  int rssSamples = 0; 
     434 
     435  mDistributions.push_back(SamplingDistribution(SamplingStrategy::RSS_BASED_DISTRIBUTION)); 
     436  mDistributions.push_back(SamplingDistribution(SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION)); 
     437  mDistributions.push_back(SamplingDistribution(SamplingStrategy::DIRECTION_BASED_DISTRIBUTION)); 
     438  mDistributions.push_back(SamplingDistribution(SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION)); 
    434439   
    435440  if (mLoadInitialSamples) { 
     
    439444  } else { 
    440445        SimpleRayContainer rays; 
    441  
     446         
    442447        cout<<"Generating initial rays..."<<endl<<flush; 
    443  
     448         
    444449        if (mUseImportanceSampling) { 
    445           GenerateRays(mInitialSamples/2, SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION, rays); 
     450          GenerateRays(mInitialSamples/3, SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION, rays); 
    446451          //      GenerateRays(mInitialSamples/3, SamplingStrategy::OBJECT_BASED_DISTRIBUTION, rays); 
    447           GenerateRays(mInitialSamples/2, SamplingStrategy::DIRECTION_BASED_DISTRIBUTION, rays); 
     452          GenerateRays(mInitialSamples/3, SamplingStrategy::DIRECTION_BASED_DISTRIBUTION, rays); 
     453          GenerateRays(mInitialSamples/3, SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION, rays); 
    448454          //    GenerateRays(mInitialSamples/4, OBJECT_DIRECTION_BASED_DISTRIBUTION, rays); 
     455           
     456 
    449457        } else { 
    450                 int rayType = SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION; 
     458          int rayType = SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION; 
    451459          if (mObjectBasedSampling) 
    452460                rayType = SamplingStrategy::OBJECT_BASED_DISTRIBUTION; 
     
    578586 
    579587#if USE_RSS_TREE         
    580           static float ratios[] = {0.9f,0.05f,0.05f}; 
     588          static float ratios[] = {0.9f,0.05f,0.05f,0.05f}; 
    581589#else 
    582           static float ratios[] = {0.0f,0.05f,0.05f}; 
     590          static float ratios[] = {0.0f,0.05f,0.05f,0.05f}; 
    583591#endif 
    584592          NormalizeRatios(ratios); 
    585593                   
    586           cout<<"New ratios: "<<ratios[0]<<" "<<ratios[1]<<" "<<ratios[2]<<endl; 
     594          cout<<"New ratios: "<<ratios[0]<<" "<<ratios[1]<<" "<<ratios[2]<<" "<<ratios[3]<<endl; 
    587595 
    588596          //float ratios[] = {1.0f,0.0f,0.0f}; 
    589597           
    590           int nrays[3]; 
    591           float contributions[3]; 
    592           float times[3]; 
     598          int nrays[4]; 
     599          float contributions[4]; 
     600          float times[4]; 
    593601           
    594602          long t1; 
     
    660668          } 
    661669           
     670          if (ratios[3]!=0.0f) { 
     671                t1 = GetTime(); 
     672                GenerateRays(int(mRssSamplesPerPass*ratios[3]), 
     673                                         SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION, rays); 
     674                CastRays(rays, tmpVssRays, true); 
     675                castRays += (int)rays.size(); 
     676#if ADD_RAYS_IN_PLACE  
     677                contributions[3] = mViewCellsManager->ComputeSampleContributions(tmpVssRays, true, false); 
     678#else 
     679                contributions[3] = mViewCellsManager->ComputeSampleContributions(tmpVssRays, false, true); 
     680#endif 
     681                times[3] = TimeDiff(t1, GetTime()); 
     682                nrays[3] = (int)rays.size(); 
     683                 
     684                mStats<<"#DirectionalRelContrib"<<endl<<contributions[3]/nrays[3]<<endl; 
     685                 
     686                vssRays.insert(vssRays.end(), tmpVssRays.begin(), tmpVssRays.end() ); 
     687                 
     688                rays.clear(); 
     689                tmpVssRays.clear(); 
     690          } 
     691 
    662692           
    663693          // now evaluate the ratios for the next pass 
     
    668698          ratios[1] = sqr(contributions[1]/(TIME_WEIGHT*times[1] + (1 - TIME_WEIGHT)*nrays[1])); 
    669699          ratios[2] = sqr(contributions[2]/(TIME_WEIGHT*times[2] + (1 - TIME_WEIGHT)*nrays[2])); 
     700          ratios[3] = sqr(contributions[3]/(TIME_WEIGHT*times[3] + (1 - TIME_WEIGHT)*nrays[3])); 
    670701#else 
    671702          ratios[0] = contributions[0]/(TIME_WEIGHT*times[0] + (1 - TIME_WEIGHT)*nrays[0]); 
    672703          ratios[1] = contributions[1]/(TIME_WEIGHT*times[1] + (1 - TIME_WEIGHT)*nrays[1]); 
    673704          ratios[2] = contributions[2]/(TIME_WEIGHT*times[2] + (1 - TIME_WEIGHT)*nrays[2]); 
     705          ratios[3] = contributions[3]/(TIME_WEIGHT*times[3] + (1 - TIME_WEIGHT)*nrays[3]); 
     706           
    674707#endif     
    675708 
Note: See TracChangeset for help on using the changeset viewer.