## Entropy™ 3.1
Release Notes

####
May 28, 2002

## Contents

> Introduction
> Release Contents
> Getting Started
> Documentation and Technical Support
> Known Issues
> Revision History
> Copyright and Trademark Information

###

## Introduction

> Entropy™ is a robust, flexible, high-quality rendering system that incorporates the speed and low memory use of scanline renderers and the realism afforded by global illumination renderers. It supports a wide variety of geometric types, programmable shading, soft shadows, automatic dynamic tessellation, indirect illumination (sometimes, erroneously, known as radiosity), multithreading, high-quality antialiasing and motion blur, and a host of other powerful features that make it possible to make images of unparalleled quality and realism.

> Entropy 3.1 comes bundled with integration for Discreet's 3ds max. For details on 3ds integration, please see the 3ds Integration Release Notes.

> Entropy uses APIs that are very similar to those described in the RenderMan Interface Specification published by Pixar Animation Studios. However, neither Exluna nor Entropy are associated with Pixar, and no claims are made that Entropy is in any way a compatible replacement for PhotoRealistic RenderMan. Despite this fact, you may find that most applications, scene files, and shaders written to conform to the RenderMan Interface may be used with Entropy without modification.

## Release Contents

> T he Entropy 3.1 distribution consists of the following files and folders:

