提交 b325bc89 编写于 作者: M Matt Pharr

Update from book source. No functional changes.

上级 83d4c269
......@@ -509,7 +509,6 @@ NanoVDBMedium::NanoVDBMedium(const Transform &renderFromMedium, Spectrum sigma_a
: renderFromMedium(renderFromMedium),
sigma_a_spec(sigma_a, alloc),
sigma_s_spec(sigma_s, alloc),
sigmaScale(sigmaScale),
phase(g),
majorantGrid(Bounds3f(), {64, 64, 64}, alloc),
densityGrid(std::move(dg)),
......@@ -519,6 +518,9 @@ NanoVDBMedium::NanoVDBMedium(const Transform &renderFromMedium, Spectrum sigma_a
temperatureScale(temperatureScale) {
densityFloatGrid = densityGrid.grid<float>();
sigma_a_spec.Scale(sigmaScale);
sigma_s_spec.Scale(sigmaScale);
nanovdb::BBox<nanovdb::Vec3R> bbox = densityFloatGrid->worldBBox();
bounds = Bounds3f(Point3f(bbox.min()[0], bbox.min()[1], bbox.min()[2]),
Point3f(bbox.max()[0], bbox.max()[1], bbox.max()[2]));
......
......@@ -610,8 +610,8 @@ class NanoVDBMedium {
PBRT_CPU_GPU
MediumProperties SamplePoint(Point3f p, const SampledWavelengths &lambda) const {
// Sample spectra for grid $\sigmaa$ and $\sigmas$
SampledSpectrum sigma_a = sigmaScale * sigma_a_spec.Sample(lambda);
SampledSpectrum sigma_s = sigmaScale * sigma_s_spec.Sample(lambda);
SampledSpectrum sigma_a = sigma_a_spec.Sample(lambda);
SampledSpectrum sigma_s = sigma_s_spec.Sample(lambda);
// Scale scattering coefficients by medium density at _p_
p = renderFromMedium.ApplyInverse(p);
......@@ -635,8 +635,8 @@ class NanoVDBMedium {
DCHECK_LE(tMax, raytMax);
// Sample spectra for grid $\sigmaa$ and $\sigmas$
SampledSpectrum sigma_a = sigmaScale * sigma_a_spec.Sample(lambda);
SampledSpectrum sigma_s = sigmaScale * sigma_s_spec.Sample(lambda);
SampledSpectrum sigma_a = sigma_a_spec.Sample(lambda);
SampledSpectrum sigma_s = sigma_s_spec.Sample(lambda);
SampledSpectrum sigma_t = sigma_a + sigma_s;
return DDAMajorantIterator(ray, tMin, tMax, &majorantGrid, sigma_t);
......@@ -662,7 +662,6 @@ class NanoVDBMedium {
Bounds3f bounds;
Transform renderFromMedium;
DenselySampledSpectrum sigma_a_spec, sigma_s_spec;
Float sigmaScale;
HGPhaseFunction phase;
MajorantGrid majorantGrid;
nanovdb::GridHandle<NanoVDBBuffer> densityGrid;
......
......@@ -162,8 +162,10 @@ void ParameterDictionary::checkParameterTypes() {
for (const ParsedParameter *p : params) {
if (p->type == ParameterTypeTraits<ParameterType::Boolean>::typeName) {
if (p->bools.empty())
ErrorExit(&p->loc, "\"%s\": non-Boolean values provided for Boolean-valued parameter",
p->name);
ErrorExit(
&p->loc,
"\"%s\": non-Boolean values provided for Boolean-valued parameter",
p->name);
} else if (p->type == ParameterTypeTraits<ParameterType::Float>::typeName ||
p->type == ParameterTypeTraits<ParameterType::Integer>::typeName ||
p->type == ParameterTypeTraits<ParameterType::Point2f>::typeName ||
......@@ -173,17 +175,23 @@ void ParameterDictionary::checkParameterTypes() {
p->type == ParameterTypeTraits<ParameterType::Normal3f>::typeName ||
p->type == "rgb" || p->type == "blackbody") {
if (p->ints.empty() && p->floats.empty())
ErrorExit(&p->loc, "\"%s\": non-numeric values provided for numeric-valued parameter",
p->name);
ErrorExit(
&p->loc,
"\"%s\": non-numeric values provided for numeric-valued parameter",
p->name);
} else if (p->type == ParameterTypeTraits<ParameterType::String>::typeName ||
p->type == "texture") {
if (p->strings.empty())
ErrorExit(&p->loc, "\"%s\": non-string values provided for string-valued parameter",
p->name);
if (p->strings.empty())
ErrorExit(
&p->loc,
"\"%s\": non-string values provided for string-valued parameter",
p->name);
} else if (p->type == "spectrum") {
if (p->strings.empty() && p->ints.empty() && p->floats.empty())
ErrorExit(&p->loc, "\"%s\": expecting string or numeric-valued parameter for spectrum parameter",
p->name);
if (p->strings.empty() && p->ints.empty() && p->floats.empty())
ErrorExit(&p->loc,
"\"%s\": expecting string or numeric-valued parameter for "
"spectrum parameter",
p->name);
} else
ErrorExit(&p->loc, "\"%s\": unknown parameter type", p->type);
}
......
......@@ -45,6 +45,7 @@
#define PBRT_CPU_GPU_LAMBDA(...) [=] PBRT_CPU_GPU(__VA_ARGS__)
#endif
// Define Cache Line Size Constant
#ifdef PBRT_BUILD_GPU_RENDERER
#define PBRT_L1_CACHE_LINE_SIZE 128
#else
......
......@@ -7,6 +7,7 @@
#include <pbrt/pbrt.h>
#include <pbrt/util/color.h>
#include <pbrt/util/math.h>
#include <pbrt/util/spectrum.h>
#include <pbrt/util/vecmath.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册