6.3. MegaPOV before POV-Ray™ 3.6

6.3.1. MegaPOV history

Here is the history of previous MegaPOV versions, listed for historical reasons and to highlight the community character of this software. 8 September 2004 - MegaPOV 1.1

MegaPOV 1.1 is an update to POV-Ray™ 3.6. Development of POV-Ray™ 3.6 took longer than expected so MegaPOV 1.1 was delayed as well. We regret this but on the other hand MegaPOV 1.1 now also comes with some useful new features:

  1. Fur (see Section 2.5.3, “Fur”)
  2. Type checking (see Section, “Type checking”)
  3. Measurement of dimensions in vectors (see Section, “Dimensions of vectors”)
  4. New spline types:
  5. Sizes of images measurement (see Section, “Sizes of images”)
  6. Reduced memory requirements for each object, depending on the type of pattern being used (see Section 5.4.1, “Reducing memory usage”)
  7. HDR (High Dynamic Range) image type from MLPov (see Section 2.6.6, “HDR (High Dynamic Range) image type”)
  8. HDR (High Dynamic Range) image write support (see Section 2.1.2, “HDR (High Dynamic Range) image output”)
  9. Connection-connection collisions for mechsim patch (see Section, “The collision settings”)
  10. Normal modifier for transforms (see Section, “The normal modifier for transforms”)
  11. String function with numbered output filename (see Section, “Filename with frame number”)
  12. New user_defined camera projection type (see Section 2.3.1, “user_defined camera type”)
  13. New camera_view pigment type (see Section 2.6.8, “New camera_view pigment”)
  14. Angle of incidence pattern from MLPov (see Section 2.6.1, “Angle of incidence”)
  15. Projection pattern from MLPov (see Section 2.6.3, “Projection pattern”)
  16. Custom radiosity sampling directions (see Section, “Custom radiosity sampling directions”)
  17. Randomized radiosity sampling directions (see Section, “Randomized radiosity sampling directions”)
  18. Reintroduced motion_blur from MegaPOV 0.7 with new type feature (see Section 2.5.2, “Motion blur”)
  19. New post processing feature (see Section 2.7.5, “Post processing”)
  20. Fixed bug of MegaPOV 1.0 concerning spline identifiers

Some of the patches from MegaPOV 1.0 are now included in the POV-Ray™ 3.6 update, and some have become obsolete because of changes in POV-Ray™ 3.6. The parts concerning these changes have been removed from this manual, because they are no longer considered as "patches". Here is an overview:

  1. Option End_Row with value 1
  2. UV mapping in torus object;
  3. UV mapping in parametric object;
  4. Fix for using splines in function;
  5. Fix for smooth height_field. 31 December 2002 - MegaPOV 1.0

