|
|
A windows binary for beta 37 is up at http://www.povray.org/beta/,
source is available via http://www.povray.org/beta/source/.
--------------------------------------------
Changes between 3.7.beta.35 and 3.7.beta.37
--------------------------------------------
Partially fixed the following bugs:
http://bugs.povray.org/task/81 FS#81 (sphere_sweep generating artifacts)
http://bugs.povray.org/task/93 FS#93 (Photons are unnaturally amplified by
pass_through objects)
http://bugs.povray.org/task/102 FS#102 (#switch directive parsing problem)
Fixed the following bugs:
http://bugs.povray.org/task/67 FS#67 (Alpha channel in image map is ignored for
shadows)
http://bugs.povray.org/task/78 FS#78 (Wrong rendering of BeamTest-Scene in
3.7.beta.35a)
http://bugs.povray.org/task/83 FS#83 (Redundant code in pvengine.cpp) (removed
apparently duplicate
http://bugs.povray.org/task/88 FS#88 (File output code does not properly handle
negative color values)
http://bugs.povray.org/task/89 FS#89 (PPM output garbled for bit depths other
than 8 bits)
http://bugs.povray.org/task/90 FS#90 (POV-Ray accepts additional patterns after
(slope))
http://bugs.povray.org/task/92 FS#92 (Sphere_Sweep Bug)
http://bugs.povray.org/task/94 FS#94 (Unexpected refraction angle in interfaces
with changing IOR <> 1.0)
http://bugs.povray.org/task/95 FS#95 (Photons are over-attenuated by
semi-transparent surfaces)
http://bugs.povray.org/task/97 FS#97 (Forward-slash pathnames not fully
supported in Windows version)
http://bugs.povray.org/task/100 FS#100 (cutaway_textures)
Implemented the following enhancement requests:
http://bugs.povray.org/task/84 FS#84 (A for-loop construct)
Photon changes
--------------
Refer FS#93 (Photons are unnaturally amplified by pass_through objects)
As the error is also present in POV-Ray 3.6, behavior has necessarily
changed with this fix; pass_through objects will now affect the color of
photons on their way to their target, according to pigment filter/transmit,
interior fade, and media (which implies that opaque objects will block
photons even when declared pass_through); it needs to be seen whether this
new behavior will be accepted by the users, or whether some additional
mechanism will have to be implemented to choose between old and new
behavior for compatibility with legacy scenes. At present, behavior can
only be changed at compile time with the preprocessor defines
PT_FILTER_BEFORE_TARGET
and PT_AMPLIFY_BUG in photons.cpp.
Radiosity changes
-----------------
When a new sample has been gathered after sample lookup returned insufficient
samples, sample lookup is no longer run again; instead, the new sample is
interpolated with the results of the earlier lookup.
The actual number of samples required to satisfy the reuse_count setting is
now influenced by sample quality, with high-quality samples reducing the
effective number of samples required (down to 1/4 of the parameter value in
extreme cases) and low-quality samples increasing the number. Note that this
may change the balance between speed and quality for some scenes.
The maximum_reuse parameter now governs the maximum effective radius of a
sample more directly.
Trimmed down radiosity sample memory footprint a bit.
Improved pretrace "pixel" coordinates computation
New features
------------
AOI Pattern:
Implemented AOI pattern (thanks to Grimbert Jerome for most of the code);
the syntax is as follows:
pigment { aoi pigment_map { ... } }
normal { aoi normal_map { ... } }
texture { aoi texture_map { ... } }
The pattern gives a value proportional to the angle between the ray and the
surface; for consistency with the slope pattern, values range from 0.5 where
ray is tangent to the suftace, to 1.0 where perpendicular; in practice,
values below 0.5 may occur in conjunction with smooth triangles or meshes.
(Note that this differs from the current MegaPOV implementation, where the
values
range from 0.5 down to 0.0 instead.)
Slope Pattern extension:
Extended slope pattern to specify a reference point instead of a direction;
the new syntax is as follows:
slope { point_at <ReferencePoint> [, Lo_Slope, Hi_Slope] }
(Note that this variant currently does *not* allow for the "altitude" keyword to
be used.)
The functionality is similar to MegaPOV's "aoi <ReferencePoint>" pattern,
except that the values are reversed, i.e. range from 0.0 for surfaces
facing away from the point in question, to 1.0 for surfaces facing towards
that point; thus, "slope { <Vector> }" and "slope { point_at
<Vector>*VeryLargeNumber }" have virtually the same effect.
Other SDL changes
-----------------
Modified #break semantics; the #break directive can now be used:
- anywhere within a #case or #range block, to skip to the end of the
#switch directive (previously, #break was only useful right before the next
#case, #range or #else directive, to indicate that a slip-through was not
desired);
- anywhere within a loop block (both #while and #for), to preliminarily
terminate the loop; and
- anywhere within a #macro block, to preliminarily terminate the macro.
Example for the use in a loop:
#local R = seed(4711);
#for (I, 1, 100)
#if (rand(R) < I/1000)
#break // terminate loop early
#end
#debug concat(str(I,0,0), " iterations and counting\n")
#end
Where multiple #switch, loop and/or #macro blocks are nested, #break will
leave only the innermost of these.
Implemented a #for loop construct (see FS#84); the following syntax -
#for (Identifier, Start, End [, Step])
//...
#end
is now available for simple loops incrementing Identifier from Start to End
(inclusive) with the given Step size (default: +1.0). Basically, it works the
same as the classic #while pattern:
#local Identifier = Start;
#while (Identifier <= End)
//...
#local Identifier = Identifier + Step;
#end
Some additional notes:
- If Step is negative, comparison will be automatically adjusted to match a
"countdown" pattern.
- Start, End and Step are evaluated only *once*.
- The loop counter is a full-fledged local variable. Any local variable of
the same name already defined before the loop *will* be overwritten without
warning (note that in the main scene file, all local variables outside of
macros are effectively global); inside the loop, any tampering with the
variable is possible for effect, as long as it is defined as a local numeric
variable at the end of each iteration.
- After the loop has terminated, the variable will remain defined, typically
holding the value End+Step.
- The loop counter must *not* be an array element.
Image output changes
--------------------
Image file output now uses the GammaCurve mechanism already in use for
image file input, to allow for arbitrary transfer functions (e.g. as used by
sRGB) in the future.
Output/histogram file type is now identified by the command line / INI
options parser, removing some uglies from the code and allowing for easier
maintenance of file type letters.
Radiance HDR image output no longer writes the proprietary GAMMA header field.
PPM image output now supports 16-bit greyscale output (effectively writing a
PGM file instead), to be activated via the "Greyscale_Output=on" option or
the "+FPg" file type switch.
Post a reply to this message
|
|