Patches and Extensions for POVRay
Unless stated differently, these patches were written by
me and apply against POVRay-3.6.1.
Non-UNIX-specific patches should apply cleanly against any source
packages. Expect that patches may succeed with some lines offset when
applied in arbitrary order; this is normally harmless.
Those patches with a single version number (without subversion) have
their version incremented by 1 each time a change occurs.
Also note the modification date.
License: These patches may be used freely in combination with
POVRay-3.6.1 (and derivatives like MegaPOV, etc.) as long as credit
information about the author(s) of the patches in question is retained.
(Inclusion into future versions of POVRay is encouraged.)
News
- 2004/10/18: bezier bicubic patch bug fix
-
Added bezier bicubic patch fix to general bugfix patch.
- 2004/08/11: Patch update
-
Added patch to make sure that UNIX povray returns non-zero on failure.
All patches changed to apply against POVRay-3.6.1.
- 2004/07/30: media_attenuation bug fix
-
Added media_attenuation fix to general bugfix patch.
- 2004/07/24: POVRay-3.6 patches
-
New version of the POVRay patches suitable for version 3.6 are made
available.
Patches fixing bugs in POVRay-3.6.1
Wolfgang's combined general bugfix patch (details) | |
This is a combined bugfix patch which fixes the following problems (most
of which were already present at 3.5). Patches were written by me
unless stated differently.
-
Fix parametric object getting completely black due to self-shadowing.
Credit: Massimo Valenti
-
Patch against out-of-bounds array indexing in parametric object code for
too small accuracies. Accurary will now be reduced when the sector limit is
reached.
-
Isosurface accuracy improvement patch (see "manual patch"
below).
-
Isosurface warning patch (use floaing decimal point for accuracy values).
-
Patch against vertex index typos in bezier bicubic patch code.
Credit: Gianluca Arcidiacono
-
Patch against media_attenuation bug (atmospheric effects).
Credit: A. Brinkmann
-
Some minor things.
| Version: 4 (2004-10-18) | Patch diff: ww-bugfix.diff [17kb] |
Wolfgang's combined UNIX bugfix patch | |
This is a combined (bug)fix patch which includes the following things:
-
Make POVRay exit with non-zero codes upon failure. This patch is required
if you want to use RendView.
| Version: 3 (2004-08-11) | Patch diff: ww-unix-bugfix.diff [1kb] |
General extensions and new features
Grid pattern | |
Grid pattern: Has similarities to a continuous checker pigment and
available for planar and cylindrical mapping. Primary used to create
grid textures using a half-transparent color map.
Syntax: grid followed by cylindrical or
planar.
Use frequency to control the number of repetitions of the
cylindrical version.
Below is a sample image and the interesting part of the
associated POV SDL code: (The full code is also available.)
cylinder { // blue cylindrical net
0, 0.17*y, 0.1 open
pigment {
grid_pattern cylindrical frequency 22
color_map {
[0.2 rgb <0.3,0.3,1>]
[0.2 rgbf 1 ] } // <-- transparent
scale <1,0.01,1> // <-- tune mesh size
} }
box { // red planar net
<-0.1,0,-0.1>, <0.1,0.001,0.1>
pigment {
grid_pattern planar
color_map { /* like above */ }
scale <1,1,1>/50 // <-- tune mesh size
} rotate 90*x // <-- as grid plane is X+Z
}
|
|
Full POV SDL code: grid_pattern-demo.pov
|
| Version: 3 (2004-08-11) | Patch diff: patch-grid-pattern.diff [5kb] |
Radial slope pattern | |
POVRay-3.6.1 has a built-in slope pattern which can be used to choose
a color according to the slope, i.e. the value of the scalar product of
the surface normal and a user-specified direction vector.
This patch adds a new pattern called
radial_slope which works similarly, however the direction vector
is the vector from the origin to the point where the pattern is
evaluated. Hence, a sphere has always a radial_slope value of 1.
Syntax: Just like any other pattern without extra parameters.
An image made with the radial slope pattern can be seen
here under the topic "Mars, slope color".
Below is a further sample image and the interesting part of the
associated POV SDL code: (The full code is also available.)
isosurface {
function { f_sphere(x,y,z,1.5)-
f_noise3d(2*x,2*y,2*z)*0.7 }
max_gradient 2.5
contained_by { sphere { 0, 2.3 } }
pigment {
radial_slope
color_map {
[0.6 rgb <1,0,0>] // steep hills
[0.975 rgb <1,1,1>]
[1 rgb <0,0,1>] // sphere-like
} } scale 0.6
}
|
|
Full POV SDL code: radial_slope-demo.pov
|
| Version: 2 (2004-08-11) | Patch diff: patch-radial-slope.diff [5kb] |
Extensions specific to UNIX/Linux version
Progressive Refinement Tracing | |
If you ever whished that POVRay would be so clever that it could paint
the interesting parts of an image first and the not-so-interesting last,
you should have a look at the
progressive refinement patch.
It will trace those parts of the image which have large color variation
first and furthermore allows you to manually select regions to be
traced using the mouse. You get bilinearly interpolated
"previews" instead of blocky mosaic preview and you may abort the
render at any time saving the state as you see it.
The finally rendered image is the same image as with normal POVRay, just
that you see more quickly what it is about.
Very useful for scene design.. Read more...
| Version: 1.0 (2007-04-04) | Patch diff: prt-patch.diff [56kb] |
Experimental JIT Compiler: Really fast POV FPU | |
POVRay's isosurfaces are very versatile objects because they allow to
visualize the surface in space where an arbitrary user-supplied function
in space has some threshold value (usually zero).
Inside POVRay, the user functions are evaluated using a virtual machine
which interpretes "compiled" assembly of the function which is generated
automatically at parsing stage.
This, however, is much slower than if the user function would actually be
compiled for the real CPU/FPU.
This is why I wrote the just-in-time compiler patch
for POVRay which allows to actually compile the user functions on-the-fly
(with no manual user interaction!) using GCC to speed things up.
Read more...
| Version: 0.4.1 (2004-08-11) | Patch diff: jitc-patch.diff [81kb] |
My personal source code patch
This is a diff between the source code of the official UNIX POVRay-3.6.1
sources and the privately modified production version of POVRay
used by me.
Basically, this is all the above patches applied and hence UNIX-specific.
The JITC patch is not included since it is in my experimental
version.
More patches on the net
Links to some interesting patches found on the net.
Papers found on the net
|