MegaPOV 1.0 was a fresh start, based on the sources of POV-Ray™ 3.5. This means that not all features of MegaPOV 0.7 were implemented. Another consequence was that for several features the new syntax of POV-Ray™ 3.5 is now used. Here is a list of added features:

  1. Features in MegaPOV 0.7 that didn't make it in POV-Ray™ 3.5, but which are back in MegaPOV 1.0;

  2. PoPOV has joined MegaPOV.

  3. Additional tokens in function syntax (see Section, “Additional tokens in function syntax”)
  4. Text object alignment (horizontal and vertical) (see Section, “Text enhancements”)
  5. Polynomial solver in parser (see Section 2.2.5, “Polynomial solver in parser”)
  6. Message control for max_gradient in isosurface (see Section, “Control of max gradient message”)
  7. Film exposure simulation (see Section 2.7.1, “Film exposure simulation”)
  8. Frame_Step feature (see Section 2.1.1, “Frame_Step”)
  9. Changed behavior of radiosity cache in animation (see Section, “Cache file”)
  10. The Clothray cloth simulation patch (see Section 2.4.3, “Cloth simulation”)
  11. The Sim-POV mechanics simulation patch (see Section 2.7.4, “Mechanics simulation patch”) February 5, 2001 - MegaPOV 0.7

  1. Fixed bug in media method 3 (by Jérôme Berger) (9.2.9)
  2. Fixed bug in isosurface causing a crash when parsing exp without braces (9.2.9)
  3. Fixed bug in isosurface intersections. Spherical containers were not translated correctly (9.2.9)
  4. Fixed bug in isosurface difference, where the differencing object enclosed the original completely: left a ghost shadow (9.2.9)
  5. Fixed the stars post_process filter; it now adds to the background instead of replacing it (12.16)
  6. Fixed bug with ellipsoid, removed artifacts that appeared in some cases (by Jérôme Grimbert) (9.2.9)
  7. Fixed a bug, reported by Nicolas Calimet, in the Transform Patch (9.2.9)
  8. Fixed bug with uv_mapping when uv_vectors were not specified (9.2.9)
  9. Input files for idat_3D can be in all library paths. Previously they had to be located in the same folder as the scene file. All paths are searched now just like it is done for any include file
  10. Fixed memory problems when using functions in animations: They are now destroyed after every frame (9.2.9)
  11. Fixed bug that caused a crash when PostProcess was running out of memory: error given now
  12. Fixed bug in copy_splines
  13. Fixed some bugs in spline, added SPLINE_IDENT(T, TYPE) syntax
  14. Fixed some glow bugs("size" should work properly now).
  15. Added the sample_spacing patch in media (by Jérôme Berger) (4.2)
  16. Added a new type of emitting media to be used on clear backgrounds (by Jérôme Berger) (4.3)
  17. Added new post_process filters: "curves" (12.4), "limit_brightness" (12.9) and "raw_color" (12.14)
  18. Added a new directive #set to change variables (by Chris Huff) (9.22)
  19. Added ability to apply transforms to warps.
  20. Added "spline_wave" waveform for patterns. October 15, 2000 - MegaPOV 0.6a

  1. Demo scene images are available on-line, so you can see what MegaPOV has to offer. They can be viewed at Smellenbergh's site. Click on the "Demos" link in the navigation bar on the left. Direct link is here.
  2. Fixed a bug in the proximity patch. If no sample_weight vector was given it was filled with random values, giving different results for each rendering.
  3. In isosurface statistics, max gradient is reported again
  4. Fixed more memory leaks in isosurface
  5. julia sqr and power (^) now allowed without version unofficial xx specifier: it is a legal keyword in POV-Ray™ 3.1
  6. In the manual updated section 8.9 displace warp
  7. In the manual corrected 9.20: the formula used is: Red*0.3+Green*0.59+Blue*0.11
  8. In DoPostProcess() in postproc.c give an error if for some reason the input file could not be opened. Previously MegaPOV would crash.
  9. density file is now positioned from 0 to 1 again. We changed that in 0.6 but obviously this was incorrect. It crashed MP often too. Files written by the df3 patch are now flipped so that the result is correct.
  10. df3 in i_dat3d now works again. This was listed as fixed in MP 0.6 but only now in 0.6a this is really fixed!
  11. Updated the displacement warp patch to MP+0.3.2. This adds the type keyword.
  12. Fixed bug in transform when used like this:
  13. transform { DeclaredMyTrans}
  14. Fixed bug with photons+dispersion if no color_map specified for light_source October 1, 2000 - MegaPOV 0.6

  1. Spline identifiers can now be passed as macro parameters.
  2. Added Mike Hough's updated uv_mapping (takes now all four corners) for bicubic_patches (8.6.4).
  3. Added keep_data_file for post processing to allow continue (12).
  4. Added filter all and transmit all for 24 bit images (9.2.11).
  5. Added possibility to use phase and frequency keywords in an image_map (8.10).
  6. Added Chris Huff's PigmentWarpPatch (displacement warp) (8.9).
  7. Added Chris Huff's noise_pigment (8.3.7).
  8. Added Chris Huff's extensions to the blob pattern (8.3.1).
  9. Added Chris Huff's extensions to the proximity pattern (sample_weighting and method 3) (8.3.11).
  10. Added Chris Huff's new Math Post_process patches (12.8).
  11. Added Chris Huff's atan_wave patch (8.11).
  12. Added Chris Huff's vwarp() patch (9.18).
  13. Added Chris Huff's glow patch (9.21).
  14. Added documentation for Chris Huff's solid pattern in the manual (8.3.15).
  15. Added new keyword clock_on (1.0 is on, 0.0 is not on) (9.3).
  16. Added Phil Carig's (Pod) df3 output patch (9.20).
  17. Created a new chapter in the docs to list all authors with there e-mail address and URLs if available (14).
  18. Fixed a bug in userio.c in Destroy_Text_Streams() to close text stream files
  19. Fixed bug in image map when using 24 bit images.
  20. Fixed bug in Compute_Disc_BBox().
  21. Allowed nested macro's again.
  22. Fixed bug in interior_texture with CSG.
  23. Fixed bug with AxisRotFixPatch.
  24. Fixed bug in idat 3d (isosurface).
  25. Fixed bug in eval_pigment when declared. Crashed when no color map was specified.
  26. Fixed bug in persistent variables.
  27. Fixed cylinder cameras again.
  28. Fixed scaling problem in blob.
  29. Fixed a few things in blob pattern/pigment (threshold, strength, syntax, pigment, warnings).
  30. Fixed occasional artifacts in superquadratic ellipsoid.
  31. Fixed several memory leaks.
  32. Fixed bug in corner-interpolated meshes (9.2.12) June 1, 2000 - MegaPOV 0.5a

  1. removed GIF support (potential legal issues regarding the Unisys patent)
  2. fixed docs for pigment_pattern
  3. fixed disc problems (removed fastdiscpatch)
  4. fixed long filename support in the Windows version
  5. fixed bug with photons on average texture
  6. fixed bug with media method 3 when samples = 1
  7. fixed bug with parsing backwards compatibility and unofficial version number
  8. added fastspherepatch
  9. added fastpolypatch
  10. fixed "bug" with mesh (MegaPOV did not ignore degenerate triangles if uv mapping was used in the triangle)
  11. fixed bug with ttf
  12. fixed bug with csqr May 15, 2000 - MegaPOV 0.5

