Changeset 2735 for GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.cpp
- Timestamp:
- 06/04/08 01:49:14 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.cpp
r2732 r2735 70 70 mCurrentViewCell(NULL), 71 71 mCurrentViewPoint(Vector3(0.0f, 0.0f, 0.0f)), 72 mOnlyRandomSampling(false) 73 //mOnlyRandomSampling(true) 72 mOnlyRandomSampling(false), 73 //mOnlyRandomSampling(true), 74 mUseProbablyVisibleSampling(false) 74 75 { 75 76 Environment::GetSingleton()->GetIntValue("GvsPreprocessor.totalSamples", mTotalSamples); … … 798 799 generationTimer.Entry(); 799 800 800 ViewCellBorderBasedDistribution vcStrat(*this, mCurrentViewCell); 801 GenerateRays(DETERMINISTIC_GVS ? numSamples : numSamples / 16, *mDistribution, simpleRays, sInvalidSamples); 801 if (mUseProbablyVisibleSampling && (RandomValue(0, 1) > 0.5)) 802 { 803 ProbablyVisibleDistribution distr(*this, mCurrentViewCell, &mProbablyVisibleTriangles); 804 GenerateRays(numSamples, distr, simpleRays, sInvalidSamples); 805 } 806 else 807 { 808 GenerateRays(DETERMINISTIC_GVS ? numSamples : numSamples / 16, *mDistribution, simpleRays, sInvalidSamples); 809 } 802 810 803 811 generationTimer.Exit(); … … 814 822 const bool pruneInvalidRays = false; 815 823 //const bool pruneInvalidRays = true; 824 816 825 CastRays(simpleRays, vssRays, castDoubleRays, pruneInvalidRays); 817 826 } … … 1432 1441 mGvsStats.mRandomSamples = 0; 1433 1442 mGvsStats.mGvsSamples = 0; 1434 1443 mUseProbablyVisibleSampling = false; 1435 1444 //renderer->mPvsStat.currentPass = 0; 1445 1436 1446 mPass = 0; 1437 1447 … … 1471 1481 newRandomSamples = CastInitialSamples(mInitialSamples); 1472 1482 1483 //if (!mUseProbablyVisibleSampling && !mOnlyRandomSampling) 1473 1484 if (!mOnlyRandomSampling) 1474 1485 newGvsSamples = ProcessQueue(); … … 1500 1511 ++ mPass; 1501 1512 mGvsStats.mPassContribution = mGvsStats.mTotalContribution - oldContribution; 1513 1514 if (mGvsStats.mPassContribution < 2000) 1515 mUseProbablyVisibleSampling = true; 1516 1517 if (mUseProbablyVisibleSampling) 1518 PrepareProbablyVisibleSampling(); 1502 1519 1503 1520 … … 1943 1960 1944 1961 1945 } 1962 void GvsPreprocessor::PrepareProbablyVisibleSampling() 1963 { 1964 1965 // warning: using mailing! 1966 Intersectable::NewMail(); 1967 1968 mProbablyVisibleTriangles.clear(); 1969 CollectProbablyVisibleTriangles(mProbablyVisibleTriangles); 1970 } 1971 1972 1973 void GvsPreprocessor::CollectProbablyVisibleTriangles(ObjectContainer &triangles) 1974 { 1975 ObjectPvsIterator pit = mCurrentViewCell->GetPvs().GetIterator(); 1976 1977 static ObjectContainer tmpTriangles; 1978 1979 while (pit.HasMoreEntries()) 1980 { 1981 tmpTriangles.clear(); 1982 1983 KdIntersectable *kdObj = static_cast<KdIntersectable *>(pit.Next()); 1984 mKdTree->CollectObjectsWithDublicates(kdObj->GetItem(), tmpTriangles); 1985 1986 ObjectContainer::const_iterator oit, oit_end = tmpTriangles.end(); 1987 1988 for (oit = tmpTriangles.begin(); oit != oit_end; ++ oit) 1989 { 1990 TriangleIntersectable *triObj = static_cast<TriangleIntersectable *>(*oit); 1991 1992 // find objects which are not yet accounted for yet contained in kd pvs objects 1993 if (!triObj->Mailed() && (triObj->mCounter < ACCOUNTED_OBJECT)) 1994 { 1995 triObj->Mail(); 1996 triangles.push_back(triObj); 1997 } 1998 } 1999 } 2000 } 2001 2002 2003 }
Note: See TracChangeset
for help on using the changeset viewer.