POV-Ray : Newsgroups : povray.binaries.programming : An updated povr tarball for Unix/Linux. 7c1adb79 Server Time
16 Oct 2024 01:07:50 EDT (-0400)
  An updated povr tarball for Unix/Linux. 7c1adb79 (Message 1 to 2 of 2)  
From: William F Pokorny
Subject: An updated povr tarball for Unix/Linux. 7c1adb79
Date: 4 Mar 2023 22:04:43
Message: <640406cb@news.povray.org>
Please see the attached tarball and previous announcements in this fora 
and INSTALL.txt for suggestions on compiling and running via wrapper script.

A reminder the povr fork is not POV-Ray. As time pass it's less likely 
existing POV-Ray scenes will work without modification.

Bill P.

---

--------------------- povr-3.8.0-x.povr_7c1adb79.tar.gz  Mar 04, 2023

A povr specific fix for an 08 Feb 2023 post by Chris R to beta-test with 
the title: Spline causing 3.8 beta 2 to crash.

Adding new includes in version.inc and forkversion.inc. These includes 
make use of fork_str() and fork_val() parser constants - when available 
- to support running modified versions of POV-Ray alongside nominally 
POV-Ray release aligned compiles. See the include files for more 
information and example usage. In other words, these additions enable 
users to set up conditional behavior with respect to particular forks in 
their scene description language (SDL) files.

Adding reflection block keyword inv_pnormal_cure to expose and 
explicitly make available fixes / modifications to reflected rays any 
time a normal{} block is used in a texture / material. The current 
available options are 0-5,11. See postings to v4.0 discussion forum for 
more information. The default was left at (1) which was the previously 
'secrete to users' three-way set of internal fixes. Yes, the code being 
exposed here in the SDL has long been twiddling with reflected rays and 
so reflection results. The effects are mostly muted where the bump_sizes 
are small and the reflections not near tangent to the surface.

Adding reflection block specific intensity_max. Applies specifically to 
reflection as handled with 1-n layered textures and unavoidably overlaps 
somewhat with the finish blocks overall intensity_max if it too is active.

Hacked a patch for openexr read with large floats. Problem values being 
those larger than about 2^16. Causing unavoidable speckling / blotchy 
patches both light and dark per color channel - depending on features 
used. What was seen for issues depends some on -ffast-math equivalent 
compiler settings. Added code a more controls around EXR_PRESCAN_PATCH 
(defaulted on) and POV_PIGMENT_DEBUG (defaulted off) settings. The 
latter becomes active with POV_DEBUG compiles and it looks for similar 
+-inf channel issues coming from anywhere - necessary because some of 
our colour (ie colour.h) code attempts to fix up bad color channel 
values and tends to hide issues, like the openexr one here, in doing so. 
The hack patch should be removed for code correctly handling exr files 
with larger full float values on move to exr 3.0.

Created an official normal block pattern called micro from the bevy 9 
test bed and corrected a bug not initially picked up in the original 
bevy 9 implementation where the result in x somewhat mangled.  It's 
depends on Anti-Aliasing (AA) for overall effect. Use: normal { micro 
0.01 }.

Added a fix to code setting up for the use of Intersect_BBox to avoid 
floating point exceptions causing unstable downstream numerical issues. 
Maintaining the ability to use --ffast-math with this fix a win for 
performance, but the fix is itself somewhat costly - especially given 
the exposure for most users is not that common. Perhaps better can be 
worked out later - understand the gains and impacts of Intersect_BBox first.

This version of the source code is configured with the useless zeroing 
of vector components due our vector.h template code turned off. Much 
work done to find needed initializations to zero (or other values) being 
hidden / obfuscated by the previous behavior. NOTE! Odds are good I 
missed something somewhere. Expecting this true, added a new 
configuration option in --enable-vector-zeroing which restores the 
previous zeroing behavior on vector construction / allocation. Aside: 
The broader adoption of vector.h in v3.8 is 2-3% of that 16% v3.7 / v3.8 
slowdown that came with that commit moving more strongly toward C++ 
methods. See: github GH363 / #363.

Fixing background/skysphere radiosity bug which had been, unfortunately, 
long mitigated by the extra initializations of vector components to zero 
in vector.h.

Minor cleanup in internal functions and vm. A few run time asserts made 
compile time static. Added static asserts to prevent the VM's integer 
opcodes from being compiled should someone turn on that compile option - 
the implementation is not complete with respect to POV-Ray in total.

Attempted to restore a little run time error reporting in the VM. The 
error reporting has long been disabled unsure when this happened 
(v3.7/v3.8?).

Reworked the sphere.cpp code in moving away from DEPTH_TOLERANCE, 
EPSILON to gkMinIsectDepthReturned or gkDBL_epsilon. Expected accuracy 
for the shape should be better by about two orders of magnitude. We have 
still the issue spheres, like sphere_sweeps and a few others eliminates 
transforms where the sphere's internal representation can be changed to 
represent the same thing.  This approach is likely faster, but it hurts 
numerically.

In testing POVMS with an active POVMS POVMS_NO_ORDERED_STREAM_DATA to 
see if performance faster as expected, I found a bug where I'd not 
previously gotten the float to double right. The option surprisingly was 
not faster though certainly looks like it should be. Likely why it's set 
as is and the bug fix likely useless practically.

Adding explicit internal initializations of INormal and PNormal where 
missing in preparation of trying to eliminate the mostly useless 
initializations to zero in vector.h.

Additional code clean up for compiler warnings. Changing DBL to double, 
FLT to float. Old generic EPSILON to gkMinIsectDepthReturned or 
gkDBL_epsilon as appropriate. No intended change in behavior, but at the 
very edges internally there could be as related to EPSILON.

While cleaning code corrected (at least better) old off center cubic DF3 
interpolation (12) at the edges. Wrap was wrong - is wrong in the v3.8 
release code give POV-Ray proper never adopted the off-shift fixes many 
years ago.

Turning off additional asserts for normal compiles. Many non debug 
parser ones especially were set soft rather than disable. The povr 
branch approach is normal compiles without asserts and a possible second 
compile with asserts and much more run time checking when issues pop up. 
Removing the asserts speeds up the parser so it is faster on average 
than the v3.8 release one.


Post a reply to this message


Attachments:
Download 'povray-3.8.0-x.povr_7c1adb79.tar.gz' (1855 KB)

From: jr
Subject: Re: An updated povr tarball for Unix/Linux. 7c1adb79
Date: 5 Mar 2023 01:25:00
Message: <web.64043517592b3e9e4301edef6cde94f1@news.povray.org>
hi,

William F Pokorny <ano### [at] anonymousorg> wrote:
> Please see the attached tarball and previous announcements in this fora
> and INSTALL.txt for suggestions on compiling and running via wrapper script.
>
> A reminder the povr fork is not POV-Ray. As time pass it's less likely
> existing POV-Ray scenes will work without modification.

great, cheers.  "todo", in the coming days.


regards, jr.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.