		Polyray Revision History

Version 1.5
Released: 8 November 1992

     o  Added directional lights

     o  Added haze

     o  Found the missing top line in scan converted images -
        Polyray was using the background color for the entire
        top line.

     o  Added layered textures.

     o  Expression processing code improved - bugs removed,
        memory used diminished.

     o  Plugged memory leaks.  Extensive debugging of memory
        allocations and frees performed.  Animations should be
        much happier now.

     o  No longer need to define maximum number of primitives.

     o  Added support for greyscale Targa (type 3) files.  These
        can be used as the output format, as imagemaps, and as
        height fields.

     o  Buggy SVGA support removed.  Only standard VGA mode
        (320x200) supported.

     o  Gridded objects added.

     o  Arrays added

     o  Components of CSG objects are now properly sorted by
        bounding slabs

     o  User defined bounding slabs removed.  Polyray will always
        use bounding slabs aligned with the x, y, and z-axes.

     o  Clipping and bounding objects removed.  Clipping is now
        performed in CSG, bounding is specified using a
        "bounding_box" declaration.

     o  Added wireframe display mode.

     o  Added planar blob types.  (Also added toroidal blob
        types, but they only appear in scan conversion images
        due to the extreme numerical precision needed to
        raytrace them.)

     o  Added smooth height fields.

     o  Fixed shading bug involving transparent objects &
        multiple light sources.

     o  Fixed diffuse lighting from colored lights.

     o  Changed RLE Targa output so that line boundaries are not
        crossed.


Version 1.4
Released: 11 April 1992

     o  Support for many SVGA boards at 640x480 resolution in 256
        colors.  See documentation for the -V flag. (Note: SVGA
        displays only work on the 286 versions.)

     o  Changed the way the status output is managed.  Now
        requires a number following the -t flag.  Note that line
        and pixel status will screw up SVGA displays - drawing
        goes to the wrong place starting around line 100.  If
        using SVGA display then either use no status, or
        "totals".

     o  Added cylindrical blob components.  Changed the syntax
        for blobs to accommodate the new type.

     o  Added lathe surfaces made from either line segments or
        quadratic splines.

     o  Added sweep surfaces made from quadratic splines.

     o  Height field syntax changed slightly.  Non-square height
        fields now handled correctly.

     o  Added adaptive antialiasing.

     o  Squashed bug in shading routines that affected almost all
        primitives. This bug was most noticeable for objects
        that were scaled using different values for x, y, and z.

     o  Added transparency values to color maps.

     o  Added new keywords to the file "polyray.ini":
        shadow_tolerance, antialias, alias_threshold,
        max_samples.  Lines that begin with "// " in polyray.ini
        are now treated as comments.

     o  Short document called "texture.txt" is now included in
        "plydoc.zip".  This describes in a little more detail
        how to go about developing solid textures using Polyray.

     o  Added command line argument "-z start_line".  This allows
        the user to start a trace somewhere in the middle of an
        image.  Note that an image that was started this way
        cannot be correctly resumed & completed.  (You may be
        able to use image cut and paste utilities though.)


Version 1.3
(not released)

     o  Added support for scan converting implicit functions and
        polynomial surfaces using the marching cubes algorithm.
        This technique can be slow, and is restricted to objects
        that have user defined bounding shapes, but now Polyray
        is able to scan convert any primitive.

     o  A global shading flag has been added in order to
        selectively turn on/off some of the more time consuming
        shading options.  This option will also allow for the
        use of raytracing as a way of determining shadows,
        reflectivity, and transparency during scan conversion.

     o  Added new keywords to the file "polyray.ini": pixel_size,
        pixel_encoding, shade_flags.

     o  Improved refraction code to (mostly) handle transparent
        surfaces that are defined by CSG intersection.

     o  Fixed discoloring of shadows that receive some light
        through a transparent object.

     o  Jittered antialiasing was not being called when the
        option was selected, this has been fixed.

     o  Fixed parsing of blobs and polygons that had large
        numbers of entries. Previously the parser would fail
        after 50-60 elements in a blob and the same number of
        vertices of a polygon.

     o  In keeping with the format used by POV-Ray and Vivid,
        comments may now start with "//" as well as "#".  The
        use of the pound symbol for comments may be phased out
        in future versions.


Version 1.2
Released: 16 February 1992

     o  Scan conversion of many primitives, using Z-Buffer
        techniques.

     o  New primitives: sweep surface, torus

     o  Support for the standard 320x200 VGA display in 256
        colors.

     o  An initialization file ("polyray.ini") is read before
        processing.  This allows greater flexibility in tuning
        many of the default values used by Polyray.

     o  User defined bounding slabs added.  This greatly improves
        speed of rendering on data files with many small
        objects.

     o  Noise surface added.

     o  Symbol table routines completely reworked.  Improved
        speed for data files containing many definitions.

     o  Bug in the texturing of height fields corrected.


Version 1.1
(not released)

     o  Added parabola primitive

     o  Dithering of rays, and objects

     o  Blob code improved, shading corrected, intersection code
        is faster and returns fewer incorrect results.


Version 1.0
Released: 27 December 1991

     o  Several changes in input syntax were made, the most
        notable result being that commas are required in many
        more places.  The reason for this is that due to the
        very flexible nature of expressions possible, a certain
        amount of syntactic sugar is required to remove
        ambiguities from the parser.

     o  Several new primitives were added: boxes, cones,
        cylinders, discs, height fields, and Bezier patches.

     o  A new way of doing textures was added - each component of
        the lighting model can be specified by an implicit
        function that is evaluated at run time.  Using this
        feature leads to slower textures, however because the
        textures are defined in the data file instead of within
        Polyray, development of mathematical texturing can be
        developed without making alterations to Polyray.

     o  File flush commands in the data file and at the command
        line were added.

     o  Several new Targa variants were added.

     o  Image mapping added.

     o  Numerous bug fixes have occurred.


Version 0.3 (beta)
Released: 14 October 1991

     o  This release added Constructive Solid Geometry,
        functional surfaces defined in terms of transcendental
        functions, a checker texture, and compressed Targa
        output.

     o  Polyray no longer accepted a list of bounding/clipping
        objects, only a single object is allowed. since CSG can
        be used to define complex shapes, this is not a
        limitation, and even better makes for cleaner data
        files.


Version 0.2 (beta)
(not released)

     o  This release added animation support, defined objects,
        arithmetic expression parsing, and blobs.


Version 0.1 (beta)
(not released)

     o  First incarnation of Polyray.  This version had code for
        polynomial equations and some of the basic surface types
        contained in "mtv".

