MEDIA REPLACES HALO & ATMOSPHERE
Halo and Atmosphere have been totally eliminated with no backwards
compatability of any kind provided.
They have been replaced by a new feature called "media". At the scene
level, media acts as atmospheric media for fog, haze, dust, etc. On
objects, media is not part of texture like halo was. Object media is now
part of a new feature called "interior". Media is not just a rename for
halo. It is a new model with some similar features of halo. BECAUSE POV-
Ray 3.1 DISCONTINUES SOME 3.0 FEATURES YOU MAY WISH TO KEEP 3.0 TO RENDER
OLDER SCENES.
Any pattern type (bozo, wood, dents, etc.) may be used as a density
function for media.
New patterns spherical, cylindrical, planar, and boxed added for pigment,
normal, texture, and density.
New wave types "cubic_wave" and "poly_wave FLOAT" have been added
New object modifier "interior{...}". Interior contains information about
the interior of the object which was formerly contained in the finish and
halo parts of a texture. Interior items are no longer part of the texture.
Instead, they attach directly to the objects. The finish items moved are
ior, caustic, fade_power, and fade_depth. The "refraction" keyword is no
longer necessary. Any ior other than 1.0 turns on refraction. These 5
finish keywords which are now part of interior will still work in finish
but will generate warnings. Some obscure texture_map statements with
varying ior will not work.
Added reflection_exponent FLOAT to finish to give more realistic reflection
of very bright objects.
NEW #MACRO FEATURE
Add fully recursive and parameterized #macro directive.
Define like this...
#macro MyMacro (P1,P2,P3) ... #end
Invoke like this... MyMacro (5,x*5,MyTexture)
Note no '#' sign preceeds invocation. Macros can be invoked almost
anywhere. Parameters must be identifiers or any item that can be declared,
MyMacro(pigment{Green},MyObject) for example.
Added #local IDENTIFIER= statement as alternative to #declare to create
temporary local identifier in macros or include files.
ARRAYS ADDED
Added multi-dimension arrays
#declare MyArray=array[20]
or
#local PrivateArray=array[30]
or
#declare Rows=5; #declare Cols=4;
#declare Table=array[Rows][Cols]
Added optional initializer syntax for arrays.
#declare MyArray=array[2][3]{{1,2,3},{4,5,6}}
Subscripts start at 0. Anything that can be declared may be in an array.
Arrays are initialized as null. You must later fill each element with
values.
Added float functions for arrays. Given #declare MyArray = array[4][5]
then dimensions(MyArray) is 2 and dimension_size(MyArray,2) is 5.
OTHER DIRECTIVES
Added #fopen, #fclose, #read, and #write directives for user text files.
Added #undef identifier directive. Un-declares previously declared
identifier. Works on locals or globals.
Added requirement that any directive which can end in a float or expression
must be terminated by a semi-colon.
Specifically this means any #declare or #local of float, vector or color
or the #version directive.
ADDITIONAL NEW FEATURES
Added Bezier splines to lathe and prism. The spline is made of segments
having four points each. Thus there are always four times the number of
segments in a prism or lathe. A four point Bezier spline uses 3rd order
Bernstein blending functions which are sufficient for smooth curves.
Added float constant "clock_delta" returns time between frames.