24 bug fixes, 5 new features, 6 enhancements, 5 speed optimizations, 1 removal
  1. added new filters by Chris Huff for post processing: add, clip_colors, color_matrix, convolution_matrix, exponent, find_edges, invert, multiply, normal, patterned_blur, posterize, stars.
  2. added Chris Huff's inverse_transform patch
  3. added Chris Huff's parse-transform patch
  4. added pigment pattern (no more need for reset_children)
  5. added cross-section texturing (cutaway_texture)
  6. enhanced focal_blur post process to allow anti-aliasing
  7. enhanced motion blur to include support for lights
  8. enhanced error for post_process if no output file is used
  9. enhanced autostop
  10. enhanced pass_through
  11. enhanced post-processing to write to a separate file
  12. optimized macro speed
  13. optimized constant scattering media for speed
  14. optimized for speed with memory allocation caches
  15. optimized speed for planes, discs
  16. optimized speed for area_light
  17. removed #create (related to persistent scene objects - use 'label' instead)
  18. fixed height-field lockup problem
  19. fixed bug with photons on a texture_map
  20. fixed media method 3 brightness bug
  21. fixed a bug in orient area_lights
  22. fixed cylinder cameras (up and right vectors work again)
  23. fixed some photon gathering issues
  24. fixed continued render with post_process
  25. fixed smooth height field double illumination 'bug'
  26. fixed pict+post_process (Macintosh) bug
  27. fixed media transformation bug
  28. fixed memory leak in eval_pat
  29. fixed radiosity crash
  30. fixed macro bug
  31. fixed PNG+post_process bug
  32. fixed problem using #fread with a file containing garbage
  33. fixed Noise (this affects wrinkles, bozo, bumps, dents, turbulence, and noise3d)
  34. fixed some speed problems
  35. fixed #version precision errors problems
  36. fixed macro speed problem (for unused macros)
  37. fixed %s error line bug
  38. fixed the cabs2,creal, and cimg bugs
  39. fixed DOS macro problems (read files as binary)
  40. fixed potential crash problem
  41. fixed bug with global ini options for image width and height January 30, 2000 - MegaPOV 0.4

