Changeset 1893 for GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
- Timestamp:
- 12/14/06 09:16:08 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
r1890 r1893 585 585 586 586 587 static float AvgRayContribution(const int pvs, const int nRays) 588 { 589 return (float)pvs / (float)nRays; 590 } 591 592 587 593 void BvHierarchy::EvalSubdivisionCandidate(BvhSubdivisionCandidate &splitCandidate, 588 594 bool computeSplitPlane) … … 591 597 { 592 598 const bool sufficientSamples = 593 599 splitCandidate.mParentData.mNumRays > mMinRaysForVisibility; 594 600 595 601 const bool useVisibiliyBasedHeuristics = … … 609 615 const int previousMisses = splitCandidate.mParentData.mMaxCostMisses; 610 616 611 splitCandidate.SetMaxCostMisses( 612 maxCostRatioViolated ?previousMisses + 1 : previousMisses);617 splitCandidate.SetMaxCostMisses(maxCostRatioViolated ? 618 previousMisses + 1 : previousMisses); 613 619 } 614 620 … … 629 635 const int pvsEntriesIncr = EvalPvsEntriesIncr(splitCandidate); 630 636 splitCandidate.SetPvsEntriesIncr(pvsEntriesIncr); 631 632 const int numViewCells = CountViewCells(leaf->mObjects); 633 634 const float avgRayContrib = 635 (float)splitCandidate.mParentData.mNumRays / (float)numViewCells; 636 637 cout << "avgRayContrib: " << avgRayContrib << endl; 637 638 638 #ifdef GTP_DEBUG 639 639 Debug << "old render cost: " << oldRenderCost << endl; … … 642 642 #endif 643 643 644 const float priority = EvalPriority(splitCandidate, 645 oldRenderCost, 646 renderCostDecr); 647 644 float priority = EvalPriority(splitCandidate, 645 oldRenderCost, 646 renderCostDecr); 647 648 // avg ray contri: this leaf is a pvs entry in all the view cells 649 // that see one of the objects. 650 const int numViewCells = CountViewCells(leaf->mObjects); 651 652 const float avgRayContri = 653 AvgRayContribution(numViewCells, splitCandidate.mParentData.mNumRays); 654 655 cout << "avgRayContri: " << avgRayContri << endl; 656 657 // avg ray contri very high. i.e., the result is influenced by undersampling 658 // => decrease priority 659 if (avgRayContri > 99925) 660 { 661 priority /= avgRayContri; 662 } 663 648 664 // compute global decrease in render cost 649 665 splitCandidate.SetPriority(priority);
Note: See TracChangeset
for help on using the changeset viewer.