bugfix attempt #2 for a corner-case in heterogeneous media

metadata
Wenzel Jakob 2010-11-30 22:46:28 +01:00
parent 828d3d3af9
commit 407879c389
2 changed files with 13 additions and 4 deletions

View File

@ -395,7 +395,9 @@ public:
}
Float integrateDensities(Ray ray, Float length) const {
int nParts = std::max(1, (int) std::ceil(length/m_stepSize));
if (length == 0)
return 0.0f;
int nParts = (int) std::ceil(length/m_stepSize);
nParts += nParts % 2;
const Float stepSize = length/nParts;
const Vector increment = ray.d * stepSize;
@ -421,8 +423,10 @@ public:
Float &currentSigmaT,
Spectrum &currentAlbedo,
Float desiredTau) const {
if (maxDist == 0)
return std::numeric_limits<Float>::infinity();
int nParts = std::max(1, (int) std::ceil(maxDist/m_stepSize));
int nParts = (int) std::ceil(maxDist/m_stepSize);
Float stepSize = maxDist/nParts;
Vector fullIncrement = ray.d * stepSize,
halfIncrement = fullIncrement * .5f;

View File

@ -199,7 +199,9 @@ public:
}
Float integrateDensities(Ray ray, Float length) const {
int nParts = std::max(1, (int) std::ceil(length/m_stepSize));
if (length == 0)
return 0.0f;
int nParts = (int) std::ceil(length/m_stepSize);
nParts += nParts % 2;
const Float stepSize = length/nParts;
const Vector increment = ray.d * stepSize;
@ -225,7 +227,10 @@ public:
Float &currentSigmaT,
Spectrum &currentAlbedo,
Float desiredTau) const {
int nParts = std::max(1, (int) std::ceil(maxDist/m_stepSize));
if (maxDist == 0)
return std::numeric_limits<Float>::infinity();
int nParts = (int) std::ceil(maxDist/m_stepSize);
Float stepSize = maxDist/nParts;
Vector fullIncrement = ray.d * stepSize,
halfIncrement = fullIncrement * .5f;