What's New in POV-Ray 3.1 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. --------------------------------------------------------------------------- The Windows platform has had a significant facelift, plus the addition of a new, much more powerful editor.