many changes, new features, and bug fixes
  1. important: MegaPOV features DISABLED by default (language version set to 3.1) Use #version unofficial megapov 0.4; in each POV and INC file to enable the unofficial features.
  2. important: major changes to photon mapping syntax To convert scenes from the old photon syntax, see the Photon Conversion Guide.
  3. important: changed isosurface bounded_by and clipped_by to contained_by
  4. added post-processing (currently includes depth, focal_blur, and soft_glow effects)
  5. discontinued smooth_color_triangle in mesh, but added vertex-texture interpolation to replace it
  6. torrance-sparrow-blinn-cook (blinn) "microfacet" highlighting
  7. Fixed the normal bug-fix again (Do I sense a pattern here?)
  8. fixed default{} bug
  9. added Burton Radons' fast macro patch: macros parse twice as fast or faster (over five times as fast in one of my tests)
  10. faster rendering of mesh and mesh2 (now same speed as the official version, this is a bug fix)
  11. added several patches from Chris Huff: noise3, cube, sqr, ^, blob pattern, solid pattern, eval_pattern, eval_pigment, proximity pattern
  12. chrono (stopwatch for finding parse times) and date/time string
  13. added several patches by ♯: initialize i_dat3d with array, rigid multifractal isosurface function library, other isosurface changes, hyperbolic and complex number functions
  14. added save_file and load_file to radiosity
  15. updated statistics output for photons, motion_blur, and post-processing
  16. added pretrace_start and pretrace_end for configuring radiosity preview
  17. added wavelength-dependence to fresnel reflectivity (uses dispersion properties, for producing realistic metals)
  18. fixed bug with metallic
  19. disabled reflection_blur and dispersion in radiosity pre-trace step December 21, 1999 - MegaPOV 0.3

