Ignore:
Timestamp:
11/10/05 13:59:18 (19 years ago)
Author:
bittner
Message:

vvs preprocessor update

Location:
trunk/VUT/GtpVisibilityPreprocessor/src
Files:
7 edited

Legend:

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

    r397 r403  
    11501150                 "10"); 
    11511151 
    1152         RegisterOption("VssPreprocessor.totalSamples", 
     1152        RegisterOption("VssPreprocessor.initialSamples", 
    11531153                                                                 optInt, 
    1154                                                                  "-total_samples=", 
     1154                                                                 "-initial_samples=", 
     1155                                                                 "100000"); 
     1156 
     1157        RegisterOption("VssPreprocessor.vssSamples", 
     1158                                                                 optInt, 
     1159                                                                 "-vss_samples=", 
    11551160                                                                 "1000000"); 
    11561161         
     
    11601165                                                                 "100000"); 
    11611166 
     1167  RegisterOption("VssPreprocessor.useImportanceSampling", 
     1168                                                                 optBool, 
     1169                                                                 "-vss_use_importance=", 
     1170                                                                 "true"); 
     1171 
    11621172  RegisterOption("ViewCells.hierarchy", 
    11631173                 optString, 
     
    13031313 
    13041314        RegisterOption("VssTree.maxDepth", optInt, "kd_depth=", "12"); 
    1305   RegisterOption("VssTree.minPvs", optInt, "kd_minpvs=", "32"); 
    1306         RegisterOption("VssTree.maxCostRatio", optFloat, "maxcost=", "0.9"); 
     1315  RegisterOption("VssTree.minPvs", optInt, "kd_minpvs=", "1"); 
     1316  RegisterOption("VssTree.minRays", optInt, "kd_minrays=", "10"); 
     1317        RegisterOption("VssTree.maxCostRatio", optFloat, "maxcost=", "0.95"); 
    13071318        RegisterOption("VssTree.maxRayContribution", optFloat, "maxraycontrib=", "0.5"); 
    13081319 
  • trunk/VUT/GtpVisibilityPreprocessor/src/KdTree.cpp

    r376 r403  
    292292  app << "===== KdTree statistics ===============\n"; 
    293293 
    294   app << "#N_RAYS Number of rays )\n" 
    295       << rays <<endl; 
    296   app << "#N_DOMAINS  ( Number of query domains )\n" 
    297       << queryDomains <<endl; 
    298    
    299294  app << "#N_NODES ( Number of nodes )\n" << nodes << "\n"; 
    300295 
  • trunk/VUT/GtpVisibilityPreprocessor/src/VssPreprocessor.cpp

    r401 r403  
    1616  // this should increase coherence of the samples 
    1717  environment->GetIntValue("VssPreprocessor.samplesPerPass", mSamplesPerPass); 
    18   environment->GetIntValue("VssPreprocessor.totalSamples", mTotalSamples); 
     18  environment->GetIntValue("VssPreprocessor.initialSamples", mInitialSamples); 
     19  environment->GetIntValue("VssPreprocessor.vssSamples", mVssSamples); 
     20        environment->GetBoolValue("VssPreprocessor.useImportanceSampling", mUseImportanceSampling); 
     21         
    1922  mStats.open("stats.log"); 
    2023} 
     
    212215        VssTree *vssTree = NULL; 
    213216 
    214   while (totalSamples < mTotalSamples) { 
     217  while (totalSamples < mInitialSamples) { 
    215218                int passContributingSamples = 0; 
    216219                int passSampleContributions = 0; 
     
    305308         
    306309        int samples = 0; 
    307         for (int i=0; i < 50; i++) { 
    308                 int num = 100000; 
    309                 if (0) { 
     310        while (1) { 
     311                int num = mSamplesPerPass; 
     312                if (!mUseImportanceSampling) { 
    310313                        VssRayContainer vssRays; 
    311314                        for (int j=0; j < num; j++) { 
     
    321324                float pvs = vssTree->GetAvgPvsSize(); 
    322325                cout<<samples<<" avgPVS ="<<pvs<<endl; 
     326                if (samples >= mVssSamples) 
     327                        break; 
    323328        } 
    324329 
  • trunk/VUT/GtpVisibilityPreprocessor/src/VssPreprocessor.h

    r401 r403  
    1515        int mPass; 
    1616  int mSamplesPerPass; 
    17   int mTotalSamples; 
    18   ofstream mStats; 
     17  int mInitialSamples; 
     18  int mVssSamples; 
     19        bool mUseImportanceSampling; 
     20 
     21        ofstream mStats; 
    1922         
    2023  ObjectContainer mObjects; 
  • trunk/VUT/GtpVisibilityPreprocessor/src/VssTree.cpp

    r401 r403  
    7171  environment->GetIntValue("VssTree.maxDepth", termMaxDepth); 
    7272        environment->GetIntValue("VssTree.minPvs", termMinPvs); 
     73        environment->GetIntValue("VssTree.minRays", termMinRays); 
    7374        environment->GetFloatValue("VssTree.maxRayContribution", termMaxRayContribution); 
    7475  environment->GetFloatValue("VssTree.maxCostRatio", termMaxCostRatio); 
     
    172173    maxDepthNodes*100/(double)Leaves()<<endl; 
    173174 
    174   app << "#N_PMINCOSTLEAVES  ( Percentage of leaves with minCost )\n"<< 
    175     minCostNodes*100/(double)Leaves()<<endl; 
     175  app << "#N_PMINPVSLEAVES  ( Percentage of leaves with minCost )\n"<< 
     176    minPvsNodes*100/(double)Leaves()<<endl; 
     177 
     178  app << "#N_PMINRAYSLEAVES  ( Percentage of leaves with minCost )\n"<< 
     179    minRaysNodes*100/(double)Leaves()<<endl; 
    176180         
    177181        app << "#N_PMINSIZELEAVES  ( Percentage of leaves with minSize )\n"<< 
     
    744748        //    stat.minCostNodes++; 
    745749        if ( leaf->GetPvsSize() < termMinPvs) 
    746                 stat.minCostNodes++; 
    747    
    748         if (leaf->GetAvgRayContribution() > termMaxRayContribution ) 
     750                stat.minPvsNodes++; 
     751 
     752        if ( leaf->GetPvsSize() < termMinRays) 
     753                stat.minRaysNodes++; 
     754 
     755        if (0 && leaf->GetAvgRayContribution() > termMaxRayContribution ) 
    749756                stat.maxRayContribNodes++; 
    750757         
     
    770777   
    771778  if ( (leaf->GetPvsSize() < termMinPvs) || 
    772                          (leaf->GetAvgRayContribution() > termMaxRayContribution ) || 
     779                         (leaf->rays.size() < termMinRays) || 
     780                         //                      (leaf->GetAvgRayContribution() > termMaxRayContribution ) || 
    773781       (leaf->depth >= termMaxDepth) || 
    774782                         SqrMagnitude(box.Size()) <= termMinSize ) { 
  • trunk/VUT/GtpVisibilityPreprocessor/src/VssTree.h

    r401 r403  
    5454  int maxDepthNodes; 
    5555  // max depth nodes 
    56   int minCostNodes; 
     56  int minPvsNodes; 
     57  int minRaysNodes; 
    5758        // max ray contribution nodes 
    5859  int maxRayContribNodes; 
     
    8384    rayRefs = 0; 
    8485    maxDepthNodes = 0; 
    85     minCostNodes = 0; 
     86    minPvsNodes = 0; 
     87    minRaysNodes = 0; 
    8688    maxRayRefs = 0; 
    8789    addedRayRefs = removedRayRefs = 0; 
     
    426428                return GetPvsSize()/((float)rays.size() + Limits::Small); 
    427429        } 
     430 
     431        float GetSqrRayContribution() const { 
     432                return sqr(GetPvsSize()/((float)rays.size() + Limits::Small)); 
     433        } 
     434 
    428435}; 
    429436 
     
    555562  int termMinPvs; 
    556563 
     564        // minimal ray number per node to still get subdivided 
     565  int termMinRays; 
     566         
    557567  // maximal cost ration to subdivide a node 
    558568  float termMaxCostRatio; 
  • trunk/VUT/GtpVisibilityPreprocessor/src/default.env

    r401 r403  
    2424 
    2525VssPreprocessor { 
    26         totalSamples 200000 
    27         samplesPerPass  50000 
     26        samplesPerPass  100000 
     27        initialSamples 200000 
     28        vssSamples 1000000 
     29        useImportanceSampling true 
    2830} 
    2931 
     
    3234 
    3335        maxDepth        40 
    34         minPvs          5 
     36        minPvs          1 
     37        minRays         50 
    3538        minSize         0.00001 
    3639        maxCostRatio    0.95 
    37         maxRayContribution 0.3 
     40        maxRayContribution 0.05 
    3841         
    3942        maxTotalMemory  400 
Note: See TracChangeset for help on using the changeset viewer.