> index.html | this file
> License.txt | Entropy License Agreement
> .entropyrc | Entropy defaults file
> doc/* | documentation
> examples/* | example input scenes and developer resources
> lib/* | renderer interface libraries
> shaders/* | compiled shaders
> shadersrc/* | shader source files
> texture/* | texture maps
> bin/* | executable programs
> bin/entropy | Entropy renderer
> bin/sle | shading language compiler
> bin/iv | image viewer
> bin/rgl | fast OpenGL scene previewer
> bin/mkmip | tiff to tiled texture converter
> bin/unmkmip | texture to TIFF converter
> bin/sletell | print information about compiled shader
> bin/slpp | shading language preprocessor (called by sle)
> etc/* | licensing and other administrative files
> etc/license.dat | Entropy license file
> etc/lm* | FLEXlm programs and administration utilities
> etc/exlunad | Exluna FLEXlm daemon

###

## Getting Started

> For information on installing, licensing, and using Entropy, see Getting Started (Windows) or Getting Started (Linux/Irix).

## Documentation and Technical Support

> The Entropy Technical Reference Manual fully documents Entropy's input syntax, APIs, usage notes, and the like.

> 30 days of installation and licensing technical support is included in your purchase of Entropy. To contact technical support with an installation or licensing question, send email to support@exluna.com detailing the exact nature of your problem.
> We greatly appreciate any and all feedback from our customers. If you have a comment, suggestion, or have found a bug, please contact us at support@exluna.com.

> Technical support on issues other than installation or licensing, or extending the period of installation support past 30 days, requires a support contract. Further details may be obtained online, or by emailing sales@exluna.com.
> A wealth of online information related to Entropy, including FAQs, newsgroups, bulletin boards, and the like, exist online. For more information, see Exluna's Entropy FAQ and Related Links pages.

## Known Issues

> Entropy includes a number of advanced features unavailable in other rendering systems. Please see the Entropy Technical Reference Manual for a discussion of the differences between Entropy and other RenderMan-friendly renderers.

> Miscellaneous Known Issues

> > AreaLightSource can only be applied to objects that have a 2D parameterization -- Patch, NuPatch, Polygon, and all quadrics (Sphere, Cylinder, etc.). Primitives that don't have an overall 2D parameterization (PointsPolygons, PointsGeneralPolygons, SubdivisionMesh, Curves, Points) cannot currently be used as area lights. This restriction will be removed in a following release.

> > Interior, exterior, and imager shaders are not working in this release. We hope to issue a patch soon to re-enable these features.

> The following optional features are not supported in this release of Entropy:

> > Subdivision surface creasing
> > CSG

## Revision History

> ### Changes in 3.1 Release 6 (May 28, 2002)

> - Fixed incorrect interpolation of vertex parameters on triangles when ray tracing (actually fixed in 3.1R5 but undocumented).
> - Max plugin: lights with squared falloff are no longer incorrectly culled in some situations.
> - The Max plugin is now extra sure that "constant" surface shader is used for shadow passes when using entropy material (actually fixed in 3.1R5 but undocumented).
> - Fixed incorrect ray distance to scaled RiSphere's (762).
> - Blobby 'multiply' ops now work correctly.
> - `isindirectray()` now correctly returns 1 when rendering frames that only have depth outputs (497).

> ### Changes in 3.1 Release 5 (May 10, 2002)

> - Nested ternary operators (?:) could sometimes generate incorrect code when compiled by sle. (816)
> - Fixed incorrect date stamps in TIFF file headers. (833)
> - Modified `uberlight.sl` so that passing `intensity=0` will not cause a divide-by-zero error.
> - Fixed that sometimes shader runtime errors would not report the source file and line. (838)
> - Fixed bug wherein binary RIB piped to `entropy` behaved badly (binary RIB read as files was always okay).
> - Fixed multithreaded bug. (831)
> - Fixed incorrect message passing between displacement and surface shaders for ray-traced Curves. (828)
> - Fixed assertion failure for NURBS area lights. (863)
> - `libribout` wasn't outputting the right number of "facevarying" items for SubdivisionMesh, PointsPolygons, and PointsGeneralPolygons. (864)
> - Max plugin: lights with squared falloff are no longer incorrectly culled in some situations.
> - The Max plugin is now extra sure that "constant" surface shader is used for shadow passes when using entropy material.

> ### Changes in 3.1 Release 4 (April 12, 2002)

> - `output varying` shader parameter now initialize their default values properly (675).
> - The `tiff` and `iv` display servers were fixed to ensure that gain and gamma only affect color channels, not alpha. (778)
> - The `noise` function had an incorrect pattern for the evaluation version of Entropy. (774)
> - Fixed a bug in the built-in "shadow" display server that crashed if the shadow map y resolution was greater than its x resolution. (791)
> - Fixed a bug where DSO shadeops got corrupted data for numeric arguments that followed string arguments, only if the shadeop had void type. (805)
> - Arbitrary output variables now work from RiPoints primitives. (809)
> - A multi-threading bug on certain linux kernels has been worked around.

> ### Changes in 3.1 Release 3 (March 8, 2002)

> - sletell now handles the current .sle file version correctly. (773)
> - '#' characters incorrectly used as comments in shaders confused line counting & error reporting. (756)

> ### Changes in 3.1 Release 2 (March 4, 2002)

> - Runtime shader errors (like divide by zero) now print the filename and line number of where the error occured in your shader. (633)
> - RunProgram procedurals now correctly search for the program using the procedural searchpath, NOT the ordinary execution path. (696)
> - Quadrics didn't correctly interpolate "vertex" primitive variables (718)
> - The occlusion() shadeop had a default "bias" of 0, which resulted in many artifacts for environment lighting. The default bias for occlusion calls has been changed to the global bias (set by `Option "shadow" "bias"`). The envlight.sl and ambocclude.sl shaders have had a "bias" parameter added so this can be set directly as well. (747)
> - .sle files compiled on Windows couldn't be read properly on Unix.

> ### Changes in 3.1 Release 1 (February 25, 2002)

> Major New Features:
> - Depth of field is now supported. (534)
> - The "interpolateboundary" tag is now supported by subdivision surfaces.
> - Blobby primitives are now partially implemented. Specifically, the ellipsoid primitive is fully supported, as are almost all blending operators (add, multiply, min, max, and subtract). Blobby's may be motion-blurred. Blobby's may be ray-traced. All parameter types should work for both "uniform" and "varying" interpolation.
> - Environment lighting: There is a new SL function, `occlusion()`, that computes the hemispherical occlusion at a point. This is extremely useful for HDR Environment Lighting, as demonstrated in a new `envlight.sl` shader. See the Technical Reference Manual Sections 11.5 and 5.6.8 for details.
> - "facevarying" interpolation type allows PointsPolygons and SubdivisionMesh primitives to have variables whose values at each vertex may be defined separately for each face. (542)
> - User options and attributes: `Option "user" token value` and `Attribute "user" token value` enter user data into the option and attribute state. The user attributes push and pop with the usual `AttributeBegin/AttributeEnd` semantics. These options and attributes may be retrieved from shaders using the `option()` and `attribute()` functions. More details can be found in the Entropy Techincal Reference Manual, Sections 3.1.3, 3.2.2, and 5.6.10.
> - `ClippingPlane` command allows arbitrarily-placed and oriented clipping planes.
> - unmkmip program converts Entropy texture files, latlong environments, and cubeface environments into ordinary scanline TIFF files.
> - "shadow" display server is now built in, allowing you to write shadow maps directly, without having to create intermediate zfiles. (251)
> - New controls for ray tracing functions: "Phit", "Nhit", "maxhitdist", "hitdist", "alpha". See the Entropy Technical Reference Manual, Section 5.6.7 for details. (680)
> - "solve" splines: In shaders, the spline() function now understands the inverse spline types "solvelinear", "solvehermite", "solvecatrom", "solvebezier", and "solvebspline". (125)
> - New dicing control attributes: `Attribute "dice" "maxscanlinecurvature"` and `"maxraytracingcurvature"`. These replace some more clunky attributes that we experimented with in earlier betas. See the Entropy Technical Reference Manual for details on their use.
> - Shadow maps now support the "max" and "average" filters (previously only the "min" filter was supported for depth information).
> - Motion-blurred ray-traced shadows and reflections (turned on for surfaces with `Attribute "render" "motionrays" [1]` or for lights with `Attribute "light" "motionrays" [1]`.
> Performance Improvements:
> - Overall, Entropy 3.1 is about 20% faster than Entropy 3.0.
> - Ray tracing has been sped up for certain cases.
> - `sle` performs much more aggressive dead code elimination. This is especially beneficial for "machine-generated" shaders. (605)
> - Shadow map access is now much faster, especially for shadow maps with large empty areas.
> - Motionfactor is now supported. Shading rates are adjusted automatically for motion-blurred objects. This is accessible with `Attribute "dice" "motionfactor"` (see the documentation). It also works with the older `GeometricApproximation` command.
> - Rendering of motion-blurred geometry has been sped up considerably.
> - RIB parsing has been sped up (especially on Windows). (524)
> - Backface culling has been enhanced. There are now a speed advantage to having geometry with `Sides 1`. (314)
> - `PointsPolygons` now render much faster and use much less memory.
> - Object instancing has been sped up.
> Enhancements and other additions:
> - `iv` can display files (including textures) that use the TIFF "planarconfig separate" (in addition to the more standard "planarconfig single" mode).
> - Entropy now accepts the TIFF textures generated by PRMan 10. PRMan 10 textures are also displayable by "iv".
> - Entropy textures now use "deflate" compression, yielding smaller texture files than before.
> - The `LightSource`, `AreaLightSource`, and `Illuminate` RIB commands now take either numeric "light handle" id's (as they always did), or string id's (a la PRMan 10).
> - Shadow map lookups now have improved sampling; shadow maps often look much better now.
> - Objects that cast ray-traced shadows are now opaque by default (it used to run the surface shader in many cases, which was very expensive). This can be overridden with `Attribute "render" "casts_shadows"`.
> - `illuminance` loops are now allowed inside displacement shaders, so that messages can be passed from lights to displacements. Be very careful when using this functionality -- make sure not to call lights that do ray tracing, as cyclic dependencies can result. (682)
> - In shaders, the comp() function now checks to make sure that the index is in the proper range.
> - When the scene has moving objects but no `Shutter` statement (or when both shutter times are identical), `dPdtime` will still contain the motion vectors even though the objects do not blur. This is very useful for creating output channels with movement data for post-process motion blur effects.
> - Environment variables may be embedded in the path strings passed to `Option "searchpath"`. The constructs `$var`, `${var}`, `$(var)`, or `%var%` are replaced by the value of environment variable `var`, if it exists.
> - The `entropy` program now returns error code 13 if it fails because no licenses were available. (As before, rendering to completion returns 0, all other errors return a code of 1.)
> - To facilitate environment lighting, the `mkmip` program takes new options: `-lightprobe` converts floating point TIFF spherical map files (see http://www.debevec.org/Probes for the angular formulas) into cubeface environment maps, and `-twofish` converts two opposite-view fisheye lens images into a cubeface environment map.
> Shader and texture changes:
> - Out-of-the-box HDRI environment lighting support: A new `envlight` light source shader implements easy HDRI environment lighting with local occlusion. A `ambocclude` shader is included if you want to calculate the local occlusion as a separate rendering pass. (See the Entropy Technical Reference, Section 11.5, for details.)
> - The `caustic` and `indirect` lights now have an "intensity" parameter that scales the overall intensity of the caustic and indirect light effects, respectively.
> - The `office1.env` environment map has been touched up so that the seams between captured views are less visible.
> Bug fixes:
> - Several texture mapping bugs were fixed that sometimes caused overblurring or underblurring of texture lookups, especially for environment maps.
> - A bug was fixed that caused some NURBS to "underdice". This caused some fine features to disappear, and sometimes caused overblurring of the surface textures. While this underdicing is now fixed, some frames are more expensive to render as a result (because Entropy is now shading the proper amount, rather than too little).
> - Environment maps now handle large blurs properly, even when the blurred areas cross face boundaries. (277)
> - Previous versions could run out of file handles for RunProgram procedurals.
> - Curves could crash in a frame with a nonzero open Shutter, but with no actual Motion blocks. (710)
> - LightSource bombed with long shader name. (709)
> - Fixed a bug where although lights were skipped (e.g., when running opacity checks for shadow rays), the body of the illuminance loop in the surface shader was still executed.
> - TIFF display drivers now always output XPOSITION/YPOSITION tags, rather than only when rendering crops. (677)
> - Subdivision surfaces now interpolate "varying" parameters correctly (previously they incorrectly had the same behavior as "vertex")
> - Bad clamping caused specular() to return negative values in some circumstances (663).
> - iv now displays 1-channel float TIFFs properly (657).
> - If NURBS with nonmonotonic knot values are detected, they are corrected and a warning is issued, instead of failing. (655)
> - Fixed very rare crash bug. (654)
> - Uniform parameters on Curves are now parsed and interpolated as one value per curve. Uniforms that appear to have one value per curve-segment are checked for consistency and converted at RIB parse time.
> - Fixed a problem that prevented proper writing of indirect seed/save files (653).
> - Fixed SL bug that occasionally caused message passing between displacement and surface shaders to work incorrectly. (652)
> - Fixed SL bug that sometimes caused conversion of colors between "rgb" and "hsl" space to result in NaN's.
> - Fixed SL bug wherein the "alpha" parameter to texture/environment could get its values filled in incorrectly if the call was inside a varying "if".
> - Fixed self-intersection problems with rayhittest(), occlusion(), visibility(), and fulltrace(). (648)
> - Shadersare no longer loaded multiple times if they are specified with full paths (rather than just by shader name) (634)
> - Fixed a subtle code optimization bug in sle that resulted in rare strange behavior with loops (630)
> - Numerical tolerance issues on SGI sometimes produced NaN's in specular() when used in conjunction with a light source that used solar() with no arguments (631) .
> - Fixed some numerical tolerance issues for backface culling. (627)
> - Fixed bug with latlong environment maps having a visible longitudinal seam. (625)
> - Shaders didn't properly interpret the '\\' escape sequence in string literals. (618)
> - Shadow mapped shadows were blurrier than they should have been. (613)
> - fixed sle bug that could generate incorrect code for certain *=, +=, etc., assignments involving arrays. (619)
> - Important intermittent crasher bugs have been fixed.
> - RiCurves with Bezier basis were broken. (591)
> - Displacement now works properly for `Curves` and `Points` (it didn't in 3.0).
> - `sle` now correctly reports errors when you try to assign to non-`output` function parameters. (163)
> - `sle` previously generated incorrect code for double array assignments, like "`a[i] = b[j] = foo`". (596)
> - `libribout` texture generation routines (like `RiMakeTexture`) didn't correctly pass on their token/value parameters. (600)
> - `mkmip` didn't correctly set the "fovcot" field when using the "down" or "round" resize modes (it was correct for other resize modes). (601)
> - `MakeTexture` did not properly recognize inline declarations of its token/values (602).
> - The `textureinfo()` shader function mixed up `"viewingmatrix"` versus `"projectionmatrix"` (607)
> Documentation changes:
> - The Entropy Technical Reference Manual has been updated in many areas, and is worth printing and reading, even if you read the original 3.0 documentation.
> - General: documented all the additions and changes described above as new features and enhancements.
> - Chapter 7: documented the various built-in display servers.
> - Chapter 10: documented new mkmip options and documented the new unmkmip program.
> - Chapter 11: More discussion on selection of indirect illumination parameters and multiple techniques for environment lighting.
> - Clarified that `"bias"` parameter to ray-traced environment lookups may be `varying` (the manual had implied that the `"bias"` must be `uniform)`

> ### Previous Releases

> > Entropy 3.1 Beta 7: February 14, 2002
> > Entropy 3.1 Beta 6: February 8, 2002
> > Entropy 3.1 Beta 5: January 29, 2002
> > Entropy 3.1 Beta 4: January 4, 2002
> > Entropy 3.1 Beta 3: December 21, 2001
> > Entropy 3.1 Beta 2: December 14, 2001
> > Entropy 3.1 Beta 1: December 7, 2001
> > Entropy 3.1 Alpha 3: November 17, 2001
> > Entropy 3.1 Alpha 2: November 2, 2001

## Copyright and Trademark Information

> Entropy™ is a trademark of Exluna, Inc. The Entropy software is:

> > Copyright © 2002, Exluna, Inc. All rights reserved.
> > Portions Copyright ©1990-2000 Larry Gritz.

> slpp is a renamed, unmodified version of the Free Software Foundation's "cpp". The full source code for cpp, including additional notes and credits, is available online, or from Exluna, Inc. upon request. You may distribute and/or modify slpp/cpp under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation.
> pthreadVCE.dll is part of the Pthreads-win32 package, which is distributed under the GNU Library General Public License (LGPL). Full information on Pthreads-win32, including credits and information on obtaining updates, is available from http://sources.redhat.com/pthreads-win32/
> The full text of the GPL and the LGPL may be found online (see www.gnu.org), or from the Free Software Foundation, 59 Template Place, Suite 330, Boston, MA 02111-1307, USA.
> RenderMan is a registered trademark of Pixar Animation Studios.