updates and bug-fixes
  1. Fixed the buggy normal bug-fix.
  2. Backwards compatibility for the normal bug-fix (through #version 3.1).
  3. Added bump_scale_off option for normals
  4. Added conserve_energy for reflection+transmit (or filter)
  5. integrated i_dat_3d libraries (thanks to Smellenbergh)
  6. fixed bug with ini_option and width/height
  7. fixed FRAND range problem - crashed Linux
  8. fixed ignore_photons and media problems
  9. fixed light_groups and media problems
  10. added Chris Huff's object pattern patch (thanks to Smellenbergh) December 12, 1999 - MegaPOV 0.2

updates and bug-fixes
  1. Normal Bug-fix (this was in 0.1, and was documented, but I forgot to announce it)
  2. fixed isosurface all_intersections bug
  3. removed 'system' patch (was not announced before)
  4. updated object pattern patch
  5. fixed vector-to-color promotion bug
  6. updated photons - fixed interaction with no_shadow, no_image, no_reflection, and light groups
  7. fixed memory leak in smooth_color_triangle
  8. fixed bugs with isosurfaces (thanks to Smellenbergh for these fixes)
  9. fixed spline dot-notation bug
  10. fixed pattern-height-field bug
  11. fixed bug with normals and radiosity
  12. updated demos (thanks to Smellenbergh for these) December 9, 1999 - MegaPOV

  1. UVPov is no more. It is now called MegaPOV. UVPov+SuperPatch+MultiPatch=MegaPOV
  2. Integrated the SuperPatch
  3. Integrated the MultiPatch
  4. fixed focal_blur gamma correction problem
  5. crackle speedup (used lots of integer math)
  6. fixed color/vector conversion bug
  7. fixed surface normal bugs, added 'accuracy' keyword
  8. added persistent variables, persistent scene objects, and object labels
  9. added motion blur
  10. by default, radiosity will not use perturbed surface normals. Add 'normals on' to the radiosity{} block in global_settings to enable this feature. This feature also now is now significantly faster and better than before.
  11. fixed a bug related to slope_map that nobody ever reported and I never noticed (but it was really there)
  12. fixed a bug with jitter and photons November 22, 1999 - alpha 6 update (6.2)

bug fixes, etc
  1. incorporated fractal patch - completely untested
  2. radiosity uses perturbed surface normal (bumps, wrinkles, etc)
  3. added realistic (exponential) attenuation (use a fade_power>=1000 in interior)
  4. added ability to put both smooth and flat triangles in the same mesh2 object
  5. fixed problem with clear objects & radiosity
  6. fixed slope_map problems
  7. fixed bug with media type 3 brightness problem
  8. fixed bug with layered texture backwards compatibility
  9. fixed filter+diffuse brightness bug November 5, 1999 - alpha 6 update (6.1)

bug fixes & volumetric photons
  1. fixed jitter variable default initialization bug
  2. fixed photons on a surface with a normal bug
  3. fixed reflection brightness bug
  4. fixed antialias+radiosity bug
  5. incorporated smooth triangle transformed normals bug-fix
  6. fixed method 3 attenuation bug
  7. fixed method 3 brightness bug
  8. fixed number-of-samples bug in method 3 (took 2x too many samples)
  9. limited number of keywords available to "ini_option"
  10. changed autostop to be a percentage of the object's bounding sphere
  11. Added volumetric photons
  12. Demo scenes updated (now they include volumetric photons). November 1, 1999 - alpha 6 update (6.05)

  1. Fixed one of the media/photons attenuation bugs. Just a binary release. Source will be released later with more features and bug fixes.
  2. Demo scenes available. October 26, 1999 - alpha 6 release (6.0)

Added POV-Ray™ 3.1g, minipatch, radiosity, media, bug-fixes
  1. Long time between updates, huh? Well, I've got a lot of goodies here for you.
  2. Incorporated POV-Ray™ 3.1g (including bug-fixes)
  3. Photons get attenuated by absorbing/scattering media. (No photons are deposited in media yet.)
  4. Fixed a refract bug related to dispersion. Rendering some glass scenes is much faster now.
  5. Big changes to radiosity - see the radiosity section - there may be more changes, so don't get too hooked on these. This is still experimental (comments are welcome).
  6. Added sample method 2 and method 3 to media - great results.
  7. Incorporated the minipatch, including spherical camera and media sample method 2.
  8. Incorporated colored attenuation patch. July 10, 1999 - alpha 5 update (5.4)

  1. I'm satisfied with the "#declare" changes now
  2. Use "#version 3.1;" to use old-style layered textures (where filter acts like transmit)
  3. Use "#version 3.14159;" (yes, PI) to use filters in textures again in the same scene.
  4. Fixed problem with automatic range_divider calculation
  5. Added a better error message for zero vertices in mesh2
  6. fix bug with spotlight June 16, 1999 - alpha 5 update (5.3 again)

  1. OK. This time I really did fix the parser. (I think.)
  2. I also fixed a max_trace_level bug. June 12, 1999 - alpha 5 update (5.3)

  1. Fixed some problems problems with "#declare" changes.
  2. note: To make the editors work, you should put uvpov.exe in the \bin directory of the POV-Ray home directory. June 9, 1999 - alpha 5 update (5.2)

POV-Ray™ 3.1e editor now works
  1. POV-Ray™ 3.1e editor now works (at least as far as I've tested it). :-)
  2. POV-Ray™ 3.1a editor still works, too.
  3. Automatic determination of range_divider (if you don't know what I'm talking about, then ignore this).
  4. New "save_file" and "load_file" commands in global_settings{photons{ } } can save and load photon map data.
  5. Shortcuts ($ and %) for #declare and #local (e.g. $a=100; instead of #declare a=100;)
  6. Some of the various changes in this version have not been well tested (specifically the changes to #declare and #local), but if there are major problems I will fix them as quickly as possible. June 2, 1999 - alpha 5 update (5.1)

area light changes
  1. Photon mapping treats area lights like point sources by default, use "photons{area_light}" in light_source to force photon mapping to use area light settings.
  2. Enabling area light settings for a light's photons should not cause that light to shoot more photons.
  3. Enabling area light settings for a light's photons might add a regular pattern of spots in the caustic. May 23, 1999 - alpha 5 release

photon mapping fixes
  1. More documentation and a FAQ.
  2. Memory optimization: Uses less than half of the memory that it used to (46%).
  3. Syntax changes: "density" switched to "separation", other changes (see documentation).
  4. Speed optimization: Probably not noticeable
  5. New adaptive search: New thresholds employed. Read the documentation for more information.
  6. added max_trace_level for photons
  7. added adc_bailout for photons
  8. ability to turn union splitting on/off on a per-object basis (use split_union yes/no in the union)
  9. no more crashes with gather greater than 300
  10. shouldn't crash for animation anymore
  11. area lights work as expected
  12. spot lights work as expected
  13. cylinder lights DO NOT work as expected - working on that
  14. POV-Ray™ 3.1a high-speed lathe code is incorporated (other POV-Ray™ 3.1e stuff is not in here yet) March 9, 1999 - alpha 4 release

photon mapping
  1. Going backwards in versions: used to be beta, now it's alpha. Actually, it's probably permanently stuck on alpha now. ;-) But I did increase the version number to 4.
  2. Photon Mapping! Render real caustics! And yes, it's still called UVPov, but it's got a new splash screen!
  3. Many (all?) of my bug fixes are now part of POV-Ray™ 3.1e (my custom compile does not contain all of the fixes found in POV-Ray™ 3.1e, however)
  4. The POV-Team is currently working to add uv mapping to POV-Ray (version 3.5)! It will not be exactly the same as what you see here, but Chris has been talking to me about his changes to the implementation, and it's only going to get better. :-)
  5. New conversion program: Poser OBJ to POV converter. November 24, 1998

  1. Fixed a bug so memory is freed correctly and POV shouldn't crash anymore.
  2. I call this beta "3a" but I did not rename anything in the ZIP files... just a new executable and a new copy of mesh.c in the sources. November 22, 1998

  1. I'm working on a new feature, parallel light rays for cylinder lights.
  2. Change in syntax of "uv_mapping". The old rule was that you needed to specify "uv_mapping" as the first modifier. Now the rule is that you can only specify "uv_mapping" if the object does not yet have a texture.
  3. Fixed uv mapping to work with CSG objects.
  4. New website layout. Old News

  1. My patched version of POV is ready for download. Get it here!
  2. Many of these changes are also part of the SuperPatch by Ron Parker, available at Twyst's PatchStation.
  3. The primary reason for most of these changes is to give POV-Ray the same functionality as some high-end software packages (like 3D Studio). Thomas Baier has released a 3DS-to-POV converter that works only with this version of POV-Ray. You can find out more about it at his page. This utility (which is still in beta) does an excellent job of converting 3DS scenes into POV-Ray scenes, with lights, cameras, and textures intact! It also outputs to Moray MDL/UDO formats. Note: This was designed for the POV 3.02 version of my patch, but it should work with the SuperPatch and with my new version.

6.3.2. Authors of patches in MegaPOV below version 1.0

Jérôme Berger

jberger at ifrance com

Eric Brown


Matthew Corey Brown

Jamis Buck

Noel Bundy

Phil Carrig (PoD)

Edward Coffey

Gerald K. Dobiasovsky


Alexander Enzmann


Daniel Fenner


Hans-Detlev Fink


Jérôme Grimbert


Mike Hough

Chris Huff


Nathan Kopp


Jochen Lippert


Lummox JR

Nieminen Juha


Wolfgang Ortmann



Ronald L. Parker



ansgar.philippsen at gmx net


Burton Radons


David Sharp



Daniel Skarda


Yvo & René Smellenbergh


R. Suzuki


John VanSickle

Mark Wagner

Daren Scot Wilson