From mmp at pbrt.org Tue Apr 26 00:20:42 2005 From: mmp at pbrt.org (Matt Pharr) Date: Tue Apr 26 00:23:36 2005 Subject: [Pbrt-announce] pbrt source code update released Message-ID: The first patch release of pbrt, numbered 1.02 for various arcane reasons and fixing numerous (mostly) small errors found since the book's release, is now available. See the downloads page, http://pbrt.org/downloads.php for links to the source code. Special thanks to Arek Zimny for finding and suggesting fixes to many of the bugs fixed in this release. The full release notes are below. -matt and greg pbrt Release 1.02 (25 April 2005) ------------- Installation: ------------- The pbrtsrc-1.02.tar.gz and pbrtsrc-1.02.zip files include updated source code to the pbrt rendering system described in "Physically Based Rendering: >From Theory to Implementation" by Matt Pharr and Greg Humphreys. The zip file includes project files and libraries for bulding the system under Windows and the tar.gz file includes make files and libraries for building under Linux and OSX. See page 1017 of the PBR book for informaton about building and installing under Windows and page 1018 for information about building and installing under Linux. See the pbrt.org website for more information about pbrt. See the accompanying file license.txt for information about the license agreement under which this software is provided. Your use of this software constitutes acceptance of this license. ---------- Bug Fixes: ---------- The following bugs from the pbrt bug database (http://pbrt.org/bugtracker) are fixed in this release. - Bug #2: Fixed errors in windows project files: film.cpp was missing from core project, buffer security turned off for release builds, had project file to build bumpy.cpp (which doesn't exist) file to build bumpy.cpp was missing. - Bug #3: Added checks to camera and light constructors to detect non-uniform scale transformations and warn about them, if present. (Cameras and lights don't work properly if their transformations have non-uniform scales) - Bug #8: Add checks in Blinn and Anisotropic microfacet distribution constructors to detect excessively large and NaN exponent values. - Bug #10: Added casts in PhotonIntegrator to eliminate compiler warnings about casts from doubles. - Bug #12: Fixed pbrtTransform() to set the current transformation matrix from the given matrix; previously, it was multiplying by the given matrix, just like pbrtConcatTransform() - Bug #13: Input file parser doesn't detect errors like: "float foo" "some-texture-name". (Where "float" should have been "texture"). This is particularly bad since the TT scene on the CD has this error in it. Fixed the parser to detect this case and treat it as a texture as intended by the user. - Bug #14: Fixed InfiniteAreaLight::Sample_L() to no longer potentially divide by an uninitialized variable depending on how the compiler generated code. (Also fixed AreaLight in a similar manner). - Bug #15: Fixed SphericalMapping2D::Map() method to compute *dtdy correctly (it would incorrectly assign to *dtdx in the else clause of the if test.) - Bug #17: Added COREDLL to declaration of ComputeStep1dCDF() function so that it's available to plugins under windows. - Bug #18: Fixed triangle area calculation in test for degenerate uv mapping on triangles in TriangleMesh's CreateShape() function. - Bug #20: Avoid possible degenerate case when computing dPdu and dPdv on spheres. - Bug #21: Fix Assert() macro to handle expressions using modulus '%' operator. - Bug #25: Fix error in implementation of Anisotropic::sampleFirstQuadrant() - Bug #26: dNdu and dNdv in DifferentialGeometry should be Normals (and in particular should transform like Normals), not Vectors. - Bug #27: Fix AggregateVolume::p() method to correctly handle the case of multiple overlapping volumes. - Bug #28: Fixed Scene::WorldBound() to include the extents of any VolumeRegions in the scene as well as the scene geometry. - Bug #29: Fixed the Monte Carlo-based implementation of BxDF::rho() to no longer incorrectly divide by M_PI. - Bug #30: Fixed the computation of blinn_pdf value in Blinn microfacet distribution to divide by exponent+2, not exponent+1. - Bug #32: Use $(MAKE), not "make" in clean rule in makefile. - Bug #33: Fixed implementation of Anisotropic::D() and anisotropic_pdf calculations to match derivation. - Bug #36: Fixed possible dereference of NULL pointer when per-vertex tangents were provided for triangle mesh without per-vertex normals. - Bug #37: Fixed LookAt implementation so that it actually will always generate a rigid body transformation. ------------------------------------- Additional fixes without bug numbers: ------------------------------------- Turned off buffer security checks on windows builds; this speeds things up a bunch! Added missing COREDLL declarations to: Spectrum::Exp(), RejectionSampleDisk(), Rotate[XYZ](), Rotate(), LookAt(), EstimateDirect(), SampleStep1d(), ComputeStep1dCDF(), MemoryArena class, GeometricPrimitive class, and InstancePrimitive class. Added missing const qualifier to Point::operator+ method. Fixed BBox::BoundingSphere() method to handle degenerate bounding boxes gracefully. Fixed typo in MipMap down-filtering of previous mip-map level. Fixed DirectLighting integrator so that area light sources visible from specular reflection or refraction would still be visible. Fixed AreaLight::Sample_L() method to pass the sampled point to AreaLight::L() to compute outgoing radiance, not the point at which lighting is being computed. Fixed memory leaks in LDSampler by freeing memory in destructor. Fix TriangleMesh computation of bitangent vectors in cases where tangent vectors are provided explicitly. Fixed case in ImageFilm that could lead to images with zero pixels in one dimension when a small crop window was given. Added 2005 to copyright notices. Bumped version number to 1.02.