home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / p / povray3a / Docs / Change3 next >
Text File  |  1996-07-25  |  95KB  |  2,025 lines

  1. This file is a historical record of changes to POV-Ray 3.0 as we develop it.
  2.  
  3. 3.00a             07/19/96 Andreas Dilger
  4. Fixed bug with new radiosity flags and saving empty radiosity _ot_tree.
  5. Fixed MEM_HEADER when only MEM_TRACE was defined in mem.c.
  6. Fixed mem_header to align on 8 byte boundaries for those machines that need it.
  7. Changed pov_realloc to free the memory when size = 0, and return NULL.
  8. Changed pov_memcpy() to pov_memmove() and made it work properly, and made
  9.      all instances of memmove to a new POV_MEMMOVE macro.
  10. XWINDOWS: Changed colormap handling to dynamically allocate colors.
  11.  
  12. 3.00              07/07/96 Chris Young
  13. Fixed another problem with camera "angle".  Scenes will look different
  14.      from both beta.7f and original beta.
  15. Fixed (partially) radiosity resumed traces so scene.rca isn't deleted
  16.      when there is a controled user abort.
  17. Changed version to 3.00 Note two zeros.  Future patches will be 3.00a, 3.00b
  18.      etc. and future public bugfix releases will be 3.01, 3.02 etc.
  19. Included spearate patch for DISTRIBUTION_MESSAGE for official compiles only.
  20. POVMSS.ZIP contains updated USER_xxx.DOC & CMPL_xxx.DOC files.
  21.  
  22. 3.0.beta.7k       07/03/96 Chris Young
  23. Fixed warning for camera inside object
  24. Added changes to tokenize.c for Windows from Chris Cason
  25.  
  26. 3.0.beta.7j       07/02/96 Chris Young
  27. Fixed polygon normal bug
  28. Added trap for negative sqrt
  29. Added trap for illegal mix of patterned and layered texture
  30. Changed distribution message text
  31. MSDOS: Removed beta expiration date. Added MS-Dos credits.
  32.  
  33. 3.0.beta.7i       06/27/96 Andreas Dilger
  34. Change 3d jitter code to remove redundant calculation via lookup table
  35.  (replaces crc lookup table).
  36. Remove the +Q10 and +Q11 options and replace them with +QR and a warning msg.
  37. Update png_pov.c to use new libpng API.
  38. Change compression setting for PNG to default from maximum since there was
  39.  little benefit and a considerable slowdown at the maximum compression.
  40. Fix bad memory free in TTF.
  41. UNIX: Fix up interrupt handling.
  42.       Remove useless calcs in dithering code.
  43.       Defer X dither-cube setup to reduce startup time and unnecessary calcs.
  44.  
  45. 3.0.beta.7h       06/26/96 Chris Young
  46. Fixed qsort macro in super.c
  47. Fixed error line number reporting in #while loop (again)
  48. MSDOS: Added changes for DJGPP v-2.0 including new pmode.a
  49.        and ztimer.a.  Requires old ld.exe linker and old go32.exe
  50.        to compile & link.
  51.  
  52. 3.0.beta.7g       06/21/96 Chris Young
  53. Fixed problem with // comments ending in \r but not \n
  54. MSDOS: Fixed 24-bit truecolor and VESA mode selection.
  55.  
  56. 3.0.beta.7f       06/21/96 Dieter Bayer
  57. Fixed bug in camera's angle keyword (the length of the direction vector was 
  58.  not calculated correctly. BEWARE!, old images using angle will look 
  59.  different)
  60. Fixed prism bug when the first height was larger than the second height
  61. Improved perpendicular camera vectors warning message
  62.  
  63. 3.0.beta.7e       06/16/96 Chris Young
  64. Added COOPERATE_0 calls for Mac version
  65. Fixed parsing dots count.
  66. MSDOS: Fixed DJGPP 1.x VGA support.
  67.        Minor change in Diamond 24X truecolor.
  68.  
  69. 3.0.beta.7d       06/13/96 Chris Young
  70. MSDOS ONLY
  71. Major rewrite of video code that is a combination of our old
  72. non-VESA code and new VESA 2.0 code submitted by Kendall.
  73. Both watcom and borland compiles and works for most modes.
  74. However DJGPP is totally messed up.  I plan to trash DJGPP
  75. and start over for DJGPP 2.0 rather than fix it for 1.14.
  76.  
  77. 3.0.beta.7c       06/13/96 Chris Young
  78. Note: Ignore previous 7c patch from Eduard.  Instead
  79.       unzip the enclosed zlib102.zip into source\zlib directory.
  80.       Then apply this patch which makes a minor change in zlib.
  81.  
  82. 3.0.beta.7b       05/27/96 Dieter Bayer
  83. Improved sor error messages
  84. Fixed bug with multiple halos using already declared halos
  85. Fixed bug in Rotate_Plane() (it's sufficient to rotate the normal
  86.  in case there's no transformation; speeds things up)
  87. Fixed bug that occured when a CSG object had no texture
  88.  
  89. 3.0.beta.7a       05/10/96 Chris Young
  90. Fixed image_map crash in POV3DEMO\SURFACE\WARP1.POV
  91.  
  92. 3.0.beta.7        05/02/96 Chris Young
  93. Added QSORT macro to frame.h, bbox.c & bsphere.c
  94. Updated version to beta.7.
  95.  
  96. 3.0.beta.6j       05/02/96 Dieter Bayer
  97. Added several fixes by Chris Young
  98. Changed dda_traversal() errors to debug messages
  99. Fixed blob lighting bug (increased surface threshold to avoid surface acne
  100.  due to surface points lying in shadow thought they actually are not)
  101. Fixed bugs in blob and mesh opacity tests
  102. Fixed bug in plane normal calculation
  103. Fixed problems in Copy_Ray_Containers (all entries were copied instead 
  104.  of copying only the valid entries).
  105. Fixed bug in Parse_Polygon() (we parse 3d points not 2d points, thus
  106.  we have to test 3d points when looking for closed polygons)
  107. Fixed bug in lighting code (distance based attenuation didn't work anymore)
  108. Fixed bug in Copy_Blend_Map() (New->Users must not be increased if it is
  109.  negative because a negative value is used to indicate that the map
  110.  is a default map that lies in the data segment and not on the heap.
  111.  Several successive copies of the map would lead to a positive Users
  112.  value and Destroy_Blend_Map() would try to free memory in the data
  113.  segment. That's not possible of course!)
  114.  
  115. 3.0.beta.6i       04/30/96 Andreas Dilger
  116. Fix problem with TTF accent centering.
  117. Fix problems with PNG flushing and added some more error checking.
  118. Fix zlib corruption thanks to zlib authors.
  119. Add source file location of smallest/largest alloc for MEM_STATS = 2.
  120. Remove test for arcsin as requested by Tim Wegner.
  121. Make X-Windows display code work properly during animations.
  122. Add MEM_STATS to UNIX config.h.
  123.  
  124. 3.0.beta.6h       04/21/96 Dieter Bayer and Chris Young
  125. Changed transformation functions (added trans parameter to pass precalculated
  126.  transform to speed up parsing)
  127. Fixed image map memory leaks (patch by Chris Young)
  128. Fixed bug in MEM.C (as reported by Eduard Schwan)
  129. Fixed bug that occured with polygons starting with co-linear points
  130. Fixed plane shearing bug
  131. Fixed cylindrical blob crack bug
  132. Fixed texture=NULL bug in initialize_ray_container_state() (in RENDER.C)
  133. Fixed lathe bug (too many intersections)
  134. Fixed height field dda_traversal() bug
  135. Fixed halo dust coloring bug (colors were ignored; see updated docs)
  136. Fixed ground fog bug (the density formula was wrong)
  137. Fixed bug in intersect_spotlight() in ATMOSPH.C
  138.  
  139. 3.0.beta.6g       04/15/96 Chris Young
  140. Fixed negative log problem.
  141. Prohibit slope_map when used in a pattern that can't use it.
  142. Fixed MEM.C problem from 6e that broke MEM_TRACE
  143. Includes Andreas' warn changes to make them official
  144. Added FRAME.H macro NEW_LINE_STRING so Write_INI_File
  145.  can output cr/lf vs just lf.
  146. Updated MS-Dos config.h to use MEM_STATS 1 and NEW_LINE_STRING
  147.  
  148. 3.0.beta.6f       04/16/96 Andreas Dilger
  149. Fix turbulence in fog distance attenuation calculation.
  150. Change rand() to use full precision, instead of 16 bits.
  151. Fix declaration of POV_DISPLAY_PLOT_BOX to match actual usage
  152. Fix #ifdef in mem.c for MEM_LOG_FNAME
  153. Allow escaping the comment ';' character in INI file settings
  154. Fix zero scaling check for matrix (again) - check columns instead of rows.
  155. Fix problem with Grayscale + Alpha PNG output
  156. Add missing destructors to close_all() for random, radiosity, fractal, histogram
  157. Fix Locate_file to not add FILENAME_SEPARATOR after DRIVE_SEPARATOR
  158. Force histogram grid size to divide into image size evenly
  159. Make a destructor for histograms
  160. Change hash table size to be a prime number.
  161. Removed #ifdefs from prototypes in truetype.c
  162. Cache some tables in truetype.c to speed parsing
  163. UNIX: Fix up man page
  164. SVGA: Add border and center SVGA display, allow non-power-of-two scaling,
  165.       add DISPLAY_PLOT_BOX function
  166. UNIX: Make interrupt handler only set Stop_Flag, instead of actually quitting
  167. XWIN: Don't force window to be centered, add DISPLAY_PLOT_BOX function, fix
  168.       DirectColor, fix PseudoColor palette selection
  169.  
  170. 3.0.beta.6e       04/10/96 Eduard Schwan
  171. Moved COOPERATE calls to more evenly called places in the bounding box and
  172.  vista draw areas.
  173. Added code to MEM.C and OPTOUT.C to track and display memory usage statistics.
  174.  Turn this on by adding a
  175.     #define MEM_STATS 1
  176.  to config.h.  To get even more stats printed, use
  177.     #define MEM_STATS 2"
  178.  I would suggest we ship with level "1" since that's all people will really
  179.  care about.
  180. Made the Contributing_Authors and Primary_Developers string arrays extern so
  181.  the GUIs can display the names in their own credits boxes if needed.  Filled
  182.  in the MEM.H header with MEM prototypes, removing from povproto.h, to be
  183.  more in line with C style. Added more header and code commenting in MEM.C.
  184. There was a bug in Radiosity for the GUI implementations, where the global
  185.  variables were not being reset each time main() was called.  If you set
  186.  radiosity ON, rendered a scene and prematurely interrupted it, then set
  187.  radiosity OFF & rendered a scene, it would crash at the end of the render
  188.  when trying to clean up the non-NULL ot_root variable, which now points to
  189.  freed memory.  So at the start of main, a new function Init_Rad_Globals()
  190.  is called which resets all globals.
  191. MAJOR NOTE!!! If you put global variables in POV-Ray, DO NOT initialize them
  192.  on the declaration line!  Create an initializer function and call it from
  193.  main().  That way, the GUI implementations will work correctly.  You can
  194.  no longer assume that globals will be set to their initial values every
  195.  time main() is called.
  196.  
  197. 3.0.beta.6d       04/07/96 Dieter Bayer
  198. Added hash table look-ups for Find_Reserved() and Find_Symbol() in tokenize.c
  199. Fixed atmosphere and halo dust color bug (now a color can be specified for
  200.  the atmosphere and halo dust that is used to filter light coming from
  201.  light sources; see docs for more detail)
  202. Fixed height field bugs (fixed holes that sometimes appeared; fixed gap 
  203.  between adjactent height fields; fixed surface acne that sometimes appeared) 
  204.  
  205. 3.0.beta.6c       03/29/96 Dieter Bayer
  206. Added fog to "camera is inside non-hollow object" warning
  207. Added code to automically adjust the right and up vectors if the orthographic
  208.  camera is used (if orthographic is used after all other camera parameters 
  209.  you'll get the same image area as with the perspective camera; see docs)
  210. Fixed severe bug in Determine_Apparent_Colour() (weight and texture lists
  211.  were not saved)
  212. Fixed bug in halo parsing (the color map was adjusted twice for declared halos)
  213. Fixed bug in halo code (appereance is now independent of any transformations 
  214.  applied to the container object)
  215. Fixed bug in bbox recomputing functions (added check for NULL pointer)
  216. Fixed bug in Inside_Prism()
  217. Fixed bug in blob code (individual component textures were not transformed
  218.  properly, i.e. they were not transformed with the object)
  219. Fixed bug in height field code (in dda_traversal())
  220. Fixed bug in random stream allocation
  221. Fixed bug in fog code (fog acne and floating point exceptions)
  222.  
  223. 3.0.beta.6b       03/19/96 Chris Young and Andreas Dilger
  224. Fixed substr bug.  Now will accept last character in string.
  225. Various cosmetic fixes from Andreas
  226. Added Andreas' revised matrix fix
  227. Fixed USHORT parameter problem in truetype.c
  228. Fixed DISTANCE_MAXIMUM parsing so zero is permitted
  229. See UNIXMSS6.ZIP for whole new Unix stuff.  No patches.
  230.  
  231. 3.0.beta.6a       03/17/96 Dieter Bayer, Steve Demlow and Tim Wegener
  232. Added warning when camera is inside any non-hollow object.
  233. Fixed bug in Parse_Prism() (Assign_UV_Vec was not used in one place)
  234. Changed file buffer size display (the file buffer size will be displayed 
  235.  only if the file buffer is actually used)
  236. Fixed the fractal object bounding box problem. 
  237. Fixed matrix bug (a value of 0 was changed to 1)
  238.  
  239. 3.0.beta.6        03/15/96 Chris Young 
  240. Minor cosmetic changes only in ms-dos specific areas
  241.  
  242. 3.0.beta.5l       03/14/96 Dieter Bayer
  243. Fixed bug in sky_sphere transformartion (used inverse transformation)
  244. Fixed bug with image maps and once option (light amplification) and
  245.  overlayed image maps (dark areas)
  246.  
  247. 3.0.beta.5k       03/13/96 Chris Young
  248. Fixed handedness bug that caused Moray problem.
  249. Put MAX_INCLUDE_FILES back from 25 to 10 (my mistake)
  250. Changed MAX_LIBRARIES from 10 to 25 as I intended
  251. MSDOS:Updates for CauseWay fast kbhit().
  252.       Note:Create SOURCE\MSDOS\WATCOM\CAUSEWAY and copy KBHITR.OBJ there.
  253.  
  254. 3.0.beta.5j       03/13/96 Dieter Bayer
  255. Fixed a bug in do_light_ray_atmosphere() (atmospheric attenuation wasn't
  256.  correctly handled when the viewpoint was inside a hollow object)
  257.  
  258. 3.0.beta.5i       03/10/96 Dieter Bayer
  259. Fixed another small halo bug (at last the halo's appearance is independant
  260.  from the sampling rate; I hope)
  261.  
  262. 3.0.beta.5h       03/10/96 Dieter Bayer
  263. Added atmosphere keyword to light source statement. By default light sources
  264.  do interact with the atmosphere. If "atmosphere off" is used with a light
  265.  source it is ignored by the atmosphere.
  266. Fixed minor bug in Do_Halo()
  267.  
  268. 3.0.beta.5g       03/04/96 Chris Young
  269. Changed get_byte() to gif_get_byte()
  270. Changed some parse error reporting procedures.  
  271. Close all input files before Terminate_POV.
  272. Complete all error stream activity before fatal shellout.
  273. MSDOS:Updated expiration date to 01/May/1996
  274. MSDOS:Updated makefiles for CauseWay DOS Extender
  275.       Do "wmake -f msdoswat.mak CW=1" for CauseWay.
  276.  
  277. 3.0.beta.5f       03/04/96 Dieter Bayer
  278. Added missing transformations to fog (affecting the up direction only).
  279. Changed status screen slightly (aa-options are only shown if aa is used etc.).
  280. Fixed bug that occured when -f +c was specified.
  281. Fixed bug with negative atmosphere distance.
  282. Fixed bug with polygons/prisms and multiple holes. Now any number of closed 
  283.  polygons/prisms can be used in a polygon/prism statement. You get a hole 
  284.  where an even number of polygons/prisms overlaps (Note the new syntax 
  285.  described in the docs).
  286. Fixed bug in halo code (halo appearance was dependent from number of samples).
  287. Fixed bug in halo code (light passing through the halo was not attenuated
  288.  by the halo).
  289. Fixed bug in halo code (attenuation of background light was hardly every
  290.  more than 75%)
  291. Fixed bug in render/lighting code (a halo was not rendered correctly when
  292.  the camera was inside the halo container).
  293. Fixed bug in camera vector calculations made when look_at was used.
  294. Fixed bug in camera parsing (POV-Ray now stops with a fatal error if the
  295.  camera location and look_at point are equal).
  296. Fixed bug in RENDER.C (precomputed camera constants were not recalculated
  297.  during different frames).
  298. Fixed bug in blob/lighting code (the textures/weights list was not correctly
  299.  re-allocated).
  300. Fixed bug with multiple, translucent image maps and once option.
  301.  
  302. 3.0.beta.5e       03/04/96 Chris Young & Andreas Dilger
  303. Fixed problem with redeclaring previously declared identifiers
  304. Added new #ifndef directive
  305. Fixed problem with default maps on brick, hexagon & checker
  306. Fixed radiosity and histogram memory leaks
  307. Fixed radiosity preview bug
  308. Fixed line number in #while loop
  309. Fixed #switch, #case, #range bug
  310. Added multi-component glyph support to ttf
  311. MSDOS Fixed mosaic problem when using too high res for video.
  312.  
  313. 3.0.beta.5d       02/27/96 Dieter Bayer
  314. Added random number to parser (keywords "seed" and "rand")
  315. Added transformations to sky_sphere
  316. Fixed bug in Parse_Blob() that caused a filtering object-level texture 
  317.  not to work correctly (an element-level texture did work though)
  318. Fixed bug with scaled spotlights (direction vector has to be normalized 
  319.  in Transform_Light_Source() in POINT.C)
  320. Fixed missing eccentricity keyword bug (used in halos)
  321. Fixed bug with ground fog (a negative offset moved the fog upwards while 
  322.  a positive moved it downwards)
  323. Fixed bug with subsets of cyclic animations (wrong clock values were calculated)
  324. Fixed bug in intersect_lathe() that caused a crash sometimes
  325. Changed ground fog to behave like "real" ground fog, i.e. the fog has a
  326.  constant density for all heights below fog_offset
  327. Changed behaviour of hollow statement in CSG objects
  328.  
  329. 3.0.beta.5c       02/23/96 Chris Young 
  330. Fixed problem with animation output file numbering.
  331. Added %p output path string to shellouts.
  332. NOTE: Macro FILENAME_SEPARATOR is now a char, not a string.
  333.       Check your config.h for this.
  334. Other path related changes.
  335.  
  336. 3.0.beta.5b       02/21/96 Chris Young and Andreas Dilger
  337. Fixed ttf problem with unsupported kerning type 128.
  338. Fixed smoothed mosaic for lines > 1280 
  339. Changed default extension handling per forum discussions.
  340. Fixed problem with default extension on output file.
  341. Changed radiosity TEMP_FILE_BASE to opts.Scene_Name.
  342. Allow "Option#value" in INI-style options as alternative to
  343.  "Option=value".
  344. Added APPEND_FILE_STRING macro.
  345. Permit commas in brick, checker and hexagon between pigments, normals
  346.  and textures.
  347. Changes to error messages when file not found.
  348. Turn equal ended cone into cylinder.
  349. Misc clean-up of error messages.
  350. MSDOS:Changed Watcom compile to link fpu emulation.
  351. UNIX:Misc changes from Andreas.
  352.  
  353. 3.0.beta.5a       02/13/96 Chris Young
  354. Fixed free(ptr) that should be POV_FREE(ptr) in octree.c
  355. Fixed memory leak in declared ttf objects
  356. Misc video changes in MSDOSVID.C; increased MAXMODES for VESA
  357. Changed expiration date from mm/dd/yyyy to dd-mmm-yyyy
  358. Substituted latest PMODE.H & DEBUG.H
  359.  
  360. 3.0.beta.5        02/07/96 Chris Young
  361. Fixed problem with gif decoder on lines longer than 2048 pixels
  362. Fixed bad error reporting when out-of-memory on calloc
  363. Fixed type cast problem in octree.c
  364. Changed beta test banner
  365. Fixed memory leak in declared material_map
  366. Various ttf fixes from Andreas
  367. Fixed watcom bug in zconf.h
  368. Updated all MS-DOS & Windows makefiles for rad_data.c
  369. Added beta expiration to MS-DOS
  370. Fixed +P in MS-DOS animations per DMF's design
  371. Misc Windows fixes for BC 4.52
  372. Added some (tm) signs, updated some copyright notices
  373.  
  374. 3.0.beta.4l       04/Feb/96  Jim McElhiney
  375. Major revision to all radiosity code
  376.   Better set of sample points, stored in new lookup file rad_cache.c
  377.   Multibounce radiosity now supported
  378.   Error bound now adaptive with max possible contribution to surface
  379.   radiosity Initialize/Deinitialize functions installed
  380.   Continue trace after interrupt now supported using <myfile>.rca
  381.     (Radiosity CAche file)
  382.   Free of all radiosity allocated memory after each frame
  383.   No more frame-to-frame cacheing bugs
  384.   Default value auto calculated for Radiosity_Dist_Max:  use 0 if unsure
  385.     (this necessitated saving the user's "look_at" value in camera struct)
  386.   Changed defaults to more general purpose values
  387.   Status line on console now reports new rad samples per line for
  388.     consistency with antialiasing messages
  389.   Preview parameters will not allow you to choose start/end sizes which
  390.     will mess up radiosity.
  391.   Jitter amount in radiosity is smaller, so preview looks better.
  392.   Irradiance gradients implemented, for better quality/speed ratio
  393.   Combination of area lights and radiosity now MUCH faster
  394. Misc:
  395.   VNormalizeEq is now faster, using mult not div
  396.   Light_List_Struct was used (locally) in 2 files for 2 purposes, which
  397.     messes up some debuggers.  One of the structures was renamed to be unique.
  398.   Light_List_Struct now saved and restored in Determine_Apparent_Colour to avoid
  399.     subtle non-reentrancy bug.  (trace a ray, which causes reflections at lower
  400.     level to tag light source contributions as done in light_tested_struct, then
  401.     pop back up to next level, and trace another ray--it used to reuse bad light
  402.     calculations from deeper ray at upper level if more light testing done)
  403.   Quick check in pov_shellout to avoid crashes when shellouts structure used
  404.     but not init'd (not sure why, but check is safer).
  405.  
  406.  
  407. 3.0.beta.4k       02/05/95 Dieter Bayer
  408. Updated "Copyright 1995 Persistence of Vision Team" to 1996
  409.  
  410. 3.0.beta.4j       01/29/95 Chris Young
  411. Fixed bug when #version used inside #if #else #end
  412.  
  413. 3.0.beta.4i       01/26/95 Dieter Bayer
  414. Changed keyword "surface_of_revolution" to "sor"
  415. Fixed bug with three or less focal blur samples
  416.  
  417. 3.0.beta.4h       01/25/95 Chris Young and Andreas Dilger
  418. One more ttf bug squashed.
  419. Misc prototypes added, unused variables removed. Minor junk.
  420.  
  421. 3.0.beta.4g       01/24/95 Chris Young and Andreas Dilger
  422. Replaced default READ_ENV_VAR and PROCESS_POVRAY_INI with warnings to
  423.  insure that each platform implements them.
  424. Updated libpng make files.
  425. Added "Include_Ini=file.ini" to ini parser for file names with blanks.
  426. Fixed TTF code to handle glyph spacing and spaces properly.
  427. TTF now uses the ISO 8859-1 (Latin-1) character set, but has support
  428.   for other character sets once we make the parser handle it.
  429. Still can't handle multiple component glyphs (most accented characters).
  430. Increased the length of a string constant to be up to 127 characters long.
  431.  
  432. 3.0.beta.4f       01/18/95 Andreas Dilger and Tim Wegner
  433. Added function calls to support libpng 0.87 error messages.
  434. Replace Libpng with version 0.87. Make sure Libpng gets copied
  435. to the correct places.
  436.  
  437. 3.0.beta.4e       01/17/96 Steve Demlow
  438. Cleaned up most non-K&R compatable code (except stdarg stuff in userio.c) and
  439.         compiler warnings
  440. Fixed TTF to work when sizeof(short) != 16 bits and sizeof(long) != 32 bits
  441. Fixed minor logic problems in TTF code (with help from Andreas Dilger)
  442. Changed TTF to do file error checking (thanks to Andreas Dilger)
  443.  
  444. 3.0.beta.4d       01/13/96 Dieter Bayer
  445. Fixed bug in total time/frame calculations
  446. Fixed bug in atmosphere calculation (intersect_spotlight())
  447.  
  448. 3.0.beta.4c       01/13/96 Chris Young
  449. Fixed problem with animation output file numbering with subsets.
  450. Fixed problem so string identifiers can be redeclared.
  451. Fixed problem with very long string concats.
  452. Moved "ambient_light COLOR" to global_settings{...} statement.
  453. Changed global_settings { irid_wavelength { COLOR } } to...
  454.         global_settings { irid_wavelength   COLOR   } 
  455. Created Print_Authors() routine from Usage()
  456. MS-DOS: Made banner stream scrollable; added Print_Authors() to sign on.
  457.         Disabled VESA debug.
  458.  
  459. 3.0.beta.4b       01/01/96 Chris Young
  460. Fixed problem with transforming tiles texture identifiers.
  461. Changes from Xander to fix one ttf bug.  Try those fonts that crashed.
  462. Changes from Andreas Dilger
  463.  Changed order of gamma_correct() and Clip_Colour() calls to avoid doing 
  464.   an exponentiation with a negative base (ie pixel value).
  465.  Added interrupt handler for UNIX systems to allow "safe" interruption of 
  466.   a trace with CTRL-C.
  467.  Modified PNG file output to avoid flushing when an output buffer is used.
  468.  Cosmetic changes.
  469.  
  470. 3.0.beta.4a       12/20/95 Dieter Bayer
  471. Changed halo stuff to use transmit instead of filter to store the differential
  472.   translucency instead of the differential opacity (change rgbf into rgbt
  473.   in all your halo scenes and replace the transmittance values by 1-values)
  474. Fixed bug that occured when resuming animations (all but the first image
  475.   were traced again)
  476. Fixed bug with multiple overlapping dust halos (light contribution was tested
  477.   for light rays too and not only for viewing rays)
  478. Fixed sampling bug when -a and +am2 was used (now -a always casts one 
  479.   non-jittered sample per pixel regardless of the sampling method)
  480.  
  481. 3.0.beta.4        12/08/95 Chris Young
  482. Removed build-in float constant "platform"
  483. Removed "#status" language directive
  484.  
  485. 3.0.beta.3l       12/05/95 Dieter Bayer
  486. Changed PNG_POV.C to compile under GCC 2.7.1 with bounds-checking extension
  487. Changed quilt_cubic() to return values between 0 and 1 (and not 0 and sqrt(3/4))
  488.  
  489. 3.0.beta.3k       12/04/95 Tim Wegner
  490. Modified julia_fractal slice field syntax. It is now:
  491.   julia_fractal {
  492.      ... other fields 
  493.      slice <NORMAL4D>,DISTANCE
  494.   }
  495.  where the 3-D slice "plane" is perpendicular to NORMAL4D and is DISTANCE
  496.  units from the origin. NORMAL4D is internally normalized so that DISTANCE
  497.  is correct. The following are illegal:
  498.    slice <0,0,0,0>,d (vector has length zero)
  499.    slice <x,y,z,0>,d (t coordinate of vector is zero)
  500.  The default value makes the slice "plane" the usual x,y,z space:
  501.    slice <0,0,0,1>,0
  502.  The slice plane is intersected the 4-D julia_fractal object and projected 
  503.  to 3-D space by dropping the fourth component of all points.
  504. Also added two small fixes for Chris in texture.c and pattern.c.
  505.  
  506. 3.0.beta.3j       11/23/95 Andreas Dilger
  507. Added flags to allow image file I/O routines to know how image is used.
  508. Changed PNG code to store 16-bit grayscales as true grayscales rather
  509.   than heightfields, when not used as a heightfield.
  510. Changed PNG code to only do input gamma conversion for image maps, and
  511.   to make the conversion to the assumed_gamma value of the scene.
  512. Changed PNG code to always write a 1.0 gamma chunk for histograms and
  513.   grayscale heightfields instead of 1.0/display_gamma.
  514.  
  515. 3.0.beta.3i       11/23/95 Dieter Bayer
  516. Fixed bug with superellipsoids used in CSG (this bug probably occurs in 03g
  517.  and 03h only)
  518.  
  519. 3.0.beta.3h       11/22/95 Chris Young
  520. Fixed problem in express.c with color vectors
  521. Added image_map{... transmit REG,VALUE} and transmit all VALUE.
  522. MSDOS: Started to implement VESA 2.0 but found other bug and fixed it.
  523.  
  524. 3.0.beta.3g       11/22/95 Dieter Bayer
  525. Fixed bug in ATMOSPH.C that occured when no light sources were used
  526. Fixed bug with transparent objects blocking background
  527. Fixed bug with transparent image maps (in TEXTURE.C) as mentioned by Chris Y.
  528. Fixed bug in superellipsoid intersection test (TRUE was returned in some
  529.   cases by All_Superellipsoid_Intersections() even though there was no
  530.   intersection)
  531.  
  532. 3.0.beta.3f       11/18/95 Chris Young
  533. Minor fractal changes by Tim Wegner
  534. Changed COEFF_LIMIT to 1e-16 fixing Watcom prism bug
  535. Fixed another #while bug
  536. MSDOS:Changed box params from char to int
  537.       Fixed DJGCC use of / in argv[0]
  538.       Added warning if POVINI points to non-existent fil
  539.       Fixed bug in Select_VESA_Mode.  
  540.       Added many Debug messages in VESA, will remove later.
  541.  
  542. 3.0.beta.3e       11/14/95 Chris Young
  543. Eliminate READ_ENV_VAR_BEFORE and READ_ENV_VAR_AFTER
  544. Added READ_ENV_VAR which should read a POVINI which points to the user
  545.  specified global INI file.
  546. Added PROCESS_POVRAY_INI function.  If there was no POVINI specified then
  547.  this routine should read povray.ini from the executible directory.  If
  548.  there was a POVINI then this step is skipped.
  549. Removed all other automatic processing of povray.def and povray.ini even
  550.  in the current directory.
  551. Converted Split_Time to SPLIT_TIME macro and added POV_Std_Split_Time
  552. Added pre_init_povray to povray.c, see comments on routine.
  553. Removed disabled field rendering for non-animations.
  554. MSDOS: Implemented MSDOS_Process_Povray_Ini and MSDOS_Process_Env
  555. PVENGINE: Partially pre_init_povray
  556.  
  557. 3.0.beta.3d       11/11/95 Dieter Bayer
  558. Fixed missing initialization for Jitter_X and Jitter_Y in 
  559.   trace_ray_with_offset() (RENDER.C) if no anti-aliasing is used
  560. Fixed bug in do_atmospheric_scattering() that led to a lot of unnecessary
  561.   neglectable samples 
  562. Fixed bugs in intersect_spotlight() and intersect_cylinderlight() in
  563.   ATMOSPH.C that caused lots of samples due to wrong light intervals
  564. Fixed bug in Trace() and Trace_Primary_Ray() that caused atmosphere
  565.   inside hollow objects to not work properly
  566. Fixed memory problems with high +r values and adaptive sampling
  567.  
  568. 3.0.beta.3c       11/09/95 Chris Cason
  569.   Modified userio.c to make vsbuffer global, to allow PVEngine to allocate
  570.   it and to thus call Usage () without starting up the renderer.
  571.  
  572.   Merged below patches from Andreas Dilger and Eduard Schwan.
  573.  
  574.   Eduard Schwan
  575.  
  576.     Fixes to truetype.c to make it Mac-friendly, by using READ_FILE_STRING
  577.     for the open mode instead of "rb". Changed vbuffer.c such that the function
  578.     POV_Std_Display_Plot_Box () takes int parameters for the colours, instead
  579.     of chars.
  580.  
  581.   Andreas Dilger
  582.  
  583.     Moved histogram size initialization code from initialize_histogram() in
  584.       render.c to fix_up_rendering_window() in povray.c so that the values
  585.       are available when doing the Print_Options() call.
  586.     Changed the default histogram file name to have the correct extension
  587.       if the user doesn't supply the histogram file name.  This is done at the
  588.       options parsing stage so the filename is available for Print_Options().
  589.     Added missing histogram CSV file type to help screen display.
  590.     #defined out code in radiosit.c and pattern.c that was unused.
  591.     + Fixed unix config file header to match current default settings, and tried
  592.       to get better default settings for maximum filename length.
  593.     Added xwindows options to unix makefile, so only one makefile is needed.
  594.     Removed unused variables from xwindows.c.
  595.  
  596. 3.0.beta.3b       11/08/95 by Chris Young
  597.  Added box drawing macro POV_DISPLAY_DRAW_BOX to frame.h and created
  598.  default POV_Std_Display_Draw_Box.  Needed for MSDOS version.
  599.  Renamed Terminate to Terminate_POV and fixed param
  600.  Changed Split_Time params to unsigned in hopes of fixing Amiga problem.
  601.  MSDOS:Added non-dithered box drawing. Changed subset window to green.
  602.  Fixed PNG image map palette size for grayscale images with bit-depth <= 8.
  603.  Changed the method of promoting 9-15 bit OutputQuality images to fit in
  604.   16-bit colors from high-bit-set to zero-fill based on recommendations
  605.   from the PNG 0.90 specification.
  606.  
  607. 3.0.beta.3a       11/06/95 by Dieter Bayer
  608.  Uncommented debug stuff in TRUETYPE.C
  609.  Fixed bug in hfield.c/boxes.c that caused segmentation fault with DJGPP
  610.  Fixed problems with comp_elements() in BSPHERE.C as suggested by Andreas Dilger
  611.  
  612. 3.0.beta.3        10/31/95 by Chris Young
  613. Fixed yet another #case bug.
  614. Fixed memory leaks on multiple color_maps
  615. Fixed problem with "once" on image_maps
  616. Fixed text buffer overflow that made long smooth_triangle error msg crash
  617. Added truetype changes from Steve & Xander
  618. Added ALT_WRITE_INI_FILE macro for below
  619. WIN: Fixed rerun problem with above macro
  620.  
  621. 3.0.beta.2g       10/23/95 by Chris Cason
  622. Numerous changes to support Windows code.
  623.   In set_output_file_handle (), removed test where the output file handle
  624.     was only set if output_to_file was TRUE to fix problem with GPF's in
  625.     continue trace.
  626.   Moved some typedef's, #defines, etc., from OPTIN.C to OPTIN.H.
  627.   Exposed some formerly static functions/variables in OPTIN.C.
  628.   Changed order of inclusion of OPTIN.H/OPTOUT.H relative to POVRAY.H in
  629.     some modules as OPTIN.H and OPTOUT.H depend on a typedef in POVRAY.H.
  630.   Removed most #if PRECISION_TIMER_AVAILALE tests that had been peppered
  631.     throughout the code by a previous patch in line with the team's policy
  632.     of keeping the use of #ifdef and so forth in the source code to a mimimum.
  633.   Re-introduced these defines to one specific area of the source (the
  634.     histogram code section).
  635.   Added new function initialise_histogram() which will set opts.histogram_on
  636.     to FALSE if PRECISION_TIMER_AVAILALE == 0. Calls to histogram code are
  637.     only made if opts.histogram_on is TRUE.
  638.   Re-introduced sanity-check and auto grid sizing code in histogram
  639.     initialisation that had been removed by a previous patch.
  640.   Added some new #DEFINE's to FRAME.H, called from POVRAY.C, to support
  641.     GUI's being able to get control at specific times (such as immediately
  642.     before rendering begins, to allow PVENGINE to write its own rerun
  643.     information.) These are -
  644.  
  645.       POV_PRE_RENDER      Called immediately before rendering begins.
  646.                           Hook any code that needs to access global data
  647.                           prior to rendering and/or write or display run-
  648.                           specific statistics into this.
  649.       POV_PRE_SHUTDOWN    Called just before shutdown (before destruction
  650.                           of any information held in memory.) Hook any code
  651.                           that needs to access this global data after
  652.                           rendering into this.
  653.       POV_POST_SHUTDOWN   Called after destruction of above is complete.
  654.                           Hook any platform-specific destructors into this.
  655.  
  656. 3.0.beta.2f       10/16/95 by Chris Young
  657. Fixed #switch #case bug.
  658.  
  659. 3.0.beta.2e       10/16/95 by Dieter Bayer 
  660. Changed hollow keyword from a finish parameter to an object parameter
  661.   (with changing all corresponding sources bugs with translucent 
  662.    material maps should be gone)
  663. Fixed bug with BLOB1?.POV scenes
  664. Fixed bugs in Read_Png_Image() in PNG_POV.C (png_ptr was used instead
  665.   of r_png_ptr; that caused a segmentation fault with PNG image maps)
  666.   Andreas Dilger or Timothy Wegener PLEASE VERIFY THIS!!!
  667. Fixed gradient and crackle bugs (hopefully; in some cases lots of 
  668.   speckles appeared)
  669. Fixed memory leakage in XWINDOWS.C
  670. Fixed "pause when done"-bug in XWINDOWS.C (the display window is now closed
  671.   for -p and closed after pressing a mouse button in the window for +p)
  672. Fixed bug in PPM.C that caused a segmentation fault when an aborted 
  673.   PPM image was read
  674. Fixed supersample count bug with adaptive supersampling (the number of
  675.   supersamples on the last line were displayed to be always 0)
  676. Fixed bug in halo parsing (as noted by Chris Young)
  677. Fixed bug in halo parsing (now a fatal error occurs if no color map is specified)
  678. Fixed bug in do_atmospheric_scattering (sampling took a very long time
  679.   for non-white light sources because early exit did not work)
  680. Fixed bug in OCTREE.C that occured when RADSTATS was defined (the file
  681.   no longer compiled as reported by Eduard Schwan)
  682.  
  683. 3.0.beta.2d       10/10/95 by Chris Young
  684. Added built-in identifier t=<0,0,0,1> and vector.t capability.
  685. Fixed stuff with vector.u and vector.v.
  686. Lots of internal changes related to t, u & v.
  687. Fixed msdos error buffer problem.
  688. Following changes from Andreas Dilger
  689.  Changes error messages in iff.c, gif.c, and targa.c to be consistent with 
  690.   other formats.
  691.  Added tests for output file write errors (after c.g.r.r)
  692.  Adds histogram timer for unix systems.
  693.  Adds support for PNG images with both grayscale and alpha.
  694.  Changed error messages to be consistent with other formats.
  695.  Adds support for ASCII format PPM and PGM images, as well as
  696.   allowing comments and arbitrary bit depth in input images.
  697.  Added defined out code for PPM output comments ala PNG.
  698.  Fixed histogram support for non-PNG images.  Added output
  699.   of histogram options in banner when histogram is active.
  700.  Modified output of display gamma to be part of display options.
  701.  Fixes resume from a file which has different size settings than those 
  702.   given on the command line.
  703.  
  704. 3.0.beta.2c       10/06/95 by Dieter Bayer 
  705. Applied noise patch by ? solves platform dependent noise problems)
  706. Added missing module headers to OCTREE.C and RADIOSIT.C
  707. Fixed bug in hfield.c (holes appeared due to missing rays)
  708. Fixed memory leak occuring with material maps
  709.  
  710. 3.0.beta.2b       10/05/95 by Andreas Dilger and Tim Wegner 
  711. Added gamma support. 
  712.   New ini option
  713.     Display_Gamma=2.2 (default, can be changed in config.h)
  714.   New scene command: global_settings { assumed_gamma n.nn }
  715.     If not present, no gamma correction done. For platform-independent
  716.     output without gamma correction, set assumed_gamma to display_gamma 
  717.     (e.g. 2.2). For "linear light" (gamma correction for display_gamma) 
  718.     use assumed_gamma 1.00.
  719. Added PNG histogram output. IMPORTANT - changes the +HT flag
  720.   so that +HTN means PNG histogram, and not NO histgram. No histogram
  721.   is now +HTX.
  722. Fixed bug in Close_PPM_File, changed default RENAME_FILE command
  723.  
  724. 3.0.beta.2a       10/04/95 by Dieter Bayer 
  725. Fixed illegal quality value bug for quality values larger 9
  726. Fixed unused radiosity bug for quality values > 9
  727. Fixed memory leaks with text objects
  728. Fixed bug in image reading (line_data->transm wasn't initialized to NULL
  729.   in PNG_POV.C and TARGA.C)
  730.  
  731. 3.0.beta.2        09/24/95 by Dieter Bayer 
  732. Fixed numerical problems with far away blobs
  733. Fixed bug with high +r values (Primary rays were weighted with an ADC
  734.   bailout value other than 1. That's not allowed!)
  735. Fixed bug in ra_gather() in RADIOSIT.C (ray wasn't initialized using
  736.   Initialize_Ray_Containers())
  737. Fixed bug in HCMPLX.C as mentioned by Tim Wegner
  738.  
  739. 3.0.beta.1e       09/21/95 by Eduard Schwan
  740. Minor changes to resynch the Macintosh compile:
  741. PAT3b1e.pat
  742.  optout.h: included frame.h, since I include it elsewhere, it needs the
  743.   definition of PARAMS().  I personally think EVERY header file should
  744.   be able to be compiled by itself, which means it needs to include
  745.   everything necessary for itself.  Then you can just add an include of
  746.   it, and it takes care of its own dependencies.
  747. PATzlb1e.pat
  748.  Zlib: added #ifndef around deflate.h, added include of string.h and a
  749.   define of Byte to something else in zconf.h, undeffed internal_state
  750.   in deflate.h.
  751. PATpng1e.pat
  752.  libpng: added missing prototype for "png_output_flush" in png.h
  753. To be fixed later... I also got these warnings in LIBPNG, which should
  754. probably be fixed (missing prototypes?)
  755.  Warning : function has no prototype
  756.  PNGRTRAN.C line 454   {
  757.  PNGRTRAN.C line 1121   {
  758.  PNGRTRAN.C line 1165   {
  759.  
  760. 3.0.beta.1d       09/19/95 by Chris Young
  761. Added pov_memcpy which needs to be tested by those without memcpy.
  762. MSDOS & WINDOWS: Changes to config.h in RENAME_FILE
  763. **BEWARE** the duplicate PNG.H PNGCONF.H ZLIB.H & ZCONF.H have
  764.  been removed from SOURCE and exist only in SOURCE/ZLIB & SOURCE/LIBPNG.
  765.  Also the COPYTO.BAT & COPYFROM.BAT files have not been updated to
  766.  copy these files.  You must hand copy them.  Later COPYTO/COPYFROM
  767.  will be obsolete so I didn't bother updating them.
  768.  
  769. 3.0.beta.1c       09/18/95 by Tim Wegner
  770. Cleaned up fractal code, removed julia_parameter keyword, and added a whole 
  771. lot more functions. Syntax is now:
  772.  
  773.  julia_fractal {
  774.          VECTOR4D
  775.          [quaternion | hypercomplex]
  776.          [sqr | cube | exp | reciprocal | sin | asin | sinh | asinh |
  777.           cos | acos | cosh | acosh | tan | atan | tanh | atanh | log |
  778.           pwr(FLOAT,FLOAT)]
  779.          max_iteration INT
  780.          precision FLOAT
  781.          slice VECTOR4D
  782.  }
  783.  
  784. The one function that needs explanation is pwr(FLOAT,FLOAT). This is the
  785. function (in C terminology) that raises the complex number z to the complex
  786. power (FLOAT,FLOAT). For example, the case pwr(2,0) gives the same image as 
  787. sqr (though it renders much more slowly.)
  788.  
  789. Most of these functions work only with algebra type hypercomplex. The only
  790. ones that work with quaternion are sqr and cube. I added a trap for this
  791. error.
  792.  
  793. Note that if any of these keywords which are not already supported by the
  794. expression parser become supported in the future, then the 
  795. Parse_Julia_Object() routine would need to be changed to reflect this (an
  796. easy change).
  797.  
  798. 3.0.beta.1b       09/16/95 by Tim Wegner and Andreas Dilger
  799. PMG support now resumes and works for height fields, and should work for
  800. image maps and bump maps. Added Alpha support for PNG output, and made Targa
  801. and PNG handling of Alpha consistent. Added NO_MEMMOVE define to unixconf.h
  802. which uses memcpy instead on systems without memmove, and protects against
  803. copying overlapping memory areas. I've included Andreas's changes to the
  804. UNIX make file for Chris Cason's information (not intended to pre-empt any
  805. decisions about where Libpng, Zlib directories should go.) The source has 
  806. been compiled with unixconf.h on AIX with the IBM xlc compiler, and it
  807. works fine so we don't need a separate rs6conf.h.
  808.  
  809. 3.0.beta.1a       09/10/95 by Eduard Schwan
  810. Fixed incorrect parm passed to png_write_finish_row in PNG_POV.C.
  811. The "#define W 3" conflicted with variables in POLYGON.C if precompiled headers
  812.   were used, so I changed the "W" variable names there, and moved the define
  813.   from FRACTAL.H to FRAME.H, to join its buddies X,Y,Z.
  814. Removed incorrect trailing comma from ini_op enums in OPTIN.C.
  815. Added a couple more cooperates in the bounding/light buffer code, since we
  816. can be looping in there for awhile without letting the GUI breathe.
  817.  
  818. 3.0.beta.0d       09/07/95 by Chris Cason
  819. Returned COOPERATE calls to a few places (probably different from original).
  820. Changed COOPERATE to COOPERATE_0 and COOPERATE_1 in source code and modified
  821.   frame.h such that this would not break code depending on the use of COOPERATE.
  822.   COOPERATE_0 is a high level one that is less likely to be ignored than
  823.   COOPERATE_1, if the GUI's niceness setting is in mean mode. COOPERATE_0 is
  824.   intended to be called less frequently by the renderer.
  825. Added POV_PRE_PIXEL and POV_POST_PIXEL which always get called even if display
  826.   mode is turned off. Both macros take x, y and colour.
  827.  
  828. 3.0.beta.00c      09/05/95 by Tim Wegner
  829. You should delete the files gfract.* (obsolete) and julia.* (renamed). 
  830. The patch file will create two new files quatern.c and quatern.h which
  831. were formerly the julia.* files.
  832.  
  833. Completely reorganized the fractal format. The new syntax for the fractal 
  834. object is as follows, with all parameters optional, and in any order:
  835.  
  836.  julia_fractal {
  837.          julia_parameter VECTOR4D
  838.          quaternion | hypercomplex
  839.          sqr | cube | exp | reciprocal
  840.          max_iteration INT
  841.          precision FLOAT
  842.          slice VECTOR4D
  843.  }
  844.  
  845. sqr was z2 and cube was z3. The old "fractal" is obsolete. The old "julia"
  846. object is what you get with the quaternion keyword present. The slice 
  847. keyword is new. It allows the 4D fractal object to be sliced by a 3D "plane" 
  848. at any angle.
  849.  
  850. There's a new routine called parse_Vector4D() in case anyone needs it for
  851. other purposes.
  852.  
  853. 3.0.beta.00b      09/03/95 by Dieter Bayer
  854. Added PNG support by Tim Wegner and Andreas Dilger
  855. Added Bits_Per_Color/Bits_Per_Colour INI file keyword (used by PNG)
  856. Added Andreas Dilger to the contributing authors list
  857. Added redirection options to the render option output
  858. Added matrix transform to all places where transformations are allowed
  859. Moved hollow keyword into finish statement. NOTE that in order to see
  860.   any halos inside an object you have to make sure that the finish
  861.   is set to hollow
  862. Changed "r" file options to READ_FILE_STRING (that's "rb")
  863. Renamed PNC.C to PNC_POV.C and added PNG_POV.H to avoid conflicts with
  864.   PNG.C and PNG.H that come with the PNG library
  865. Renamed project_* functions in VBUFFER.C in order to avoid problems
  866.   with the Watcom linker
  867. Fixed bug that occured in MSDOSVID.C when the console output of the render
  868.   stream was turned off (a segmentation violation occured due to a NULL
  869.   pointer access in Viewit)
  870. Fixed bug in halo default color map assignment
  871. Fixed some memory bugs in PNG_POV.C
  872. Fixed bug in multi-textured blobs
  873. Updated MSDOS DJGPP make & link files and Unix makefiles
  874.  
  875. 3.0.beta.00a      08/29/95 by Dieter Bayer
  876. Added Zsolt Szalavari to the contributing authors list
  877. Replaced strupr() and strlwr() in express.c by own functions to make it work
  878.   with Unix and other systems that don't have those functions
  879. Removed unused distance parameter from halo
  880. Fixed help screen problems
  881. Updated Unix make files
  882.  
  883. 3.0.beta.0        08/29/95 by Chris Young
  884. Added #ifdef (IDENTIFIER) language directive. See VECT2.POV
  885. Added %w and %h (width, height) substitution for shell strings
  886. Added black_hole warps by Chris Cason
  887. Dropped dump and raw format.  Remove DUMP.C DUMP.H RAW.C RAW.H
  888. Added re-directable macros for new "sys" file type for system specific
  889.  format such as Mac Pict or Windows BMP.  Macros in FRAME.H.
  890.  Support added via "sys" keyword such as "image_map{sys "file.ext"..."
  891.  and via +FS switch.
  892. Added string functions "strupr(STRING)" and "strlwr(STRING)" same as C
  893. Added built-in UV_VECT constants "u" value <1,0> and "v" value <0,1>
  894. Added . period operator for VECT.x VECT.y VECT.z UV_VECT.u UV_VECT.v
  895.   COLOR.red COLOR.green COLOR.blue COLOR.filter COLOR.transmit
  896. Added built-in float constant "platform".  Defined in CONFIG.H 
  897. Added boolean function "file_exists(STRING)" searches current dir and +L
  898. Added integer function "strcmp(STRING1,STRING2)" same as in C strcmp
  899. Changed string function "num_to_string(F,W,P)" to "str(F,W,P)"
  900. Changed float function "atof(STRING)" to "val(STRING)"
  901. Changed variables "Point" to "IPoint" in HCMPLX.C
  902. Fixed spelling on "eccentricity"
  903. Fixed bugs in #if #else
  904. Minor change in default file processing
  905. Misc Error and Warning message changes by Dieter
  906. Updated make files for removal of dump and raw.
  907.  
  908. 3.alpha.0.19      08/27/95 by Dieter Bayer
  909. Added halo stuff by Zsolt Szalavari (did some changes and improvements).
  910.   The syntax is (docs will follow later, sigh):
  911.     texture {
  912.       halo {
  913.         attenuating | emitting | glowing | dust
  914.         constant | linear | cubic | poly
  915.         planar_mapping | spherical_mapping | cylindrical_mapping | box_mapping
  916.         fog_type FLOAT
  917.         max_value FLOAT
  918.         exponent FLOAT
  919.         samples FLOAT
  920.         aa_level FLOAT
  921.         aa_threshold FLOAT
  922.         turbulence VECTOR
  923.         octaves FLOAT
  924.         omega FLOAT
  925.         lambda FLOAT
  926.         colour_map COLOUR_MAP
  927.         frequency FLOAT
  928.         phase FLOAT
  929.         scale VECTOR
  930.         rotate VECTOR
  931.         translate VECTOR
  932.       }
  933.     }
  934. Added matrix transform by Steve Demlow (see sample scenes matrix.pov,
  935.   shear1.pov and shear2.pov)
  936. Added distance based light attenuation for translucent objects. Syntax:
  937.   finish {
  938.     ...
  939.     fade_distance FLOAT
  940.     fade_power FLOAT
  941.     ...
  942.   }
  943.   The light is attenuated in a linear, quadratic, cubic, etc. fashion
  944.   (according to the fade_power value). At distance fade_distance
  945.   the attenuation is 50% (see sample scene atten1.pov).
  946. Added new atmospheric scattering type 5 (Heyney-Greenstein function
  947.   with paramter given by "excentricity" keyword)
  948. Added attenuation of light coming from light sources due to fog and/or
  949.   atmosphere (by default this is not used, i.e. the light is not
  950.   attenuated; the keyword "atmospheric_attenuation" is used with 
  951.   light sources to switch the attenuation on/off) (see sample scene fog2.pov)
  952. Added attenuation due to fog and/or atmosphere inside an object (by default
  953.   this is off, i.e. there's no fog/atmosphere inside any object; this
  954.   can be changed by using the keyword hollow, i.e. hollow FLAG)
  955.   (see sample scene fog2.pov)
  956. Modified and simplified atmosphere supersampling
  957. Removed unnecessary support for bounded fog
  958. Fixed bug in Test_Shadow() (LIGHTING.C)
  959. Fixed bug in trace_pixel() (RENDER.C): uninitialized variables
  960. Fixed bug in Global_Setting_Warn(), PARSE.C
  961. Fixed bug in Post_Tnormal(), NORMAL.C (slopemap.pov)
  962. Fixed memory problem detected by Purify in Destroy_Blob(), BLOB.C
  963. Fixed memory problem detected by Purify in Create_BMap_Entries(), COLOUR.C
  964. Fixed memory problem detected by Purify in Create_Fractal(), FRACTAL.C
  965. Fixed memory problem detected by Purify in Read_Gif_Image(), GIF.C
  966. Fixed memory problem detected by Purify in Get_Dump_File_Handle(), DUMP.C
  967. Fixed memory problem detected by Purify in Get_PPM_File_Handle(), PPM.C
  968. Fixed memory problem detected by Purify in Get_Raw_File_Handle(), RAW.C
  969. Fixed memory problem detected by Purify in Get_Targa_File_Handle(), TARGA.C
  970. Fixed memory problem detected by Purify in Tokenize_Renderer(), RENDER.C
  971. Lots of cosmetic changes (new header layout, added headers)
  972. Updated MS-DOS make & link files
  973. Updated Unix make & link files
  974. Updated Unix xwindows.c file (new file supports true color displays)
  975.  
  976. 3.alpha.0.18t     08/15/95 by Chris Young
  977. Added "brick_size <VECTOR>" and "mortar FLOAT"
  978. Other brick changes.
  979. Added shellout return code processing.
  980. MSDOS:Changes to implement return codes.
  981.  
  982. 3.alpha.0.18s     08/08/95 by Dieter Bayer
  983. Added Pascal Massimino and Timothy Wegner to the credit screen
  984. Split credit screen into primary developer and major contributor part
  985. Removed useless VSqr() macro
  986. Fixed some field rendering problems
  987. Fixed unwanted jittering of inital rays in antialiased images
  988. Fixed unwanted jittering with non-antialiased images
  989. Fixed bounding bug in BLOB.C
  990.  
  991. 3.alpha.0.18r     08/07/95 by Chris Young
  992. Fixed problems with \ in file names.
  993. Moved caustics code to fix texture_map bugs.
  994. Removed Max_Symbols, +QH and radiosity from INI & switches.
  995. Added global_setting {
  996.        irid_wavelength COLOR
  997.        max_trace_level FLOAT    // int internally
  998.        adc_bailout FLOAT
  999.        number_of_waves FLOAT    // int internally
  1000.        max_intersections FLOAT  // int internally
  1001.        radiosity {
  1002.          brightness FLOAT
  1003.          count FLOAT            // int internally
  1004.          distance_maximum FLOAT
  1005.          error_bound FLOAT
  1006.          gray_threshold FLOAT
  1007.          low_error_factor FLOAT
  1008.          minimum_reuse FLOAT
  1009.          nearest_count FLOAT    // int internally
  1010.          recursion_limit FLOAT  // int internally
  1011.        }
  1012.        hf_gray_16 [FLOAT]   // optional boolean
  1013.       }
  1014. Fixed #while(COND) bug
  1015. Some truetype updates from Xander.
  1016. MSDOS:Updated make files.
  1017.  
  1018. 3.alpha.0.18q     08/06/95 by Dieter Bayer
  1019. Added field rendering command line switches (+UF +UO)
  1020. Added anti-aliased focal blur (Standard aa is switched off when focal blur
  1021.   is used. The user is warned about this.)
  1022. Added early exit test for focal blur based on confidence test
  1023.   New camera keywords: 
  1024.     confidence - Determines how sure the confidence test is, i.e. how
  1025.                  likely the pixel color is "close" to the real value.
  1026.                  The default value is 0.9.
  1027.     variance   - Maximum allowed variance. If the variance of the samples
  1028.                  in a pixel is greater than this value the maximum number
  1029.                  of samples will be used (i.e. the blur_samples value).
  1030.                  This parameter should be of the same magnitude as the
  1031.                  color resolution (on an 8bit per color display the 
  1032.                  color resolution is 1/2^8). The default value is 1/128.
  1033. Added adaptive supersampling method (ini file: Sampling_Method):
  1034.   +AM1 : non-adaptive supersampling
  1035.   +AM2 : adaptive supersampling
  1036. Fixed some bugs I introduced in 18p due to patch problems
  1037. Fixed some field rendering bugs:
  1038.   odd/even line tracing switches from frame to frame now
  1039.   unnecessary supersampling of pixels above the current line is avoided
  1040.  
  1041. 3.alpha.0.18p     08/03/95 by Dieter Bayer
  1042. Fixed focal blur bug I introduced with patch 18l
  1043. Fixed resampling bug of center sub-pixel during supersampling
  1044. Fixed bugs in matches() (OPTIN.C)
  1045. Changed some calls and other (unnecessary) stuff in RENDER.C
  1046.  
  1047. 3.alpha.0.18o     08/03/95 by Jeff Bowermaster
  1048. Implemented Field Rendering for NTSC/PAL Animation 
  1049. Keywords "Field_Render=bool" and "Odd_Field" substituted for Interlace..
  1050.  
  1051. 3.alpha.0.18n     07/31/95 by Chris Young
  1052. Fixed big problem with Keyword=bool
  1053. Other minor changes
  1054.  
  1055. 3.alpha.0.18m     07/28/95 by Chris Young
  1056. New string manipulation functions...
  1057.   num_to_string(VALUE,LENGTH,PRECISION) creates string from float value
  1058.   chr(VALUE) creates 1 character string, e.g. chr(169) makes a copyright
  1059.   concat(STRING,STRING) concats two strings
  1060.   substr(STRING,START,LENGTH) e.g. substr("ABCDE",2,3) returns "BCD"
  1061. New float valued functions...
  1062.   atof(STRING) returns float value represented by string atof("1.2")=1.2
  1063.   asc(STRING) returns ASCII value of first char of string, asc("A") is 65.0
  1064.   strlen(STRING) length (in chars) of string (see STRINGS.POV)
  1065. New language directives print messages (see MESSAGE.POV)
  1066.   #warning STRING  #debug STRING  #error STRING  #render STRING
  1067.   #status STRING  #statistics STRING
  1068.    During parsing, sends string to corresponding text stream 
  1069.   String expressions above work for ttf, #include and image_map, bump_map,
  1070.    material_map names.  Basically all strings.
  1071. Can declare string identifiers.
  1072. Partial support for \n \r \t etc.  Only works in messages, not in ttf.
  1073. Changed Bits_Per_Pixel to Output_Alpha=bool and +UA -UA
  1074. Implemented #while (COND)... #end loop (see WHILE1.POV)
  1075. MSDOS: Remove ICB compiler support, removed TARGA+ board support
  1076. IBM: Dropped whole MACHINE\IBMPC directory.
  1077.  
  1078. 3.alpha.0.18l     07/26/95 by Dieter Bayer
  1079. Changed a lot of memory allocations in BBOX.C, LBUFFER.C, LIGHTNING.C,
  1080.   MESH.C, VBUFFER.C and VLBUFFER.C in order to avoid unnecessary mallocs/
  1081.   frees during the main tracing loop 
  1082. Changed DEPTH_TOLERANCE in planes.c due to infinite loop with SKYVASE.POV
  1083. Changed calls to free() and malloc() into calls to POV_FREE() and
  1084.   POV_MALLOC() in OCTREE.C, PPM.C and RADIOSIT.C (the memory allocated
  1085.   during radiosity isn't freed yet!)
  1086. Fixed bug in rainbow arcs when a filter value is used (the rainbow didn't
  1087.   fade away anymore)
  1088. Fixed "Refrated" typo in OPTOUT.C
  1089. Fixed focal blur bug (the focal plane is in the right place now)
  1090.  
  1091. 3.alpha.0.18k     07/25/95 by Eduard Schwan
  1092. Changed r,g,b,a parms in POV_Std_Display_Plot & Rect in USERIO.C/H from
  1093.  unsigned char to unsigned int to resolve a Mac (Metrowerks) compiler bug
  1094.  (MW got confused on the mixed K&R and ANSI styles for these.)
  1095. Fixed inconsistencies & Mac problems in JULIA.C/H.  Some prototypes left
  1096.  out the parameter name, some function decl.s were ANSI, and the Macintosh
  1097.  has a type defined as "Point", so I renamed all "Point" parameters to
  1098.  "point".
  1099. Added a COOPERATE call in BBOX.C during sort_and_split, so Macs don't
  1100.  hang during the building of big bounding box trees.
  1101. Fixed Truman's "disappearing cylinder" bug in MATRICES.C, changed the
  1102.  ever-questionable "if (fp==1.0)" to the more robust "if (fabs(fp-1.0)<Eps)"
  1103.  
  1104. 3.alpha.0.18j     07/23/95 by Chris Young
  1105. Made -B switch turn buffer off, added Buffer_Output=bool
  1106. Rewrote some of text redirection, fixed bugs, made =bool work for any bool
  1107. Fixed Create_Ini=bool
  1108. Deleted Banner_File and Banner_Console redirection
  1109. Deleted +@ -@ stuff, replaced with warning message.
  1110. Deleted +Z -Z Debug= stuff
  1111. Moved mosaic preview error checking and relaxed it.
  1112. Other mosaic preview and radiosity preview fixes.
  1113. Turned Gamma_Correct into optional macro.
  1114. MSDOS:Turned dither off in draw box and Plot_Rect.
  1115. MSDOS:More make file changes/fixes
  1116.  
  1117. 3.alpha.0.18i     07/20/95 by Chris Young
  1118. Added Interlace= and Interlace_Odd= INI settings but did not implement
  1119.  actual odd/even interlace.
  1120. Added +Q10 to turn radiosity on but did not yet make other radiosity
  1121.  changes nor did not yet do radiosity{...} statement.
  1122. Added User_Abort_Command=sss and Fatal_Error_Command=sss shell outs.
  1123. Removed +MS -MS and replaced it with Warning
  1124. Removed +NFI +NFF +Unnn switches
  1125. Removed VerboseFormat
  1126. Fixed bug that light buffer INI set vista buffer by mistake
  1127. Fixed #ifdef PRECISION_TIMER_AVAILABLE that should have been just #if
  1128. Updated various MS-Dos make files for fractal stuff
  1129. Fixed bug in MSDOS\COPYFROM.BAT that copied MSDOS\*.* files into
  1130.  compiler-specific directories by mistake.  If you have a file in a
  1131.  compiler-specific directory that is also in MACHINE\MSDOS then delete it 
  1132.  from the compiler-specific directory and only keep it in MACHINE\MSDOS.
  1133.  
  1134. 3.alpha.0.18h     07/16/95 by Dieter Bayer
  1135. Added extra stats to the stats screen
  1136. Added code to LIGHTING.C, RENDER.C and VBUFFER.C to use the transmittance
  1137.  value of a pixel for the alpha channel
  1138. Added Pascal Massimino's fractal stuff (adopted by Tim Wegner)
  1139. Changed parameters to Intersect_Sphere() function
  1140. Changed fractal bounding sphere tests to call Intersect_Sphere()
  1141. Fixed bug with pigment colors of the type rgbt<0, 0, 0, t> with t > 0
  1142.  
  1143. 3.alpha.0.18g     07/12/95 by Dan Farmer
  1144. Reversal of patch 3.alpha.0.18c (Garnder clouds removed).
  1145.  
  1146. 3.alpha.0.18f     07/12/95 by Chris Young
  1147. Moved the Pre-Frame and Post-Frame commands to different location.
  1148. Added screen save/restore in MSDOS version before/after all 4 shellouts.
  1149. Fixed 0.0 to 1.0 range on wrinkle and waves pigment.
  1150. Added Histogram_Type=N for no histograms.
  1151. Fixed various Create_INI=rerun.ini problems.
  1152. Fixed bug with continued animations.
  1153. Added substitution options to the shellout commands.  New options
  1154.  are %s for scene name, %f for frame number and %k for clock value.
  1155.  
  1156. 3.alpha.0.18e     07/07/95 by Dieter Bayer
  1157. Added check for zero memory allocation to mem.c (only if MEM_HEADER is defined)
  1158. Added caustics keyword to finish structure (caustics FLOAT). Default is
  1159.   0, i. e. no caustics are simulated. A good value for caustics is 1.0
  1160. Changed mesh counters from int to long
  1161. Removed obsolete caustics_power ini keyword
  1162. Fixed zero allocation list of temporary light list in lighting.c
  1163. Fixed extra data bug in GIF.C as suggested by Chris Cason
  1164.  
  1165. 3.alpha.0.18d     07/05/95 by Chris Young
  1166. Added default extensions for all input files (.pov, .inc, .tga, .gif etc)
  1167. Added default output file name based on input file name.
  1168. Fixed bugs in .INI parsing which cause some options to be wiped out.
  1169. Fixed bug which caused superelipsoids not to work in csg.
  1170. Added text buffers with scroll-back to MSDOS version.
  1171. Misc cleanup of MSDOSTXT.C, MSDOSVID.C and IBM.C and make files.
  1172.  
  1173. 3.alpha.0.18c     06/22/95 by Dan Farmer
  1174. Added Gardner-style cloudplane pigment.
  1175.  
  1176. 3.alpha.0.18b     06/22/95 by Chris Young
  1177. Changed "display_..." functions to "POV_DISPLAY_..." macros.
  1178. Added alpha output to POV_DISPLAY_... so Mac version can save alpha
  1179. Began major restructuring of MACHINE\IBM into MACHINE\MSDOS.
  1180. Added Kendall's console handling stuff to MSDOS vers.
  1181.  
  1182. 3.alpha.0.18a     06/17/95 by Eduard Schwan
  1183. Removed unnecessary COOPERATE calls bogging down Mac version.
  1184. Fixed check_stats to display mosaic information and initial clock info.
  1185. Moved a too-tightly-nested CR output in verbose mosaic mode.
  1186.  
  1187. 3.alpha.0.18      06/09/95 by Chris Young
  1188. Major clean-up of last several patches.
  1189. Fixed Library_Path= bug.
  1190. TTF file open now searches +L paths.
  1191. Major memory leaks fixed in tiles, texture_map and ttf.
  1192.  
  1193. 3.alpha.0.17m     06/09/95 by Dieter Bayer
  1194. Added alpha channel support for Targa files (+f32 command line option and
  1195.  Bits_Per_Pixel ini file option to save 32bit Targas; they are automatically
  1196.  detected during reading and the alpha channel is used as transmittance. 
  1197.  The alpha channel is non-premultiplied and uses a value of 0 for 100% 
  1198.  transparency and a value of 255 for 0% transparency)
  1199. Fixed missing output filename bug when no filename was given
  1200. Fixed bug in Compute_CSG_BBox (wrong size to POV_REALLOC())
  1201.  
  1202. 3.alpha.0.17l     06/07/95 by Chris Dailey
  1203. Moved options into a single structure in povray.h
  1204. Moved statistics into an array, indices denoted by an enum
  1205. Created total statistics array
  1206. Move Post_Frame_Cmd_String to after closing of output file to avoid contention
  1207.  with shelled out program
  1208. Made +SF, +EF handle more like +SR/+ER and +SC/+EC in optin.c
  1209. Changed FrameData to FrameSeq
  1210. Updated machine-specific os2conf.h and bcos2.mak
  1211.  
  1212. 3.alpha.0.17k     06/04/95 by Chris Young
  1213. INI-style values may now contain blanks. No longer need %b in shell commands.
  1214. Implemented bracked sections of INI file.  Put "MYFILE.INI[MYSECTION]" on
  1215.  command line.  Only the section [MYSECTION] of file MYFILE.INI is read.
  1216.  If no section specified, only unlabled part of INI read.
  1217. Fixed latest #switch #range bug reported by DMF.
  1218.  
  1219. 3.alpha.0.17j     05/31/95 by Chris Young
  1220. Yet another bug fixed with #if #else and #declare
  1221. Reversed 17h some changes to restore +KF and +KFF
  1222.  
  1223. 3.alpha.0.17i     05/30/95 by Dieter Bayer
  1224. Added GET_KEY(x) macro to machine config files (ibmpc, os/2)
  1225. Fixed bug in mesh normal calculation (missing test for null pointer)
  1226. Fixed bug in continued animations (only parts of frames where traced 
  1227.  after one image was aborted)
  1228.  
  1229. 3.alpha.0.17h     05/27/95 by Chris Dailey
  1230. Removed Subset_Start_Pct and Subset_End_Pct, moved their functionality to
  1231.  Subset_Start_Frame and Subset_End_Frame
  1232. Allow +SF1.0 and +EF1.0 as special case for last frame
  1233. Almost changed flags +KFL and +KL to +KFF and +KF for Initial/Final terminology
  1234.  consistency, but +KFF & +KF are tricky.  Instead used +KI and +KF for clock
  1235.  Initial/Final, +NFI and +NFF for number frame Initial/Final
  1236. Fix help output for above option changes
  1237. More changes to option screen for animation
  1238. Added POV_SHELLOUT, POV_SYSTEM, and POV_MAX_CMD_LENGTH macros to frame.h,
  1239.  (overridable in config.h)
  1240. Added Pre_Render_Command, Pre_Frame_Command, Post_Frame_Command, and
  1241.  Post_Render_Command .ini file keywords; %b is for a blank, for _Frame_ %o
  1242.  is output file name
  1243.  
  1244. 3.alpha.0.17g     05/23/95 by Chris Young
  1245. Fixed a bug with #if #else and #declare
  1246.  
  1247. 3.alpha.0.17f     05/23/95 by Dieter Bayer
  1248. Added code for cyclic animation support (+KC switch, Cyclic_Animation keyword)
  1249. Added help screen menue support (define GET_KEY(x) in config.h to get menue
  1250.  to work! For MS-DOS that's #define GET_KEY(x) {(x) = getch();} )
  1251. Added animation options to option screen
  1252. Changed option screen layout (slightly!)
  1253.  
  1254. 3.alpha.0.17e     05/17/95 by Dieter Bayer
  1255. Added code for faked caustics
  1256.  
  1257. 3.alpha.0.17d     05/16/95 by Dieter Bayer
  1258. Modified mesh triangle calculation
  1259. Fixed "atmopshere in objects"-bug (atmospheric effects are not calculated
  1260.   when inside a transparent object)
  1261. Fixed bug in smooth triangle normal calculation in MESH.C
  1262.  
  1263. 3.alpha.0.17c     05/14/95 by Chris Dailey
  1264. Corrected default clock value bug introduced in 16L
  1265. Added animation status lines, made slight newline mods to others
  1266. Separated out initialization of statistics, print statistics for each frame
  1267.  instead of whole animation
  1268. Don't use tparse as a temporary variable in optout.c, its value needs to
  1269.  stay unchanged between frames to avoid exponential growth
  1270. Changed animation defaults as discussed in forum
  1271. Changed animation parameter .ini file names (removed Clock_ prefix)
  1272. Changed to "Initial"/"Final" terminology for whole animation definition,
  1273.  "Start"/"End" terminology for animation subset definition.  This includes
  1274.  variable names and .ini file names
  1275. Changed filename generation scheme to figure out how many chars the frame
  1276.  number takes up in the output filename
  1277. Split setup_output_file() to setup_output_file_name() and open_output_file()
  1278.  to aid in future "shell out" feature after filename determination and before
  1279.  opening
  1280. Added POV_NAME_MAX definition to frame.h, overridable in config.h
  1281.  
  1282. 3.alpha.0.17b     05/11/95 by Dieter Bayer
  1283. Added filtering fog (color ... filter) and transmittance threshold (transmit x)
  1284. Added missing keywords to the ini-file parser (Vista_Buffer, Light_Buffer,
  1285.   Draw_Vistas, Split_Unions, Remove_Bounds)
  1286. Changed triangle mesh syntax (mesh{} instead of triangle_mesh{})
  1287. Changed atmosphere syntax (scattering instead of reflectivity)
  1288. Changed rainbow syntax
  1289. Changed radiosity options help screen to fit on a 80x25 screen
  1290. Changed "Copyright 199x" into "Copyright 1995"
  1291. Changed structs in OCTREE and RADIOSIT into typedefs
  1292. Fixed bug in triangle mesh to make the hierarchy flag work correctly
  1293. Fixed bug in triangle mesh intersection point test ("missing shadow bug")
  1294. Fixed animation loop bug in POVRAY.C as mentioned by Chris Dailey
  1295. Removed vista/light buffer tree traversal methods (+up option)
  1296. Removed '#include <stdlib.h>' from RENDER.C
  1297.  
  1298. 3.alpha.0.17a     05/02/95 by Chris Cason
  1299. Added histogram code.
  1300. Misc spelling fixes, particularly variable Help_Available (:-).
  1301.  
  1302. 3.alpha.0.17      05/02/95 by Chris Young
  1303. Now possible to do #declare everywhere, even within objects (I think?)
  1304. Fixed destroy slope_map bug.
  1305. Misc bug fixes from recent patches.
  1306.  
  1307. 3.alpha.0.16l     04/28/95 by Chris Dailey
  1308. ANIMATION CHANGES:
  1309. parse.c Make pointer NULL after Destroy()ing its contents for Camera,
  1310.  do so for Texture while at it
  1311. povray.c Moved Initialize_noise() out of FrameRender() loop
  1312. povray.c Added Frame Number as @-escape to Output_File_Name: @[0]n, where
  1313.  n=max digits.  eg, file@3.tga would give file34.tga, file@03.tga would give
  1314.  file034.tga.  I know, @3 is no different than @7, we'll have to come up
  1315.  with a more logical scheme.
  1316. povray.c Added animation loop
  1317. povray.c renamed setup_renderer() to setup_output_file()
  1318. povray.c Moved Initialize_Renderer() call into FrameRender()
  1319. povray.c Move set_output_file_handle() call into setup_renderer()
  1320. povray.c Move a large chunk of main() into new FrameRender() function
  1321. express.c Yet slightly different behavior for Clock used without being set -
  1322.  inform user about default value, show warning only once
  1323. NON-ANIMATION CHANGES:
  1324. moved streams_init() call from mem.c to povray.c
  1325. cones.c:'Cone_Methods'/discs.c:'Disc_Methods'/bezier.c:'Bicubic_Patch_Methods'/
  1326.  julia.c:'Julia_Methods' is declared as both external and static fixed by
  1327.  removing its extern declaration in cones.h/discs.h/bezier.h/julia.h
  1328. lighting.c moved a brace as requested by Dan Farmer in message #110124,
  1329.  which makes calling of do_irid() independent of light source type
  1330. converted mem.c function headers from true ANSI to middle ANSI-K&R (*sigh*)
  1331. modified other files to user userio.h, mem.h
  1332. split memio.c/h to create mem.c/h and userio.c/h
  1333. radiosit.c changed ra_average_near() to be usable as parameter to
  1334.   ot_dist_traverse(), prototype in radiosit.h.  Note - someone should
  1335.   probably REALLY change ot_dist_traverse so that handle,handle1 are
  1336.   struct wt_avg *, but I don't feel confident enough to do this
  1337. memio.c changed false->FALSE, true->TRUE to fix undefined symbol
  1338.  
  1339. 3.alpha.0.16k     04/18/95 by Steve Demlow
  1340. Fixed stream redirection for non-standard I/O functions
  1341. Included octree.h in various places to define a type for radiosit.h
  1342. Fixed memory leak in Allocate_Text_Streams in optin.c
  1343.  
  1344. 3.alpha.0.16j      Apr 16/95 by Jim McElhiney
  1345. Added first version of all radiosity code
  1346.    -radiosity source files (radiosit.c, radiosit.h, octree.c, octree.h)
  1347.    -new flags
  1348.    -new progress messages
  1349.    -new mosaic preview function...could be integrated in future
  1350.    -trace() returns distance to object hit
  1351. Gamma correction function installed in code, but no option sets it
  1352.    -if you want to try this, set values in source in Gamma_Correct()
  1353. Smooth_Preview capability in the mosaic preview.
  1354.    -Like Gamma correction, there is no switch for this.  Change the
  1355.     variable Smooth_Preview to try it...it is used only when radiosity
  1356.     is on.
  1357. Small change to crackle to avoid value wraparound bugs
  1358.    -note values returned are about 10% smaller...may need colour map change
  1359. Fixed some small compiler issues
  1360.    -unused locals in targa.c and truetype.c
  1361.    -memory addressing error in parse.c
  1362.    -signed/unsigned mismatch warnings in 7 files
  1363.    -floating point errors in boxes.c and julia.c
  1364.    Note:  error in julia.c is flagged, but NOT FIXED...for Dieter to check?
  1365. One user interface change:
  1366.    -when using mosaic preview, when it completes, it now falls through to
  1367.     do the regular detailed trace.  Radiosity requires this behaviour,
  1368.     and I changed it for the regular mosaic preview to match.
  1369.  
  1370.  
  1371. 3.alpha.0.16i     04/09/95 by Dieter Bayer
  1372. Added arc to the rainbow (syntax: 
  1373.   rainbow { 
  1374.     up <VECTOR>          - rainbow's "up" vector, i.e. angle = 0
  1375.     falloff_angle1 FLOAT - angle of solid rainbow part
  1376.     falloff_angle2 FLOAT - angle of total rainbow
  1377.   }
  1378.   The rainbow arc goes from -falloff_angle2 to +falloff_angle2
  1379.   and is blended into the background from -falloff_angle2 to
  1380.   -falloff_angle1 and from falloff_angle1 to falloff_angle2,
  1381.   i.e. the "solid" (i.e. unblended) part of the rainbow
  1382.   goes from -falloff_angle1 to +falloff_angle2. If falloff_angle1
  1383.   is omitted no blending takes places. If falloff_angle2 is
  1384.   omitted the arc covers 360 degrees.
  1385. Added seconds time stats.
  1386. Changed help screen layout
  1387. Moved ini-file and command line parser into OPTIN.C/OPTIN.H
  1388. Moved code from main() into new functions
  1389. Fixed memory leakage in Copy_Rainbow() in ATMOSPHERE.C
  1390. Fixed memory leakages that occured if redirection was used (using POV_REALLOC()
  1391.   instead of POV_MALLOC() in process_variable() in OPTIN.C)
  1392. Fixed prototypes in POVRAY.C
  1393. Fixed divide by zero bug in Print_Stats() in POVOUT.C
  1394. Renamed OPTIONS.C/H to OPTOUT.C/H
  1395.  
  1396. 3.alpha.0.16h     04/07/95 by Chris Young
  1397. Fixed expression parse bug when parens used around vector.
  1398. Fixed problems in counter_to_string where \0 was written beyond
  1399.  end of string and leading spaces were too long.
  1400. Fixed memory leaks when previous blend map is overwritten.
  1401.  
  1402. 3.alpha.0.16g     04/05/95 by Dieter Bayer
  1403. Added syntax of animation options to help screen
  1404. Added FRAND() macro to TEXTURE.H to generate random number x (0 <= x <= 1)
  1405. Changed POV_Std_rand() to use faster shift instead of divide
  1406. Changed calls to POV_RAND() into calls to FRAND() were applicable
  1407. Fixed memory leakage in stream allocation
  1408.  
  1409. 3.alpha.0.16f     04/04/95 by Steve Demlow
  1410. Added options, for each output text stream, to turn off console output
  1411.  and/or to write to a default or specified file.
  1412. Added option to write all .INI settings to a file.
  1413. Added stdin support for script files and stdout support for output image
  1414.  files.
  1415. Turned off "Press any key" message if no WAIT_FOR_KEYPRESS is defined.
  1416.  
  1417. 3.alpha.0.16e     04/4/95 by Eduard Schwan
  1418. Added missing prototype for alt_main in POVRAY.H
  1419. Added MAIN_RETURN_STATEMENT at end of main() in POVRAY.C
  1420. Optimized the way Authors strings were allocated and displayed in OPTIONS.C
  1421. Moved the COOPERATE calls around a little to gain some Mac speed
  1422.  
  1423. 3.alpha.0.16d     03/29/95 by Chris Young
  1424. Added #switch, #case, and #range directives.
  1425. Fixed #if #else bugs.
  1426. Reversed a 16b patch that causes fatal errors when clock used without
  1427.  being set.  Changed to warning.  Uses default clock=0.0.
  1428. Fixed +Knnn.n switch bug.
  1429. Tiny change in options.c for extra precision counters.
  1430. New scene files.  Delete CASE1.POV & CASE2.POV.  No longer valid.
  1431.  
  1432. 3.alpha.0.16c     03/28/95 by Dieter Bayer
  1433. Updated credit screen
  1434. Fixed bug in triangle scaling
  1435. Fixed bug in triangle mesh bounding box calculation
  1436.  
  1437. 3.alpha.0.16b     03/26/95 by Chris Dailey
  1438. Added preliminary animation support, including command line args, ini file
  1439.  support, variable storage, and a little consistency checking.
  1440. Fixed a small bug with LAST_OPTION
  1441. Some OS2 files updated for 3.0
  1442.  
  1443. 3.alpha.0.16a     03/24/95 by Dieter Bayer
  1444. Added support for targa type 11 files
  1445. Added support of high resolution counter (64bit), currently up to 15 decimal 
  1446.  digits are used for counter output (counter length defined in FRAME.H)
  1447. Changed stats screen layout
  1448. Changed BOUND_HUGE to 2e10 to avoid floating point overflow 
  1449.  as noted by Jim McElhiney
  1450. Fixed wrong COMMA_TOKEN in TOKENIZE.C
  1451. Fixed unitialized color bug in material_map
  1452.  
  1453. 3.alpha.0.16     03/13/95 by Chris Young
  1454. Added #if (COND) #else #end and #if (COND) #end parsing.
  1455. Misc fixes and things necessary for #if and future conditionall stuff.
  1456. Full sync of all files.
  1457.  
  1458. 3.alpha.0.15n     03/10/95 by Chris Young
  1459. Fixed Make_RGB bug in Create_Finish
  1460. Deleted extra braces in default color maps
  1461. Changed && to || in deciding when to do reflection
  1462.  
  1463. 3.alpha.0.15m     03/08/95 by Dieter Bayer
  1464. Added colored reflections (finish { reflection <COLOR> } )
  1465. Added individual ambient color (ambient <COLOR>). Note that a modifications
  1466.  to Parse_Colour() has still to be made to be able to parse only one float.
  1467.  Currently there's only a temporary fix in EXPRESS.C as suggested by Chris Y.
  1468. Added ambient_light { color <COLOR> } for global ambient lighting
  1469. Fixed "Initialization is only partially bracketed" warnings
  1470. Fixed bug in POLY.C
  1471.  
  1472. 3.alpha.0.15l     03/02/95 by Dieter Bayer
  1473. Changed no_hierarchy to hierarchy keyword (switch by on/off, true/false, ...)
  1474. Fixed bug in Bool_Flag() in OBJECTS.H
  1475. Fixed bug in height field scaling (it now works according to the docs)
  1476. Fixed bug in height field dda traversal
  1477. Fixed bug in height field triangle intersection
  1478. Made some changes to POLY.C
  1479. Renamed Point variables in MESH.C
  1480.  
  1481. 3.alpha.0.15k     02/28/95 by Chris Young
  1482. Added repeat warp with offset and flip.  For example:
  1483.   warp {repeat 3*x offset <0,0.2,0.5> flip y}
  1484.   Repeats the pattern every 3 units in the x direction.  Offsets
  1485.    each successive copy by "offset".  Offsets accumulate.
  1486.    Flip alternate odd/even copies in the specified direction.  Specifically
  1487.    "flip y" does "scale <1,-1,1>" to odd copies.
  1488. Deleted translate, rotate, scale & transform inside warp{...} stmnt.
  1489. Misc internal warp changes and bug fixes.
  1490.  
  1491. 3.alpha.0.15j     02/27/95 by Dieter Bayer
  1492. Added automatic resizing of symbol and constant tables
  1493. Changed triangle mesh triangle texture syntax to texture { Name }
  1494. Fixed bug in height field bounding box calculation
  1495. Fixed some compiler warnings
  1496.  
  1497. 3.alpha.0.15i     02/23/95 by Dieter Bayer
  1498. Modified height field normal calculation and triangle intersection (small speed-up)
  1499. Fixed a bug in height field intersection testing
  1500.  
  1501. 3.alpha.0.15h     02/23/95 by Dan Farmer
  1502. Added 16 bit grayscale output for all output types (tga, tga-compressed,
  1503. ppm, raw, dump).  Currently uses +FxH commandline switch (where "x" is
  1504. the mode), but may be changed to a +Q setting in the future.  Sets the
  1505. grayscale palette for preview mode when 16 bit output mode is in effect.
  1506.  
  1507. 3.alpha.0.15g     02/23/95 by Dieter Bayer
  1508. Added individual texturing of triangles to triangles meshes
  1509. Merged calls to functions for atmospheric effects into two new functions:
  1510.   Do_Infinite_Atmosphere() and Do_Finite_Atmosphere() to avoid a copy of
  1511.   all these calls in RENDER.C and VBUFFER.C
  1512.  
  1513. 3.alpha.0.15f     02/22/95 by Chris Young
  1514. Added warp{...} statement to Parse_Pattern
  1515. Implemented turbulence warp and transformation warp
  1516. Included hooks for repeat, spiral and black_hole warps.
  1517. Added WARPS.C and WARPS.H
  1518. Updated DJGCC & Borland make files (need to verify dependency)
  1519.  
  1520. 3.alpha.0.15e     02/22/95 by Dieter Bayer
  1521. Added the call to plot_pixel() to Supersample() that I removed earlier
  1522. Fixed bug in height field bounding box calculation (PARSE.C)
  1523.  
  1524. 3.alpha.0.15d     02/20/95 by Dieter Bayer
  1525. Fixed bug in HFIELD.C (DDA setup)
  1526. Fixed bug in QUADRICS.C (intersection test)
  1527.  
  1528. 3.alpha.0.15c     02/15/95 by Dieter Bayer
  1529. Added triangle_mesh syntax
  1530. Added pseudo-number generator in TEXTURE.C
  1531. Rewrote HFIELD.C
  1532. Changed triangle mesh data structure (normals of unsmoothed triangles
  1533.   are now also stored as indices into the normal list)
  1534. Changed calls to rand() and srand() into calls to POV_RAND() and POV_SRAND()
  1535. Replaced In_Polygon with a much faster version by Eric Haines from GGems IV
  1536. Removed support for raw files
  1537. Removed unnecessary call to display_plot() from Supersample() in RENDER.C
  1538. Removed unnecessary function surface_area() from BBOX.C
  1539. Fixed bug in Solve_Polynomial() with higher order polynomials
  1540.  
  1541. 3.alpha.0.15b     02/13/95 by Dieter Bayer
  1542. Added smoothing to triangle mesh object
  1543. Added raw keyword to triangle mesh syntax to specify the raw file
  1544. Added autodetection of 9, 12, and 18 numbers/triangle raw file format
  1545. Fixed several bugs in MESH.C
  1546. Fixed bug that occured when the priority queue was resized (BBOX.C)
  1547. Fixed bug in VBUFFER.C
  1548. Fixed bug with +ms option to make it work as intended
  1549. Fixed bug with help option -h
  1550. Fixed bug in BBOX.C with number of objects smaller than threshold (+mb)
  1551.  
  1552. 3.alpha.0.15a     02/06/95 by Dieter Bayer
  1553. Added triangle mesh object (reads RAW format; no smoothing yet)
  1554. Added -h? options to show help screens
  1555. Changed BOUND.C: SNGL instead of DBL is used to store bounding boxes 
  1556.  (Beware that Assign_Vector() doesn't work with bounding boxes; use
  1557.  Assign_BBox_Vector() instead. Be aware of the new bbox macros in FRAME.H);
  1558.  functions to build and intersect a bbox tree are now reentrant.
  1559. Changes to BLOB.C (max. number of elements is arbitrarily set to 1,000,000; 
  1560.  data structure changed; bounding sphere stuff moved into BSPHERE.?)
  1561. Changed sky_sphere to make use of the filter and transmittive parts
  1562.  of a color (filtered and unfiltered translucency)
  1563. Changed help and credit screens
  1564. Changed TRIANGLE.C
  1565. Fixed bug with transformed spotlights
  1566. Fixed bug in Compute_Triangle() that set correct triangles as degenerate
  1567. Renamed BOUND.? into BBOX.? (remove BOUND.?)
  1568. Created BSPHERE.C and BSPHERE.H
  1569.  
  1570. 3.alpha.0.15      01/30/95 by Chris Young
  1571. Added "average" pattern type for pigment, normal and textures.
  1572. Includes Xander's latest truetype code.
  1573. Misc. cleanups.
  1574.  
  1575. 3.alpha.0.14i     01/29/95 by Chris Cason
  1576. Added PPM & PGM file format support for image_map, bump_map,
  1577.  material_map and height_field.  Added PPM output via +FP switch.
  1578. New files PPM.C, PPM.H, PGM.C, PGM.H files.  Make files must be updated.
  1579.  
  1580. 3.alpha.0.14h     01/25/95 by Dieter Bayer
  1581. Added cylindrical light source.
  1582.  
  1583. 3.alpha.0.14g     01/24/95 by Chris Young
  1584. Added "turb_depth" keyword for fog & mist.  The "turbulence <nnn,nnn,nnn>"
  1585.  continues to control the size of the turbulence pattern in the x,y,z 
  1586.  directions while turb_depth varies the front-to-back depth of the turb.
  1587.  Typical turb_depth should be 0.0 to 1.0 with the default 0.5.
  1588. Fixed highlights and fill lights as requested by DMF
  1589. Misc cleanup of "variable assigned value that is never used" warnings.
  1590.  
  1591. 3.alpha.0.14f     01/23/95 by Dieter Bayer
  1592. Added auto-bounding of elliptical paraboloids
  1593. Fixed bug with distance=0 in fogs
  1594. Fixed problems in Compute_Quadric_BBox()
  1595.  
  1596. 3.alpha.0.14e     01/20/95 by Chris Young
  1597. Height field bug fixed
  1598. Removed duplicate call to close_all
  1599. Minor BC++ 4.5 fixes
  1600.  
  1601. 3.alpha.0.14d     01/18/95 by Dieter Bayer
  1602. Changed calculation of attenuation for fading light sources
  1603.   (light color at fade_distance equals the specified light color)
  1604. Fixed bug with mists/fogs and infinite rays
  1605. Fixed bug with multiple fogs
  1606. Fixed bug with atmosphere and area light sources
  1607. Fixed bug with clipped polys
  1608.  
  1609. 3.alpha.0.14c     01/13/95 by Dieter Bayer
  1610. added fade_distance to light sources
  1611. Changed calculation of attenuation for fading light sources
  1612. Changed falloff_power to fade_power
  1613. Fixed bug with overlapping rainbows
  1614.  
  1615. 3.alpha.0.14b     01/10/95 by Chris Young
  1616. Implemented built-in float identifiers "on", "true", "yes" with value 1.0
  1617. Implemented built-in float identifiers "off", "false", "no" with value 0.0
  1618. Added float functions 
  1619.      acos(A)   arc-cosine of A
  1620.      asin(A)   arc-sine of A
  1621.      tan(A)    tangent of A
  1622. Added additive (non-filtered) transparency via 5th color channel.
  1623. Added "transmit" keyword (for example "color red 0.6 transmit 0.7")
  1624. Added "rgbt" and "rgbft" keywords (similar to "rgbf" but for transmit).
  1625.   The amount of the transmit value is the percent of light that is allowed
  1626.    to pass through in a non-filtered way.  Note that light from the object
  1627.    itself is diminished by (1.0-transmit) so a transmit value of 1.0 means
  1628.    that the object totally disapears.
  1629.  
  1630. 3.alpha.0.14a     01/10/95 by Dieter Bayer
  1631. Added volume rendering to simulate atmospheric scattering
  1632. Added light attenuation due to light source distance
  1633. Changed sky_blend to sky_sphere 
  1634. Fixed a bug in PARSE.C with planes and 'zero' normals
  1635. Fixed a bug in POVRAY.C that occured when diskwrite was suppressed
  1636. Removed YZFog
  1637. Removed some unused variables from LIGHTING.C and RENDER.C
  1638. Removed (temporarily) support of bounded fog (this is probably something for
  1639.   version 4 because a redesign of the intersection functions for a better
  1640.   CSG handling would help pretty much)
  1641.  
  1642. 3.alpha.0.14      01/09/95 by Chris Young
  1643. Added declared fog, rainbow, skyblend
  1644. Added several new keywords to parser but have not yet implemented them
  1645. Fixed empty bounded_by or clipped_by bug
  1646.  
  1647. 3.alpha.0.13g     01/05/95 by CY
  1648. Adds texture_map and makes changes to tiles & material_map
  1649. Open handle fix from Eduard
  1650.  
  1651. 3.alpha.0.13f     01/02/95 by Xander uploaded by CY
  1652. TRUETYPE.C changes to fix kerning
  1653.  
  1654. 3.alpha.0.13e     01/02/95 by Dieter Bayer
  1655. Fixed bounding box problem with clipped planes
  1656. Changed MAX_INTERSECTIONS to MAX_FOG_HITS in ATMOSPH.C
  1657.  
  1658. 3.alpha.0.13d     12/94 by Eduard Schwan
  1659. Changes to Mosaic preview
  1660.  
  1661. 3.alpha.0.13c     12/22/94 by Dieter Bayer
  1662. changed type BLOBTYPE to type int in BLOB.C function headers.
  1663.  
  1664. 3.alpha.0.13b     12/94 by Chris Young
  1665. Changes for static/global stuff accidently left out of 13.
  1666.  
  1667. 3.alpha.0.13a     12/21/94 by Dieter Bayer
  1668. removed unneeded variable cd1 from BOUND.C
  1669. removed unneeded function declaration from PARSE.C
  1670. fixed some bugs in JULIA.C
  1671. fixed bug in BLOB.C
  1672. changed maximum blob component size to 65000. Storage data type is
  1673.   defined now to make it easy to change (currently unsigned short)
  1674. made some minor changes to the options layout in OPTIONS.C
  1675.  
  1676. 3.alpha.0.13      12/19/94 by Chris Young
  1677. About a gazillion functions and variables made static and other
  1678.  changes suggested by Clint.
  1679. Patches for fussy Unix compilers by Steve Demlow
  1680. Sync up of all 3.0.12 patches
  1681.  
  1682. 3.alpha.0.12h-k   12/18/94 by Dieter Bayer
  1683. changed max. number of blob component to 65000 (values are now
  1684.   stored in unsigned shorts to save memory)
  1685. added credit screen (has to be updated).
  1686. added quaternion julia object by Paul Massinimo. New files JULIA.C & JULIA.H
  1687. added Steve Anger's patch to fix infinite loop in POV_RECLLOC()
  1688. added initializations to expressions in EXPRESS.C
  1689. fixed memory leakages in BLOB.C, PARSE.C, POLYGON.C, VBUFFER.C
  1690. fixed output buffer size bug (negativ buffer size if buffer was > INT_MAX byte)
  1691. fixed default filename bug in POVRAY.C. It wasn't displayed (e.g. data.tga)
  1692. changed max. index value (has to be smaller than 1) in Rainbow() and 
  1693.   Skyblend() to suit Compute_Pigment()
  1694. changed usage screen
  1695. changed options screen
  1696. changed call to Build_Bounding_Slabs() to always print number of objects
  1697. changed blob component limit to MAX_INT
  1698. changed 'int register' to 'register int' in EXPRESS.C
  1699. moved usage, option, and stats stuff into OPTIONS.C/OPTIONS.H
  1700. moved grid stuff from GRIDS.H into RENDER.C (delete GRIDS.H!)
  1701. removed some declared but unused variables
  1702. removed all unnecessary MATRIX referencing in function parameters. (vectors 
  1703.   and arrays are always passed by reference so referencing isn't necessary.)
  1704. removed unnecessary 'External variables' section from .c files
  1705.   (external variables are included via include files)
  1706.  
  1707. 3.alpha.0.12g   by Chris Young
  1708. Split PARSE.C into PARSE.C & PARSTXTR.C. Added also PARSTXTR.H
  1709. Misc static changes, bug fixes
  1710.  
  1711. 3.alpha.0.12f   12/10/94 by Eduard Schwan
  1712. Misc bug fixes in MEMIO.C, FRAME.H, TTF.C necessary for Mac.
  1713.  
  1714. 3.alpha.0.12e   12/12/94 by Dieter Bayer
  1715. Changed blob component maximum (=30000)
  1716. Changed blob intersection list (now dynamically allocated)
  1717. Changed command line option +UR to +UD and +UU to +UR.
  1718. Changed calls to Fog() and Rainbow(). They are no longer called from
  1719.   Determine_Apparent_Colour(). They are only called from Trace()
  1720.   and Trace_Primary_Ray().
  1721. Changed depth threshold for superquadric ellipsoids.
  1722. Fixed roughness=0 bugs in PARSE.C.
  1723.  
  1724.  
  1725. 3.alpha.0.12a thru d   12/09/94 by Chris Young
  1726. Implemented normal_map for all normals.
  1727.    normal_map {
  1728.      [0.0 NORMAL_BODY]
  1729.        ....
  1730.      [N.N NORMAL_BODY]
  1731.    }
  1732. Implemented slope_map for pattern-based normals.
  1733.    slope_map {
  1734.      [0.0 <HEIGHT,SLOPE>]
  1735.        ....
  1736.      [N.N <HEIGHT,SLOPE>]
  1737.    }
  1738. Changed scale on scallop_wave to match other wave types.
  1739. TTF bug fixes and split characters into individual objects so that
  1740.   autobounding works.
  1741. Added exit code parameter to FINISH_POVRAY(n).  Now FINISH_POVRAY(n)
  1742.   should call exit(n);
  1743. Several incarnations of quilted taken in/out.  Final version uses
  1744.   Dan's normal and CY's pigment.
  1745. Numerous bug-fixes by Eduard and Dieter.
  1746. Total rewrite of how pattern-based normals work.  New method fixes
  1747.   bad design flaw but produces slightly different results.  At least
  1748.   it works consistently and efficently.
  1749.  
  1750.  
  1751. 3.alpha.0.12    11/19/94 by Chris Young
  1752. Superelipsoids added by Dieter & Xander (new SUPER.C & SUPER.H)
  1753. Major rewite of color_map code to allow pigment_map and
  1754.  to pave the way for normal_map, slope_map, & texture_map
  1755. Implemented pigment map for all except image_map
  1756. Rewrite of quilted pigment & normal
  1757. Proportional spacing for TTF added by Xander
  1758. Cylindrical camera models by Dieter
  1759. Included IBM.OLD & CONFIG.OLD for compilers that aren't yet ported
  1760. Fixed bug in mosaic preview by Eduard
  1761.  
  1762.  
  1763. 3.alpha.0.11    11/01/94 by Dieter Bayer
  1764. Added improved bounding hierarchy creation to BLOB.C.
  1765. Added initialization of light list in LIGTHING.C.
  1766. Added test for focal blur to VBUFFER.C.
  1767. Added test for 'once' images in Test_Opacicty() (fixes POV3BUG.POV bug).
  1768. Added code to ibm.c that uses gotoxy(1,24) instead of gotoxy(1,15) in 
  1769.   IBM_Finish() if compiled for DJGPP to avoid segmentation violation.
  1770. Changed polygon data structure (saves memory for copied polygons).
  1771. Removed unnecessary workaround for POV_REALLOC() in CSG.C.
  1772. Removed unnecessary 'Inverted' element from TTF structure.
  1773. Removed 'Rewritten and ...' lines from function headers.
  1774. Removed single '/* [DB ?/94] */' comments.
  1775.  
  1776.  
  1777. 3.alpha.0.10    10/30/94 by Chris Young
  1778. Misc lbuffer & vbuffer fixes by Dieter
  1779. Misc memio fixes by Steve anger
  1780. Major rewrite of pigment & normal code by CY
  1781.   Added PATTERN.C & PATTERN.H
  1782.   Moved many routines and rewrote parameter lists.
  1783.   Added normal{...} types agate, bozo, brick, checker, crackle, gradient,
  1784.     granite, hexagon, leopard, mandel, marble, onion, radial, spiral1,
  1785.     spiral2, spotted & wood.
  1786.   Note syntax for normal is that bump amount is always last. i.e.
  1787.     normal {gradient <DIRECTION>, AMOUNT ...}
  1788.     normal {mandel ITERATIONS, AMOUNT ...}
  1789.   Modified syntax for spiral1 and spiral2 such that keyword must be
  1790.     followed by float value specifying number of arms.  Previously
  1791.     octaves was used. i.e. pigment{spiral1 5}
  1792.   Added wave type keywords for most pattern based pigments and normals
  1793.     ramp_wave, triangle_wave, sine_wave, scallop_wave
  1794. Note in 3.alpha.0.9 VECT.C was renamed MATH.C & MATH.H but this caused
  1795.   conflicts with <math.h> system file.  Now renamed it to POLYSOLV.C &
  1796.   POLYSOLV.H. Moved some macros from MATH.H to FRAME.H.
  1797. Note only the Borland & DJGCC make files are current.  Dependancy info
  1798.   in IBMGCC.MAK may be wrong.
  1799.  
  1800.  
  1801. 3.alpha.0.9    09/28/94 by Dieter Bayer
  1802. Added transformations to blob components (translation, scaling, rotation).
  1803. Added multi-textured blob support.
  1804. Added optional strength keyword to new blob component syntax.
  1805. Added no_hierarchy keyword to blobs to avoid the creation of an internal
  1806.   bounding sphere hierarchy.
  1807. Added improved color calculation for metallic surfaces.
  1808. Added vista buffer (+uv option, +upxx option for descending method).
  1809. Added light buffer (+ul option, +upxx option for descending method).
  1810. Added drawing of vista rectangles; kind of a preview (+ur option).
  1811. Added splitting of bounded unions with finite children (+su option).
  1812. Added code to resize priority queue in BOUND.C to avoid queue overflows.
  1813. Added code to allocate/free priority code outside Bounds_Intersect().
  1814. Added code to BOUND.C that puts all infinite objects in the first node
  1815.   of the bounding hierarchy root. Thus the hierarchy won't "mess up".
  1816. Added infinite flag to objects to avoid testing the bounding slab of 
  1817.   infinite objects during bounding hierarchy traversal. This saves 
  1818.   time because the bounding box of an infinite object will always be hit.
  1819. Added code to Parse_Object_Mods() to calculate the bounding box of any
  1820.   bounding or clipping objects and to assign the smaller one to the object
  1821.   if the object's bounding box is larger.
  1822. Added code to Parse_Camera() to make sure that camera vectors are
  1823.   perpendicular to each other. That is a must for the vista buffer.
  1824. Added code to Intersect_Box() to determine which side is hit in those
  1825.   cases where intersecion points are close to each other. This fixes
  1826.   surface acne problems at the edges of a box due to the usage of the
  1827.   wrong surface normal (see CHARS.POV e.g).
  1828. Modified BOUND.C to work with vista/light buffer.
  1829. Fixed memory leaks in DISCS.C, LATHE.C, PRISM.C, SOR.C, and TORUS.C.
  1830. Fixed threshold problem in normal calculation of cones/cylinders.
  1831. Created missing .h files for most .c files.
  1832. Lots of code "clean-ups" and re-formatting.
  1833.  
  1834. 3.alpha.0.8    09/22/94 by CEY
  1835. From Steve Anger:
  1836.   Memory management parts of MEMIO.C See comments in MEMIO.C for details.
  1837.  
  1838. From Chris Young:
  1839.   Split "Information" printf function into 3 new functions "Render_Info",
  1840.      "Status_Info" and "Debug_Info".
  1841.   All printf to stdout or stderr now converted to new i/o functions such
  1842.      as Render_Info, etc.
  1843.   All exit() calls re-directed through "Error".
  1844.   Fixed +ER +EC bug reported by DMF.
  1845.   Fixed TRUETYPE.C MAC macro by Eduard.
  1846.   Major rewrite of all aspects of IBM.C including text and video.
  1847.     Text changes are work-in-progress.  Requires CONIO.H macros a la Borland.
  1848.     Video requires Kendall's PMODE.LIB for all compilers.  Note DJGCC is 
  1849.     unsupported but has been faked with compatible macros.  VESA.C no longer
  1850.     required. TIGA support deleted. Targa_Plus code needs rewritten but is
  1851.     stubbed out.
  1852.   Misc bug fixes.
  1853.  
  1854. 3.alpha.0.7    08/31/94 by CEY
  1855. The following items from Dieter
  1856.    - memory leackage in BLOB.C fixed (bounding hierarchy is deleted now)
  1857.    - 'CROSSBLOB' bug fixed 
  1858.    - fillite light source bug fixed (as mentioned by Dan Farmer)
  1859.    - 'toroids in CSG' bug fixed (larger tolerance in Inside_Poly())
  1860.    - name Polygon changed to Polyg in POLYGON.C/POLYGON.H.
  1861.    - Only one function is now used to solve a polynomial
  1862.        c[0] * x^n + c[1] * x^(n-1) + ... + c[n-1] * x + c[n] = 0.
  1863.      Solve_Polynomial(n, c, r, sturm, epsilon)
  1864.        n       - order of polynomial
  1865.        c       - coefficients
  1866.        r       - roots found
  1867.        sturm   - use sturmian root solver (TRUE)
  1868.        epsilon - root elimination tolerance, i.e. roots with
  1869.                  |x| < epsilon will be eliminated (epsilon = 0
  1870.                  means that no roots will be eliminated)
  1871. From Eduard the mosaic preview.  Uses +SPnn +SEnn
  1872.  Requires new display_plot_rectangle in MACHINE.C
  1873.  Does not do file output.
  1874. From CEY:
  1875.  Misc bug fixes from various sources.
  1876.  More work-in-progress on error messages etc.
  1877.  
  1878. 3.alpha.0.6    08/19/94 by Dieter Bayer
  1879. Added new camera models and camera ray pertubation.
  1880. Added lathe primitve.
  1881. Added polygon primitive.
  1882. Added prism primitive.
  1883. Added surface of revolution primitive.
  1884. Added "rainbow" and "skyblend" (ATMOSPH.C).
  1885. Added cylindrical blobs and blob bounding hierarchy.
  1886. Added improved torus primitive (faster intersection testing)
  1887. Added two spiral textures.
  1888. Added Compute_???_BBox() to all objects.
  1889. Added function Solve_Polynomial_With_Root_Elimination() to VECT.C that uses 
  1890.  order reduction to eliminate roots at 0 (helps avoiding "surface acne").
  1891. Added function Solve_Polynomial() to VECT.C to easily solve
  1892.  a polynomial of order n (sturm can be specified).
  1893. Added code for tighter bounding boxes of CSG intersections.
  1894. Added cache for shadow testing to avoid repeated tests with layered textures.
  1895. Added test for opaque objects that speed up Filter_Shadow_Ray().
  1896. Added 4x4-matrix inversion to MATRICES.C.
  1897. Added new vector macros (see VECTOR.H).
  1898. Added #defines to .H files so that they are just processed once if
  1899.  they get included more than once.
  1900. Added memory clean-up to HFIELD.C.
  1901. Fixed iridescence bug due to uninitialized values in Create_Finish().
  1902. Fixed bug in sbisect() in VECT.C.
  1903. Fixed camera bug (ray direction parallel to y-axis).
  1904. Fixed "trace level bug". Now the correct maximum level traced is shown.
  1905. Fixed memory leakage bug in Free_Noise_Tables().
  1906. Fixed problems with CSG and declared height fields (most probably).
  1907. Fixed bug in Where_Error().
  1908. Moved Add_Pigment() from LIGHTING.C to PIGMENT.C and made all pigment
  1909.  functions static.
  1910. Moved Perturb_Normal() from LIGHTING.C to NORMAL.C and made all normal
  1911.  perturbing functions static.
  1912. Moved all fog functions to ATMOSPH.C and "merged" them into one function.
  1913. Changed POV 2.x difficult_coeffs() in VECT.C to version from POV 1.0
  1914.  to solve problems with vanishing objects (new version is still there).
  1915.  Problems with surface acne should be solved by root elimination.
  1916. Changed normal functions so that a pointer to the intersection structure
  1917.  is passed instead of the intersection point (more flexible).
  1918. Changed normal calculation of boxes. It now uses information on the side
  1919.  hit by the ray that was derived during intersection testing.
  1920. Changed some global functions to static.
  1921. Changed height field intersection testing to use only one function
  1922.  for CSG and non-CSG height fields.
  1923. Changed disc functions to get tighter bounds and to increase speed.
  1924. Changed normal calculation of smooth triangles to increase speed.
  1925. Renamed varibales min and sec to minutes and seconds in POVRAY.C.
  1926. Removed unused global variable Shadow_Test_Flag.
  1927. "Clean-up" of most primitive related files (cosmetic changes, added
  1928.  comments, small speed-ups).
  1929. Compressed Targa now supported via +FC switch.
  1930.  
  1931. 3.alpha.0.5    08/08/94
  1932. Fixed vrotate bug.
  1933. Added Dan Farmer's focal blur
  1934. Added Dan Farmer's quilted normal pattern
  1935. Fixed truetype problems.  Note .TTF file must be in current directory.
  1936.   Cannot find TTF on +L paths.
  1937. New error message dumps lines on parse errors.
  1938. Relational operators < <= != = >= > added.  Note relational expressions
  1939.   must be enclosed in parens.
  1940. Logical operators & | ! added.
  1941. Conditional expressions (c)?a:b added.
  1942.  
  1943. 3.alpha.0.4    07/16/94
  1944. Added Dieter's patches to remove various cache values.
  1945. Added Dieter's patches to combine object flags into bit flags.
  1946. Began outlining new message output functions in new MEMIO.C
  1947. Converted Xander's TRUETYPE.C to 3.x.  It doen't work yet.
  1948. Deleted TIGA support from Borland version.
  1949.  
  1950. 3.alpha.0.3    06/27/94
  1951. Fixed typo in VSumSqr macro in VECTOR.H affecting crackle
  1952. Fixed uninitalized Background_Colour in PARSE.C
  1953. Fixed 0.0 constant in Warn in PARSE.C
  1954. Fixed STAT.OUT that got stuck "on"
  1955. Added Automatic Depth Control (ADC) from Dan Farmer
  1956. Added fill lights, number of waves, fisheye, new fog types, and
  1957.   brick pigment from Dan Farmer
  1958. Added first round rewrite of expression parser.  Includes the following
  1959.   functions:
  1960.   These return float values...
  1961.     abs(A)        absolute values of A
  1962.     atan2(X,Y)    arc-tangent in radians of (X/Y)
  1963.     ceil(A)       round up to next integer value A
  1964.     clock         value of +K switch
  1965.     cos(A)        cosine of A where A is in radians
  1966.     degrees(A)    convert A from radians to degrees
  1967.     div(A,B)      integer part of (A/B)
  1968.     exp(A)        e-to-the A power
  1969.     int(A)        integer part of A
  1970.     log(A)        base e logarithm of A
  1971.     max(A,B)      maximum of A and B
  1972.     min(A,B)      minimum of A and B
  1973.     mod(A,B)      A modulo B, the remainder of A/B
  1974.     pi            constant 3.3.1415926535897932384626
  1975.     pow(A,B)      raise A to the B power
  1976.     radians(A)    convert A from degrees to radians
  1977.     sqrt(A)       square root of A
  1978.     vdot(V1,V2)   dot product of vectors V1 and V2
  1979.     vlength(V1)   length of vector V1
  1980.     version       value of version variable
  1981.   These return vector values...
  1982.     vaxis_rotate(V1,V2,D)     rotate point V1 by D degrees about any 
  1983.                                 arbitrary axis V2 (not just coordinate
  1984.                                 axes) 
  1985.     vcross(V1,V2)             cross product of V1 X V2
  1986.     vnormalize(V)             scale V to unit length
  1987.     vrotate(V1,V2)            rotate point V1 about coordinate axes by
  1988.                                 V2 amount of degrees.  For example:
  1989.                                 vrotate(V1,30*y) rotates V1 by 30 degrees
  1990.                                 about y-axis. 
  1991.     x, y, z                   constant unit vectors
  1992. Added expression parsing to colors: White*0.536-Red*0.1
  1993. Made "color" keyword optional everywhere except old style color maps.
  1994.  
  1995.  
  1996. 3.alpha.0.2    06/02/94
  1997. Added Steve Anger's memory cleanups.
  1998. Added crackle pigment but it contains a negative sqrt bug.
  1999. Added modified version of Dan Farmer's irid code.
  2000.    irid {FLOAT [thickness FLOAT] [turbulence FLOAT] }
  2001.    Other irid options to be added later.
  2002. Fixed Antialias_Threshold bug from 3a.0.1
  2003. Changed several .INI variables so the only set defaults but do not
  2004.    turn options on.
  2005. Changed variable name in GIFDECOD.C per Eduard's request.
  2006. Fixed spelling of sturm in PARSE.C error message.
  2007.  
  2008.  
  2009. 3.alpha.0.1    04/28/94
  2010. Implemented .INI file parsing system.  Works with switches and .DEF
  2011.    files too.
  2012. Eliminated case sensitivity option in TOKENIZE.C
  2013. Eliminated +T case sensitive switch.
  2014. Eliminated sub-options of +V switch (needs more work).
  2015. Changed when +SR, +SC, +ER, +EC take effect when using fractional values.
  2016.    For example: +W320 +SR0.1 +W640 used to result in +SR32
  2017.     now late binding results in +SR64.  Order of specifing switches no 
  2018.     longer hurts.
  2019. Now +B0 or -B0 turns off any previous +Bnnn setting.  Formerly any +B setting
  2020.    could not be overridden once set.  Now it can be.
  2021.  
  2022. 3.alpha.0.0    04/06/94
  2023. Initial 3.0 version converted all VECTOR & COLOUR structs to arrays.
  2024. Added +Xnnn command-line switch to only check for keypress every nnn pixels.
  2025.