Blue Moon Rendering Tools -- Summary of recent changes
------------------------------------------------------


BMRT 2.5.0 updates:
  * 14 Jun 2000 - 2.5.0.8 fixed: a bug in slc, given the following:
		color C = environment (map, R);
    would generate a float environment call instead of the correct
    color environment call.  slc -dso sometimes incorrectly compiled
    compound boolean expressions in if statements.  libribout didn't
    actually implement RiCurves, RiPoints, RiSubdivisionMesh (accidentally
    left out).  Fixed a but that caused rendrib to crash when radiosity
    was used in scenes that contained lights using shadow maps.  Fixed
    crash when PixelSamples was not "square" and ysamples > xsamples.
    Fixed slc -dso bug that incorrectly compiled float / matrix.
  * 24 Apr 2000 - 2.5.0.7 fixed: a bug in slc that generated the wrong
    code when passing array elements to user functions (only in the
    interpreted shaders, not in the DSO shaders); MakeCubeFaceEnvironment
    (and the equivalent mkmip) failed if faces weren't powers of two
    or if not all faces were the same resolution; MakeTexture didn't
    correctly recognize the -resize parameter.
  * 14 Apr 2000 - 2.5.0.6 fixed: a bug that prevented rendrib from finding
    DSO's for DSO procedurals.  A bug caused libslcargs/slctell to
    report incorrect parameters for interpreted shaders if your shader
    had a local variable named "param."  
    Also, the libslcargs.a library has changed a bit -- now you should
    link against libribout.a if you want either RIB output or shader
    inquiry or both.  Use libslcargs.a *only* when you are *also* linking
    against another RIB client library (such as Pixar's librib.a).
  * 27 Mar 2000 - 2.5.0.3 fixed: bugs in some circumstances for
    inline declares; fixed bug with texture mapping of non-mipmap TIFF
    files (sometimes crashed, sometimes got edge texels wrong);
    trim curves with very small changes in t between knots looked wrong;
    libslcargs/slctell couldn't find the default arguments of parameters
    that were initialized as:  param = point f;  (where f is a float);
    DSO shadeops called from interpreted shaders couldn't access string 
    parameters correctly.
  * 15 Mar 2000 - 2.5.0.2 fixed: core dump when writing out z values to
    a TIFF file (zfile is recommended anyway); invalid RunProgram
    procedurals could crash the renderer; using radiosity along with
    light shaders that contained displacement() message passing calls
    caused a crash; memory leak when rendering multi-frame RIB file
    with rgl using the -dumprgba flag; on intelnt, fixed bug with
    parsing binary RIB.
  * 9 Mar 2000 - 2.5.0.1 fixed: a serious bug that caused strange
    crashes with certain shaders with vary many parameters; fixed a bug
    where libslcargs and slctell had SLC_GetName return the shader path,
    rather than the correct shader name; added SLC_GetArch that returns
    a char * pointing to the architecture name (like "sgi_m3"); light
    categories didn't work properly for lights with no __category at
    all; you could get a crash if you had true displacement combined
    with a surface shader that called the message passing displacement()
    routine.
  * 1 Mar 2000 - 2.5.0.0 fixed: on intelnt only, hitting 'w' after
    framebuffer display for an RGBA images wrote only a 3-channel
    image (incorrect); interpreted shaders had errors when string
    parameter initializers started with the character '['; Windoze
    port now has working DSO shadeops, RiProcedurals, and dspy drivers,
    but still no slc -dso full compiled shaders.
  * 24 Feb 2000 - beta -8 fixed:  another fix to DSO shadeop
    polymorphic function disambiguation; fixed an unreported bug
    that made strings work incorrectly with DSO shadeops;  fixed a
    but in DSO shadeops that didn't make incorrect results, but did
    add much more overhead to the calls than was necessary; rgl no 
    longer dumps core with object instancing, instead it correctly 
    tells you that it doesn't support the feature;  a severe bug
    in the shader interpreter was fixed that sometimes got incorrect
    results when comparing (<=, <, etc) negative numbers.
  * 22 Feb 2000 - beta -9 fixed:  obscure slc bug fixed that generated
    incorrect code for some function calls; shadows didn't work for
    lights with solar statements when compiled with -dso; multiple
    illuminance loops in a shader with different gather angles (like you'd
    use for backlighting) didn't cause the proper rerunning of lights.
  * 14 Feb 2000 - beta -10 fixed: several problems with DSO shadeops,
    including that the passed argc was wrong, and that sometimes the
    wrong polymorphic version of the function was chosen.  Also fixed
    a problem where point/color arrays with an initializer list of
    floats wouldn't initialize their components properly.
  * 10 Feb 2000 - Beta -11 fixed: a linkage problem with libslcargs
    that made it impossible for developers to link both libslcargs
    and libribout.  Now the contents of libslcargs are *also* in
    libribout, so if you need both, just link libribout.  Also,
    extremely long stings in the RIB stream (such as search paths)
    could cause a crash if they were more than 2048 bytes long.
    Now they can be much larger!
  * 1 Feb 2000 - Beta -12 fixed: very subtle bug that occasionally 
    would crash under rare circumstances (sorry, just too hard to
    describe why; just trust me, it's fixed); fixed zero angle solar
    statements (which only worked properly with illuminance(P,axis,angle),
    but not with illuminance(P)); mkmip properly handles the distinction
    between -resize up and up-, down and down-, etc.  Also, previous
    versions of BMRT 2.5beta for Alpha Linux didn't correctly support DSO
    shaders; now that's fixed, it was just a linkage problem.
  * 21 Jan 2000 - Beta -13 fixed: SL translate and scale functions
    weren't working properly.
  * 17 Jan 2000 - Beta -14 fixed: float splines didn't work properly
    in shaders compiled with the -dso option;  the fulltrace() function
    would crash when the scene contained CSG objects.  Modified arealight.sl
    so that when compiled in PRMan, it at least makes sense if used on
    a flat area light whose normal points in +z in local space.
  * 5 Jan 2000 - Beta -15 fixed: a bug prevented some color transforms
    from working -- in particular, "rgb" space was unrecognized!
  * 24 Dec 99 - Beta -16 fixed: Deriv(point,float) didn't give the right 
    results for interpreted shaders;  depth(point) didn't give the right
    results for compiled shaders;  when given a completely empty
    TrimCurve (one with no loops), didn't properly turn off trimming;
    floating point output (Quantize 0 0 0 0) didn't work properly;
    floating point images weren't read properly by mkmip or texture().
  * 18 Dec 99 - Beta -17 fixed: rendering to framebuffer and hitting
    'w' wrote an incorrect TIFF file;  slctell reported the wrong space
    of point-like params that didn't specify any space;  fixed bug
    where slc sometimes didn't properly handle polymorphic user functions.
  * 30 Nov 99 - Beta -18 fixed: an slc problem where use of the -dso
    flag wouldn't correctly compile shaders with assignment to array
    elements; rendering to framebuffers didn't correctly respect 
    the ShadingRate; mkmip -envlatl printed bogus messages about
    incorrect sampleformat; color spaces "hsl", "xyY", and "YIQ"
    were not handled for color constructors; Option "searchpath" "resource"
    didn't work properly.
  * 29 Nov 99 - Beta -19 fixed: slc -dso wouldn't compile shaders using
    the "spline" function; point noise(point) routine was a different 
    pattern with and without DSO shaders; pnoise didn't correctly
    handle all cases.
  * 25 Nov 99 - Beta "-20" issued: original 2.5 beta release.


Summary of changes from 2.4 to 2.5 (beta Nov 1999)
---------------------------------------------------
slc / runtime SL interpreter:
  * On SGI, Sun, Linux, and Alpha, you can now compile your complex  
    shaders into machine code by using the -dso flag:
		slc -dso myshader.sl
    Many complex shaders will execute much faster as compiled DSO's.
    See the BMRT documentation (in the slc section) for details and
    caveats.
  * Shadow maps are now fully supported.  Render a "zfile", use 
    "mkmip -shadow" to convert to a shadow map, then use the SL shadow()
    function, just as you would with PRMan.
  * Lat-long environment maps are now supported (before, only cubeface
    envmaps were supported).  Also, cubeface environment maps are
    significantly beefed up, and like latlong and textures, now take
    advantage of multiresolution tiled TIFF files created by mkmip.
  * Light categories (illuminance loops with category specifiers)
    are now supported.
  * Light shaders with solar() [i.e. with no args] didn't previously
    work.  Now they do, choosing an L direction roughly in the mirror
    direction of I and the illuminance gather access.
  * More robust formatting is now supported by format() and printf().
    In particular, you can do stuff like "%04f" to make zero-padded
    strings.  This is handy for constructing texture filenames.
  * Support for executing PRMan's DSO shadeops.
  * A number of buglets have been fixed related to imager shaders:
    there was a 1/2 pixel shift in positions, and incorrect calculations
    of derivatives in imager shaders.
  * Bug fix: The implementation of the SL comparison (i.e. == or !=)
    of two vector or colors was botched.  [2.4d]
  * Bug fix: rayhittest() returned incorrect results. [2.4g]
  * Bug fix: color/float was too conservative in avoiding divide by
    zero -- it would set the color to zero if the float was < 1.0e-6.
    Now it just does the division, no matter what value you use. [2.4g]
  * Bug fix: the "fulltrace" function, due to a bug, was much slower
    than it could be.  Now it's lots faster.
  * Bug fix: transformations to and from "NDC" space were sometimes
    wrong.  [2.4c]
  * A bug (or misdesign?) made derivatives of user vertex data to be
    incorrect.  Now this works properly. [2.4c]
  * Bug fix: if you displaced P, using calculatenormal for N, then
    lit using area lights with "nsamples" > 1, in some cases the wrong
    light values were used.  This is now fixed, and amazingly, with
    the bug removed some scenes render faster. [2.4b]
  * Bug fix: pnoise didn't correctly handle all polymorphic cases.

rendrib:
  * If PRMan is installed on your machine, BMRT can use PRMan display
    services if you set
         Option "render" "useprmandspy" [1]
	 Option "searchpath" "display" [path]
  * Can now motion blur NURBS, bicubic patches, and meshes with 
    moving vertex positions.
  * Improvements in texture caching algorithm might improve performance
    when using tiled TIFF files for textures.
  * Bug fix: Combination of true displacement (not bump) with reversed
    handedness resulted in incorrectly inside-out primitives.
  * New command line flag -beep causes the terminal bell to ring when
    rendrib is finished.
  * New attribute:  Attribute "light" "samplingstrategy" [n] can choose
    among different area light sampling strategies.  Currently only
    0 (the old default) and 1 (a new, slightly different pattern) are
    available.  It's unclear if 1 is really any better than 0 -- try
    it and find out.
  * When creating PRMan zfiles, specifying "zcompression" "zip" on the
    RiDisplay parameter list causes the zfiles to be automatically
    be gzipped as they are written.
  * Bug fix: PatchMesh didn't correctly parse "constant" arguments. [2.4g]
  * Bug fix: SubdivisionMesh didn't output the correct number of values for
    varying and vertex arguments. [2.4g]
  * Bug fix: Finally fixed a bug that would make some frames dimmer,
    only when rendering multi-frame RIB files, and only with
    certain PixelSamples combinations. [2.4h]
  * Bug fix: Sometimes using -frames would cause a core dump. [2.4h]
  * Fixed but that made some radiosity calculations incorrect.  It usually
    wasn't noticable, but sometimes it turned objects bright red!  Turned
    out to just be a typo. [2.4b]
  * Bug fix: renders to framebuffer didn't respect ShadingRate.

rgl:
  * Bug fix: no longer dump core on SGI when RIB file is not found.
  * Bug fix: the combination of both ortho projections and crop windows
    caused an incorrect aspect ratio when displaying with rgl.

mkmip:
  * Support for turning zfile depth maps into shadow maps: "mkmip -shadow"
    Compressed zfiles (either with gzip or by specifying zip compression
    when creating the zfile with PRMan or BMRT) are read transparently.
  * Support for making environment maps with mkmip:
    "mkmip -envcube" and "mkmip -envlatl"
  * Bug fix: for certain resolutions, mkmip/MakeTexture crashed on some
    platforms. [2.4b]
  * We've finally fixed the problem with searchpaths on Windows. [2.4b]

ribout:
  * Fixed bugs in SubdivisionMesh output. [2.4f]
  * Bug fix: PatchMesh didn't output the correct number of values for
    varying and uniform arguments. [2.4g]

slctell/libslcargs:
  * Fixed a longstanding bug where point and color parameters with
    space names didn't properly report their default values and
    spaces.

miscellaneous:
  * All shader source code, shader include files, and compiled shaders
    are now in the shaders/ subdirectory.  There are no longer any
    shaders in the examples/ directory.
  * Many more shaders are included, including quite a few from the new
    book by Apodaca and Gritz, _Advanced RenderMan: Creating CGI for
    Motion Pictures_.
  * Revamped user manual.
  * farm: now correctly skip RIB lines with comments when searching for
    the desired resolution. [2.4c]






Summary of changes from 2.3.6 to 2.4.0 (January 1999)
------------------------------------------------------
slc / runtime SL interpreter:
  * New SL raytracing support:  isshadowray(), raylevel(), visibility(),
    rayhittest(), fulltrace().
  * Support of arrays in SL.
  * Support of the "matrix" type in SL.
  * Bug fix: ambient lights (those not containing illuminance or solar
    statements) did not have access to certain surface variables such
    as Ps. Now fixed. (Non-ambient lights were fine all along.) (2.3.6a)
  * Bug fix: Area light shaders weren't being run with s,t,u,v initialized
    (this making it difficult to color an area light based on a texture
    lookup). (2.3.6a)

rendrib:
  * New attribute:  Attribute "render" "visibility" allows you to make
    certain objects appear in reflections only or shadows only (but
    invisible from the camera).  See the user manual for more info.
  * Bug fix: true displacements on polygons that *also* had "N" specified
    at their vertices resulted in the wrong normals being used for shading.
  * Bug fix: bicubic patch meshes specified with Pz didn't compute their
    x and y components correctly. (2.3.6a)
  * Bug fix: near and far clipping were done with respect to Euclidean
    distance from the camera, rather than strictly z distance. (2.3.6a)
  * Bug fix: numerical tolerance errors made torus intersections flakey
    under some circumstances. (2.3.6a)
  * Bug fix: triangles had their parameters mapped wrong in some
    circumstances.  Now fixed, and also triangles take a bit less memory
    then before.
  * Bug fix: a memory leak in rendrib caused lots of swapping and other
    odd behavior for high-res frames. [2.3.6b]
  * Bug fix: Rational NURBS and rational bicubics sometimes were bounded
    incorrectly, causing sections to be oddly "clipped." [2.3.6b]
  * Bug fix: shadows were not properly motion blurred. [2.3.6b]
  * Bug fix: RiCoordSysTransform only worked for "named" transformations
    (i.e. those declared with RiCoordinateSystem), not the predeclared
    ones (like "NDC" or "world").
  * Bug fix: orthographic cameras with a Scale before WorldBegin could
    result in the wrong camera view.
  * Bug fix: radiosity didn't work properly for instanced objects
    (ObjectBegin/ObjectEnd/ObjectInstance), it previously reported zero
    indirect energy.  Now this is fixed.
  * More robust handling of trim curves with umin/umax that are 
    out-of-range compared to their knot vector values.

rendribv:  rendribv has been superceded by rgl -lines
  
rgl:
  * -lines option now replaces rendribv.
  * -sketch option for novelty "pseudo-hand-sketched" look to previews
  * -unlit causes surfaces to be lit by a single simple light source at
    the camera, and for the lights in the actual RIB file to be ignored.
  * Previews of PRMan's new primitives:  points, curves (previewed as
    line segments), and subdivision surfaces (previewed as points
    polygons meshes with smoothed normals)
  * Bug fix: NURBS did not display correctly under certain circumstances 
    due to numerical inaccuracies.


Miscellaneous:
  * Support and documentation for using BMRT and PRMan together with
    the "rayserver" paradigm.  See the docs for details.
  * "farm" script -- allows a single frame to be subdivided with separate
    subsections renderered on different machines, then stitched together
    when done.
  * There's a new program, "mkmip".  It is a TIFF file converter -- turns
    an ordinary scanline TIFF file into a tile-based multiresolution TIFF
    file.  The texture mapping in rendrib still accepts TIFF files as
    image textures (rather than any proprietary formats like PRMan), but
    if the TIFF file happens to be tile-oriented, the runtime system can
    significantly reduce the amount of memory used for texture mapping
    by swapping in and out only the exact tiles needed by the renderer.
    I strongly recommend using "mkmip" on your texture to optimize rendering.
  * Revamping of the HTML documentation.
  * In all three renderers, support of the RIB Procedural primitives 
    DelayedReadArchive and RunProgram.
  * slctell - make the output more similar to that of PRMan's "sloinfo".
  * slctell/libslcargs: slc previously compiled the initializers of colors
    in such a way that libslcargs couldn't tell what the default values
    were, even for fairly trivial cases.  This is fixed now -- you should
    notice that slctell (and any program you write using libslcargs) now
    are much better at reporting the default values of color parameters.
  * The example shaders and scenes have been changed somewhat.




Summary of changes from 2.3.5 to 2.3.6 (January 1998)
-----------------------------------------------------
slc / runtime SL interpreter:
  * To avoid confusion with DSO's, slc now names compiled shaders
    with the extension ".slc" instead of the poorly chosen ".so".
    Rendrib will still read the old .so files.  To go along with this
    change, the old "sotell" and "so.h" have been renamed to "slctell"
    and "slc.h", respectively.
  * To keep compatibility with PRMan, the direction of "I" inside an
    atmosphere shader is the same as in the surface shader (it used to
    be opposite sign).  Watch out for this change in your existing
    volume shaders!
  * Shader functions now compile to slightly faster code, and also are
    now truly call-by-reference as the spec says (before they were
    call-by-value-return, which is very subtly incorrect).
  * Removed restriction on max # of labels in a compiled shader.  This
    previously prevented some very large shaders from compiling.
  * Better support of vector/normal types (transform correctly, etc.).
  * The fresnel() function has been fixed -- previously, the returned
    Kt value was simply 1-Kr, but now it's the correct physical amount.
  * The shader interpreter now correctly handles hsv->rgb and hsl<->rgb
    color transformations (it didn't know about these before).
  * Bug fix: opposite/adjacent now work -- for some reason, the compiler
    didn't accept them before.
  * Bug fix: though diffuse() and specular() responded to the __nondiffuse
    and __nonspecular parameters to lights (as described in the PRMan 3.5 
    documentation), phong() did not.  Now phong responds correctly.
  * Bug fix: incorrect compile for color / color and point / point. [2.3.5a]
  * Bug fix: incorrect compile for certain space transformations. [2.3.5a]
  * Bug fix: vtransform didn't understand about "NDC" space. [2.3.5b]
  * Bug fix: "screen" space transformation were wrong, as they were
    not independent of field of view. [2.3.5d]
  * Bug fix: Du() and Dv() of a point thought they were returning a
    float, rather than a vector/point. [2.3.5d]
  * Bug fix: incorrect code was generated for a=b=c expressions. [2.3.5d]
  * Bug fix: default point shader parameters (i.e. those *not* specified
    on the RiSurface line) were sometimes transformed incorrectly.
  * Bug fix: lightsource() didn't work properly. [2.3.5f]
  * Bug fix: Interior and Exterior shaders didn't work quite right.  Now
    they run on the results of any trace() rays, using the Int/Ext shaders
    of the object that did the tracing, not the object that the traced
    rays hit (if you catch my drift).
  * Bug fix: st coordinates weren't mapping correctly for triangles
    (3-sided Polygons). [2.3.5f]

rendrib:
  * When rendering to the display, if instead of hitting 'ESC' to exit,
    you hit 'w', rendrib will write the window as an image file.
  * Area lights have been enhanced and debugged, and should now produce
    more accurate, less noisy images.  Big improvements should be 
    especially noticable for area lights composed of cylinders or spheres.
    Warning: in the process, some changes to area light shaders were
    necessary -- see the new arealight.sl for a correct example of how
    to code area lights.
  * The dicing strategy for bicubics/NURBS has been altered slightly
    because it was underestimating dicing rates for patches which
    were mostly flat, but had parametric distortions.  This may increase
    dicing rates even for objects which didn't need it before, possibly
    making certain bicubics and NURBS a little more expensive than before.
    But the results are more correct, and you can use either ShadingRate
    or Attribute "render" "patch_multiplier" to reduce tesselation rates.
    But the good news:  bicubics & NURBS are now handled in a way that's
    a bit more efficient in memory usage.
  * Fix to radiosity parameters: there was an inconsistant use of
    "patchsize", "elemsize", "minsize".  Now these are expressed in
    units of the current coordinate system in effect at the time of
    the Attribute "radiosity" statement.  (This is the intuitive way
    that everybody probably always expected it to work.)
  * There was a 1/2 pixel offset disparity between BMRT images and
    PRMan images.  This was noticable if carefully compositing images
    together from the two renderers.  They now match exactly.
  * Bug fix: Large displacements on quadrics resulted in screwed up
    s,t,N on the surface.
  * Fixed bug for user "uniform" vertex variables for polygons,
    points polys, and points general polys.  [2.3.5a]
  * Issue error message for palette TIFFs as texture maps (used to
    silently give wrong results for palette images).  [2.3.5a]
  * Bug fix: RiOrientation outside the world block, and before any
    transformations at all, would cause a crash. [2.3.5a]
  * Bug fix: 16 bit TIFF output was broken under Linux. [2.3.5b]
  * Fixed bug that under extremely rare texture mapping circumstances,
    would crash rendrib. [2.3.5b]
  * Fixed bad bug (new to 2.3.5) which incorrectly calculated dicing
    rates for bicubics behind the camera, resulting in huge memory 
    waste. [2.3.5b]
  * Yet another subtle fix to polygon handedness under certain 
    conditions. [2.3.5b]
  * Bug fix: incorrect behavior of Exposure for framebuffer display renders.
  * Bug fix: Transform acted like ConcatTransform when motion 
    blurred. [2.3.5d]
  * Bug fix: Matte objects (using RiMatte(1)) sometimes behaved incorrectly.
    [2.3.5d]
  * Bug fix: user-supplied "st" values did not interpolate correctly
    for patch meshes with >1 patch.  Other primitive types, and params
    other than "s" and "t" were not affected by the bug.[2.3.5d]
  * Bug fix: torus rendering would, very rarely, enter into an infinite
    loop. [2.3.5e]
  * Bug fix: Made NURBS rendering more robust to numerical precision errors
    (prompted by strange renderings of some objects exported by
    Rhino). [2.3.5e]
  * Bug fix: Varianced-based sampling (which I don't recommend using anyway)
    made "hot pixels".  [2.3.5f]
  * Bug fix: true displacements on NURBS weren't setting their normals
    properly.

rgl & rendribv:
  * rgl and rendribv now maintain full attribute stack, so they get nested
    attributes (like colors) correct now.
  * rgl has been considerably sped up (due to GL call esoterica).
  * The "image fidelity" of rgl has been greatly improved, particularly
    in correctly previewing handedness, sidedness, and lighting.
  * New options to rgl: -dumprgba, -dumprgbaz, -1buffer, -offscreen allow
    various options related to saving rgl images as files rather than 
    only sending them to the display.  Read the manual for details.
  * Eliminated unnecessary warnings about invalid RiIlluminance handles.
  * rgl: Fixed a longstanding bug that sometimes displayed the image 
    incorrectly or strangely offset.  [2.3.5e]

Client library (libribout.a):
  * Opens a pipe if the first char of argument to RiBegin is '|' (much
    like file opening conventions in Perl).

Miscellaneous:
  * Overhauled organization of the RIB parser to once and for all get
    rid of any limitations on parameter list lengths, etc.  The parser
    can now handle truly collossal RIB files (~1Gb with no problem).
  * Fixed RIB parser: it previously got confused by comments (#)
    that occur in the middle of a multi-line RIB statement.  Now it
    works the right way. [2.3.5c]
  * Many fixes to the RIB parser's ability to correctly parse binary RIB.
  * A new program, "composite", does simple alpha compositing of images
    rendered using BMRT.  Please check the HTML docs for details.




Summary of changes from 2.3.4 to 2.3.5 (Jan 1997)
-------------------------------------------------

slc / runtime SL interpreter:
  * Fixed bug that prevented assignment of strings in shaders.  (Passing
    strings in was okay, but you couldn't reassign their values.)
  * Bug fix: slc reported argument errors for the "distance" function,
    even when it was being used correctly.

rendrib:
  * Limited support of true displacements!
    (use Attribute "render" "truedisplacement" [1]).
  * Finally fixed some very subtle problems with handedness and one sided
    primitives.
  * Now supports arbitrary filter support sizes.  Previously, there was
    a bug which restricted filter supports to a max of 3 pixels.
  * Fixed bug: previously, objects' screen space bounding boxes were not
    properly expanded for DOF effects.  This occasionally "clipped" regions
    when extreme blur was used.
  * New options: "limits" "texturememory" and "limits" "geommemory".
  * New attributes: "light" "nsamples" [n] (allows you to increase sampling
    of an area light independent of PixelSamples).
  * Vertex variable interpolation is now done correctly for bicubics and
    NURBS.  Note that NURBS now interpolate user "varying" variables in
    the same way as PRMan 3.6 and later, *NOT* in the obsolete way that
    PRMan 3.5 and earlier used.
  * Fixed bug that dumped core when rendering a scene with zero objects.
  * Fixed incorrect rendering of tori for wacky combinations of negative
    thetamax, phi, radii, etc.
  * Fixed a bug that sometimes caused a floating point error/crash
    when using object instancing (only showed up on Linux).
  * Attribute "trimcurve" "sense" is now understood.
  * Fixed bug in RiSkew that transformed incorrectly if the two vectors
    passed to RiSkew were not perpendicular.
  * Fixed bug that computed incorrect derivatives for triangles.
  * Improved SL calculations of derivatives in a way that avoids some
    subtle errors that the software was previously prone to.

rgl & rendribv:
  * Fixed bug in RiSkew that transformed incorrectly if the two vectors
    passed to RiSkew were not perpendicular.

client library (libribout.a):
  * Fixed a bug that incorrectly freed memory if you made many calls
    to RiBegin/RiEnd.
  * Fixed a bug in RiPatchMesh that expected the wrong number of varying
    arguments (like "N") for bilinear patch meshes.

libsoargs:
  * To match PRMan, SO_GetName now returns the shader name, not the
    shader *file* name.

Miscellaneous:
  * The BMRT user manual is now distributed in HTML.
  * For all RIB-eating programs, BMRT now supports RiReadArchive (just
    like PRMan 3.6) as an include mechanism for RIB files.  The old
    ##Include is no longer supported, being completely replaced by
    RiReadArchive!
  * libsoargs.a: Fixed a bug that sometimes caused certain parameters
    of the shader to not be reported.
  * Improved error reporting of RIB parsing errors and unknown
    option/attribute tokens.




Summary of changes from 2.3.3 to 2.3.4 (June 1996)
--------------------------------------------------

slc / runtime SL interpreter:
  * No longer required that parameters be initialized to constants.
    Now any expressions are okay for parameter initialization.
  * Fixed bug that did not allow assignment to function parameters.
  * Rendrib occasionally got confused between displacement and surface
    shaders' "shader" space.  Now fixed - shader spaces should be correct.
  * Rendrib previously didn't handle shaders with >64 parameters.  Now
    it's unlimited.
  * Fixed bug in fresnel(), which was calculating the transmission
    direction incorrectly.
  * The highlights produced by specular() now more closely approximate
    those by PRMan (which does not use the standard specular function).
    You can revert to the old (standard) behavior using Option "render"
    "prmanspecular" [0] (details are in the docs).

rendrib:
  * Fixed outstanding bugs with object instancing, and now object
    instances calculate their radiosity correctly.
  * Fixed bicubics that specify homogeneous points ("Pw").
  * Fixed handedness errors -- normals should all be correct now.
  * Vertex variables finally working properly!  Bugs regarding vertex
    variables are fixed, and the parser and client library are also a bit
    better at catching errors regarding vertex parameters.
  * NURB and patch mesh parameterization should now be correct (before
    it always parameterized on [0..1] for each patch).
  * Improved quadrics when radius < 0, zmin > zmax, thetamax < 0, and
    other strange circumstances.
  * Bug fix: behavior was wrong for Option "radiosity" "minpatchsamples".
  * Improved dicing of small bicubics & NURBS.
  * Attribute "light" "cache" "off" no longer needed for volume shaders
    to work correctly -- rendrib figures out itself when it can cache
    light values.
  * GeneralPolygons with holes are fixed (previously, the holes were
    not always shaped correctly).
  * Interior & exterior shaders were not necessarily called correctly.
    Now they are correctly called based on the surface normal.
  * Bug fix: RiTransform inside a motion block caused a core dump (but
    all other blurred transformations were okay).  Now fixed.
  * Better behavior for crop windows: only output pixels inside the crop.

rgl & rendribv:
  * Fixed bug that drew tori incorrectly.
  * Bug fix: RiTransform inside a motion block caused a core dump (but
    all other blurred transformations were okay).  Now fixed.
  * Fixed bicubics that specify homogeneous points ("Pw").

Miscellaneous:
  * New example scenes: smoke/atmospheric effects, dresser/specular-to-
    diffuse illumination, teapots/glass and shiny examples.
  * New shaders: clamptoalpha, glass, wood2, wallpaper_2stripe, noisysmoke.
  * Fixed parser bug that sometimes dumped core with a particular
    combination of ##Include, EOF, and gprims.




Summary of changes from 2.3.2 to 2.3.3
--------------------------------------

slc / runtime SL interpreter:
  * Support for the new SL features introduced with PRMan 3.5,
    including: min/max with >2 arguments;  point and color args for
    min, max, clamp;  optional basis string for spline;  ptlined;
    filterstep;  message passing between shaders.
  * Fixed compiler bug which choked on certain expressions involving
    constant color triples (e.g., f * color (1,1,1) ).
  * Better function polymorphism (makes better guesses about the
    return type of noise() and texture() when you don't explicitly cast).
  * Working Deriv() function.  In fact, to the best of my knowledge,
    all documented SL functions now work properly.
  * slc accepts cpp arguments (like -I to give include path).
  * Fixed SL interpreter runtime bugs on the DEC Alpha.
  * Transformations from & to "screen", "raster", and "eye" spaces
    are fixed, as well as named coordinate systems.

rendrib:
  * New -zoom <scale> command line switch, lets you "zoom up" pixels
    when used in conjunction with -d switch.
  * Uses OpenGL for framebuffer display, and supports framebuffer
    display for non-SGI platforms (using the Mesa library).
  * Fixed bug that made CSG objects display incorrectly when used in
    conjunction with the -d flag, where the argument was > 1.
  * Named coordinate systems now work properly (were broken before).
  * New -pos <x> <y> command line option forces position of window
    for rendering to framebuffer.
  * Fixed minor errors with radiosity meshing for tori and spheres.
  * Parser is a bit smarter with undeclared tokens -- instead of
    crashing, it tries hard to extract values anyway.
  * Fixed obscure bug involving calculation of NURBS and bicubic
    bounds.  It didn't appear to render incorrectly, but the bounds
    weren't as efficient as they could have been.
  * Fixed bug which caused >4 sided polygons to have parts missing.
  * Removed many of the fixed limits in sizes of arrays which can be
    read by the parser (mostly problems with for PointsPolygons).

rendribv:
  * Now uses color by default, but has -nocolor option, and
    default background is now {.1,.1,.1} instead of {0,0,0}.

rgl:
  * Now uses OpenGL.
  * rgl now distributed for many non-SGI platforms (using the
    Mesa library to implement the OpenGL calls).

libsoargs:
  * Fixed bug where files didn't close when libsoargs was done with them.
  * SO_SetShader incorrectly returned 1 for okay, 0 for error.  Now it
    correctly returns 0 for okay, -1 for error (to match Pixar's library).
  * The svd_detail field of SOvissymdef records were sometimes incorrectly
    set to SO_DETAIL_UNKNOWN.  This has been fixed.
  
libribout:
  * Fixed but with output of Quantize directive.






Summary of changes from 2.3.1 to 2.3.2
--------------------------------------

rendrib:
  * Trim Curves fully supported!
  * Optimizations for rendering NURBS and bicubics (now are much faster,
    especially when the patches are mostly flat).
  * Improved RiOrientation.
  * Fixed bug with bicubic height fields.
  * Improved texture filtering.
  * Accepts absolute paths for shader names.
  * Bug fixed -- all standard parameters work for all polygons.
  * Radiosity bug fixed -- previously handled 1 sided surfaces with
    reversed handedness incorrectly.
  * Radiosity bug fixed -- normals at sphere's poles not computed correctly.

slc / runtime SL interpreter:
  * setcomp() fixed.



