diff --git a/src/pbrt/wavefront/media.cpp b/src/pbrt/wavefront/media.cpp index f4ef6a76ce4bae9400c38b3f8d4613b64ce63a1d..9c440a753253b493039e3e9cb99c6b972f685040 100644 --- a/src/pbrt/wavefront/media.cpp +++ b/src/pbrt/wavefront/media.cpp @@ -55,8 +55,8 @@ void WavefrontPathIntegrator::SampleMediumInteraction(int wavefrontDepth) { bool scattered = false; RaySamples raySamples = pixelSampleState.samples[w.pixelIndex]; - Float uDist = raySamples.media.uDist; - Float uMode = raySamples.media.uMode; + Float uDist = rng.Uniform(); + Float uMode = rng.Uniform(); SampledSpectrum T_maj = SampleT_maj( ray, tMax, uDist, rng, lambda, diff --git a/src/pbrt/wavefront/samples.cpp b/src/pbrt/wavefront/samples.cpp index 20c72ccf282321690e71a56cda84982fe9288b62..ecb02d0e0885cd15b2abafeb1572617e42506e9b 100644 --- a/src/pbrt/wavefront/samples.cpp +++ b/src/pbrt/wavefront/samples.cpp @@ -39,8 +39,6 @@ void WavefrontPathIntegrator::GenerateRaySamples(int wavefrontDepth, int sampleI int dimension = 6 + 7 * w.depth; if (haveSubsurface) dimension += 3 * w.depth; - if (haveMedia) - dimension += 2 * w.depth; // Initialize _Sampler_ for pixel, sample index, and dimension ConcreteSampler pixelSampler = *sampler.Cast(); @@ -62,12 +60,6 @@ void WavefrontPathIntegrator::GenerateRaySamples(int wavefrontDepth, int sampleI rs.subsurface.u = pixelSampler.Get2D(); } - rs.haveMedia = haveMedia; - if (haveMedia) { - rs.media.uDist = pixelSampler.Get1D(); - rs.media.uMode = pixelSampler.Get1D(); - } - // Store _RaySamples_ in pixel sample state pixelSampleState.samples[w.pixelIndex] = rs; }); diff --git a/src/pbrt/wavefront/workitems.h b/src/pbrt/wavefront/workitems.h index 982a8f6f1a1acd2ac2096dd2b040a47a47fef2bd..b568a27fbf19648e765743c9a1011434df9acc90 100644 --- a/src/pbrt/wavefront/workitems.h +++ b/src/pbrt/wavefront/workitems.h @@ -35,10 +35,6 @@ struct RaySamples { Float uc; Point2f u; } subsurface; - bool haveMedia; - struct { - Float uDist, uMode; - } media; }; template <> @@ -62,7 +58,6 @@ struct SOA { rs.direct.uc = dir.v[2]; rs.haveSubsurface = int(dir.v[3]) & 1; - rs.haveMedia = int(dir.v[3]) & 2; Float4 ind = Load4(indirect + i); rs.indirect.uc = ind.v[0]; @@ -75,11 +70,6 @@ struct SOA { rs.subsurface.u = Point2f(ss.v[1], ss.v[2]); } - if (rs.haveMedia) { - rs.media.uDist = mediaDist[i]; - rs.media.uMode = mediaMode[i]; - } - return rs; } @@ -89,7 +79,7 @@ struct SOA { PBRT_CPU_GPU void operator=(RaySamples rs) { - int flags = (rs.haveSubsurface ? 1 : 0) | (rs.haveMedia ? 2 : 0); + int flags = rs.haveSubsurface ? 1 : 0; soa->direct[index] = Float4{rs.direct.u[0], rs.direct.u[1], rs.direct.uc, Float(flags)}; soa->indirect[index] = Float4{rs.indirect.uc, rs.indirect.rr, @@ -97,10 +87,6 @@ struct SOA { if (rs.haveSubsurface) soa->subsurface[index] = Float4{rs.subsurface.uc, rs.subsurface.u.x, rs.subsurface.u.y, 0.f}; - if (rs.haveMedia) { - soa->mediaDist[index] = rs.media.uDist; - soa->mediaMode[index] = rs.media.uMode; - } } SOA *soa;