PhotoRealistic RenderMan 11.3

Release Notes

March, 2003


Introduction

These release notes describe significant changes and enhancements to the RenderMan® Toolkit for the 11.3 release over the 10.0 release.

Combined Shading

The renderer now has the ability to shade several geometric primitives at the same time, provided that you follow a few simple rules when writing shaders. If you follow these rules, small objects such as leaves, grass blades, hairs, pebbles, etc. will shade up to 4-5 times faster (in the limiting case where the objects are far away, and are diced into a single micropolygon each). This can speed up the overall rendering times for complex scenes by up to a factor of 3. Even in moderate cases, where individual objects turn into 20 or 30 micropolygons each, your shaders can execute up to twice as fast.

Tentative Hiding

PRMan 11 now attempts to resolve visibility in its entirety before shading. In nearly all cases this causes a frame to render faster. Only in the case of displaced geometry will PRMan 11 maintain the old behaviour, and in this case hiding can be controlled via a new Hider "occlusionbound" parameter.

Eyesplit Improvements

PRMan no longer discards primitives that reach the eyesplits limit. Primitives that reach the eyesplits limit are split further by a threshold value (controllable by an option), and then immediately diced. This can result in decreased image quality (and a warning to this effect will be issued), but typically leads to much better results than the old behavior of discarded geometry.

Curve Optimizations

A new Attribute for curves makes thin hair-like curves much cheaper to shade, and more memory efficient especially when spanning multiple buckets:

Attribute "dice" "hair" [1]

This attribute should only be used for curves which are truly hair-like (very thin in screen space).

Deep Shadowmaps

Support for "deep shadowmaps" has been added. This new output format stores more information per pixel than a normal shadowmap, and thus allows for better antialiasing, semi-transparent shadows, and limited cases of motion blurred shadows when used instead of normal shadowmaps.

Creation of these new shadow files is achieved with a new display driver, deepshad, while the shadow() shadeop has been upgraded to support deep shadow maps directly. 

Shadowmap Improvements

The renderer now significantly optimizes for the case of shadow maps which contain large empty regions.

The renderer now has improved filter behaviour when making shadow map calls. This may result in significantly different shadows between PRMan 10 and 11 (this is most noticeable when making 4-point shadow() calls) , but should lead to fewer self-shadow artifacts and better looking shadows.

Micropolygon caching

Previous versions of PRMan tried to prevent the number of micropolygons resident in memory from growing too large. In particular, the extreme displacement strategy was employed; however, while it was effective at reducing the memory footprint, extreme displacement resulted in redundant shading computation and longer render times.

Version 11.0 of PRMan now provides a new strategy: it will cache transient micropolygons to disk when it is detected that there are a relatively large number of them. By default, caching is activated once more than 6MB of transient micropolygons have been created.

Micropolygon caching can be controlled through several new hider options.

Subdivision Mesh Stitching

PRMan 11.0 allows two subdivision surfaces to be joined together seamlessly along a shared boundary curve, in order to ensure that no holes appear between seams even under extreme deformation or displacement. More details are provided in the user manual.

Double-sided Shading

Two-sided primitives can now be shaded twice, once on each side, using the new Attribute "sides" "doubleshaded".

Shader Profiling Images

A new variable that can be used in conjunction with arbitrary output images has been added that allows the renderer to create an image that profiles how long it takes to shade each micropolygon as it renders:

Display "+costfilename.tif" "tiff" "__CPUtime"

A new tiff utility program called tiffnorm can then be used to convert the data in the cost file, which stores the amount of time it took to shade each micropolygon in seconds, to an easily displayed and modifiable 8-bit tiff image. tiffnorm -q input.tif will dump the size and mix/max values of the cost image to stderr. tiffnorm -m input.tif output.tif will output a psuedo-color image scaled to the min/max values in the cost image. The user can also scale the image manually with the -l [minval] and -h [maxval]. tiffnorm -help will give a brief list of command options.

Cross Platform Shading Language Preprocessor

An RSL preprocessor is now part of our distribution and can be relied upon as a uniform preprocessor across platforms for shaders compiled with shader. $(RMANTREE)/etc/slpp is ANSI-C compliant and supports C++ style comments.  We encourage pre-processor standardization for RSL programs but if your shaders don't compile with this release, simply remove slpp from your distribution and the old behavior will be restored. The shader compiler also now defines the following preprocessor constants: __PIXAR__, __PRMAN__, and __PRMAN_RELEASE__=XXYY, where XX is the major and YY is the minor release number (i.e. 1100). It also now accepts the "-E" flag which prints post-preprocessed shader code.

Non-Raster Oriented Dicing

Non-raster oriented dicing, introduced in PRMan 10.0 for NURBs, has also been implemented in PRMan 11.0 for subdivision surfaces, bicubic patches, and bilinear patches.

Hider Motion Sampling

A new Hider "samplemotion" parameter has been added which allows the sampling of motion blurred micropolygons to be disabled. This allows for faster rendering of heavily motion blurred pictures, while still allowing the dPdtime variable to be computed as a separate arbitrary output variable pass (for use in postprocess motion blurring).

Miscellaneous Changes

Bug Fixes

Limitations

PRMan 11.3 Changes

PRMan 11.1 Changes


 

 

Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.