forked from mmp/pbrt-v1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release_notes.txt
286 lines (197 loc) · 10.4 KB
/
release_notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
pbrt Release 1.05 (XXX 2009)
-------------
Installation:
-------------
The pbrtsrc-1.05.tar.gz and pbrtsrc-1.05.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 source code, for bulding the system under
Windows, and the tar.gz file includes makefiles and source code for
building under Linux, OSX, FreeBSD, and OpenBSD. (For all of these these
platforms, you are expected to install OpenEXR on your system yourself; for
non-Windows systems, information about how to do this is provided during
the build process. For windows systems, you'll need to download OpenEXR
from http://openexr.com, follow installation directions from there, and
then update the solution files to be able to find the directories where the
OpenEXR libraries and headers are installed.)
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.
The source code to pbrt (*but not the contents of the book itself*) is
released under the GNU Public License; see the accompanying file
COPYING.txt for information about the license agreement under which this
software is provided. Your use of this software constitutes acceptance of
this license.
Thanks in particular to Kevin Egan for many bug reports and patches that
went into this release.
--------------
Other Changes:
--------------
This release has the author-supplied plugins from
http://pbrt.org/downloads.php already included.
----------
Bug Fixes:
----------
The following bugs (many from the pbrt bug database at
http://pbrt.org/bugtracker) are fixed in this release.
- For specular refraction, changed the test for total internal reflection
from 'if (sint > 1.)' to 'if (sint >= 1.)', thus eliminating a rare case
where rays would have NaN direction values, which had a catastrophic
performance impact elsewhere in the system.
- Added assertions to check for not-a-number values in Spectrum, Point,
Vector, and Normal constructors.
- Replaced WriteEXR function with shorter one that doesn't give valgrind
warnings
- Call abort(), not exit(1) for PBRT_ERROR_ABORT level errors, so can more
easily catch them in the debugger.
-------------------
Previous Bug Fixes:
-------------------
The following bugs from the pbrt bug database (http://pbrt.org/bugtracker)
Were fixed in the 1.04 release.
- Copyright notices in source code files updated to reflect GPL licensing
change actually done in 1.03 release
- Bug #69: importance sampling bugs in Anisotropic, Blinn, and Lafortune
BxDFs fixed
- Bug #7: depth of field lens position calculation wrong
- Bugs #38, #49: kd-tree traversal may produce wrong results when ray
origin lies on splitting plane
- Bug #82: SampleHG() function for importance sampling Henyey-Greenstein
phase function was incorrect
- Bug #85: added check for correct number of uv texture coordinates with
triangle meshes, when they are provided
- Bug #61: path integrator doesn't get specular reflections of infinite
area lights
- Bug #80: photonmap.cpp calls kdtree.h - NodeData expressions invalid.
(MSVC safe runtime being overly-conservative with STL vector abuse)
- Fixed null pointer dereference in infinite light source Power() calculation
when radianceMap is NULL.
- Exphoton map final gathering code had a variable that shadowed the
variable 'n' that contained the surface normal, which led to a
nonsensical dot product term, which led to noisy and incorrect results
(Thanks to Thomas de Bodt for finding this!)
-----------------------------
Bug fixes in the 1.03 release
-----------------------------
The following bugs from the pbrt bug database (http://pbrt.org/bugtracker)
Were fixed in the 1.03 release.
- Bug #77: Fix the Mie scattering phase functions to actually integrate to
one...
- Bug #76: Added missing deletes in ParamSet::Erase*() methods.
- Bug #75: Rewrote ply2pbrt to be in newfangled "ANSI C", not K&R.
- Bug #74: Added calls to let Materials access geometry and material
ParamSets directly.
- Bug #70: The hemisphere check in the Blinn class was incorrect
- Bug #68: The OrenNayar BRDF would return NaNs for certain ill-behaved
directions.
- Bug #66: Logic in exponent check in Blinn() constructor was incorrect
- Bug #65: May have uninitialized values in LDSampler if an instance is
constructed and then destroyed without any samples being generated.
- Bug #57: Cylindrical texture mapping code had a typo in the discontiuity
detection code where it computes dtdy.
- Bug #56: Partial derivatives of disks are computed incorrectly if the
inner-radius is non-zero.
- Bug #55: The single-scattering volume integrator would crash when there
were no lights
- Bug #54: Change embedded ^M in pbrtlex.l to a more-portable \x0a
- Bug #53: The DirectLighting integrator was incorrectly requesting a
single 2D sample, rather than a single 1D sample, for the case of
choosing a single light source to sample from.
- Bug #51: Fixed gcc 4.02 build issues.
- Bug #48: Radiance scale factor for transmission into a dielectric was
incorrect.
- Bug #46: TriangleMesh::GetShadingGeometry() wasn't properly transforming
the partial derivatives into world space.
- Bug #45: Fixed incorrect scale factor in FresnelBlend::f() method.
- Bug #44: Invalid ray differentials could be initialized in Scene::
Render() due to that method not paying addention to the weights
returned by Camera::GenerateRay() for the auxiliary rays.
- Bug #43: OSX 10.4 build issues fixed
- Bug #42: NURBS specificed with homogeneous "Pw" coordinates would
incorrectly hit an assertion in the NURBS CreateShape() routine.
- Bug #41: Use safe string functions (snprintf(), etc.) to avoid buffer
overflows (and make OpenBSD's compiler happier)
- Bug #40: Added support for OpenBSD to makefile and pbrt.h
- Bug #34: Out of bounds sample locations would crash
ImageFilm::AddSample()
------------------------------
Bug Fixes In The 1.02 Release:
------------------------------
The following bugs were fixed in the previous pbrt patch 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.