Prev | Next



PRMan 15.0 Release Notes

Welcome to version 15 of Pixar's RenderMan. Highlights of this release include the introduction of true volume rendering, member functions and inheritance for RSL structs, support for imager shaders, a new shading pipeline stage - refinement - for guiding the renderer's tessellator, as well as support for Disney's new Ptex texture format, which eliminates the need for user-provided parameterization for subdiv and polygon meshes.

Details of this release are enumerated below.

New Features

New Re-rendering Features

  • Editing multiple lights simultaneously is now supported.
  • The re-renderer can freely switch between displaying the scene with full results and just the results from the lights currently being edited. See the edit blocks section of the re-rendering application note for details.
  • Support for shader objects in the re-rendering mode of prman has been improved. See the shader objects section of the re-rendering application note for details.
  • Support for the new volumetric primitives has been added.
  • Limited support for co-shader edits has been added. See the co-shaders section of the re-rendering application note for details.

Performance Enhancements


Miscellaneous Changes and Bug Fixes

Shading

  • Point-based color bleeding and occlusion is more accurate — the results are closer to a ray-traced reference solution. The previous behavior can be restored by adding /prman/pointbased/compatibilitymode 14 in your rendermn.ini file.
  • There is a new parameter for point-based color bleeding and occlusion — "rasterresolution", which has a default value of 12. Higher values give more accurate results but will result in slower renders.
  • Point-based reflection occlusion has been improved. Reflection directions can now be baked into the same point cloud as the areas (and normals). Users can then use that information by running ptfilter with the new -reflectiondirchannel parameter.
  • dPdtime is now writable in displacement shaders (but currently not in displacement methods). This allows for control of motion blur from the shading language. Note that the displacementbound must encompass both the full normal displacement and the full range of motion.
  • The indirectdiffuse() and occlusion() functions can now compute their results over the entire sphere of directions, rather than just a hemisphere. For ray tracing, just pass N=(0,0,0) to the function. For point-based calculations, users also need to set the new parameter "volume" to 1.
  • The indirectdiffuse() and occlusion() functions have a new optional output parameter: "illuminationdir". It is the intensity-weighted average direction of the samples. This new parameter works both for ray-traced and point-based computations.
  • Point-based occlusion() and indirectdiffuse() can now use more than one environment map.
  • Point-based occlusion on tiny rectangular and triangular grids has been improved.
  • The "coordsystem" parameter of bake3d(), texture3d(), indirectdiffuse(), occlusion(), and subsurface() can now be a matrix or a string.
  • The "environmentspace" parameter of indirectdiffuse() and occlusion() can now be a matrix or a string.
  • The SL function option() can query pointmemory, nodememory, and deepshadowmemory limits.
  • The printf shadeop now supports shader handles (using %s). The string that is printed will be the handle or the name of the shader.
  • The lookup variables are no longer set to 0 when a call to texture3d() fails. Instead, the lookup variables are left unchanged.
  • The behavior for cachelifetime "shadinggrid" has been changed to be more in line with the behavior for other cache lifetimes: data on the same grid and within the specified filterradius can be retrieved. (In earlier releases, only data on the exact same shading point could be retrieved. The old behavior can be obtained by setting filterradius to 0.)
  • The area() function on triangle grids now returns more accurate areas.
  • Fixed a bug that would cause a shader running at a ray hit point on a rational NURBS patch with control points that have non-unit homogeneous component (w!=1) to have incorrect position P.
  • Visible point volume shaders are now executed before deep shadow maps are extracted, addressing a bug that prevented these shaders from running when the display output is deepshadow.
  • A bug in reporting the progress of multi-bounce color bleeding has been fixed.
  • Fixed a bug in adaptive hemisphere sampling that could result in artifacts near the North pole of the hemisphere.
  • Fixed a bug in RxShadow() that would cause a crash when only a single point grid was being shaded.
  • Fixed a string memory leak in RxTexture3d().
  • The faceforward() call now gives more accurate results when used in shaders running on ray hit points.
  • Message passing between surface and atmosphere shaders now works during re-rendering.
  • If an empty "channelName" value is used in the texture() RSL function, the channelName is ignored, rather than printing an error about the user not providing a valid channelName.
  • A bug that could cause multiple calls to subsurface(), occlusion(), or indirectdeiffuse() in a shader to fail when you specify a different "radiancechannel" or "areachannel" for each call has been fixed.
  • Eradicated a bug that could cause the occlusion computed by indirectdiffuse() to differ from that computed by occlusion() if the coneangle is smaller than pi/2. This affected both ray-traced and point-based computations.
  • A bug that caused too small environment map filter sizes for ray-traced hemisphere sampling (i.e. ray-traced occlusion() and indirectdiffuse()) has been fixed. The bug fix reduces or eliminates noise in the environment map lookup results for ray misses.
  • Fixed a bug that could cause environment lookups to return unexpected results when maxdiffusedepth is set to 0.
  • RxTexturePoints (all Rx...Points calls) now has support for a bitmask, RI_RUNFLAGS. This is an array of npoints integers. If the integer is zero, the relevant point is not looked up and the corresponding result index is not updated. This is helpful in situations where conditional texture lookups are required.
  • Added new Option "limits" "uniform int vpvolumeintersections", which sets the maximum number of overlapping interiors that can be handled when using volumeintersectionstrategy "additive"; the default is 5.

RSL 2.0

  • There have been improvements in grid combining for shader objects.
  • Using getvar in the construct from a variable that is constant string type to another of identical type now behaves as expected.
  • The "surface" variable was ill-defined in construct() and is now correctly "null". This bug could lead to sporadic crashes.

Re-rendering

  • There is a new prman command-line option, -nobake, which can be used to disable potential re-render baking.
  • Re-rendering now supports changing the crop window during an editing session.
  • The re-rendering bake directory is no longer removed by prman prior to baking for re-rendering.
  • Re-rendering no longer places any restriction on the sub-pixel resolution of an image. Prior releases required the sub-pixel resolution to be a power-of-two.
  • A bug with baked procedurals that could lead to crashes in rerendering mode has been fixed.
  • A bug in the re-rendering mode of PRMan that could lead to a crash when executing single-threaded bakes has been fixed.
  • A memory leak during rerendering that exhausted the shader definition cache has been fixed.
  • Fixed a sporadic crash that could occur during multithreaded baking for rerendering when using shader objects.
  • Fixed a bug that could cause a crash in re-rendering mode when using a begin() method in a light shader.
  • Fixed a visible point processing bug that could occur in re-rendering mode.
  • Fixed a bug that could lead to crashes and/or extremely large memory memory allocations when ray tracing in re-rendering mode.

Point Clouds and Brick Maps

  • The brick map API has been updated, enabling the aforementioned reduction (by a factor of 2) in memory consumption.

    • The function BkmGetOctreeChildren() has been superceded by BkmGetOctreeChildrenList(), which has one additional parameter.
    • The version number has been updated to 3.

    For complete details, please consult the Brick Map API developer note.

  • A new Point Cloud API function is available: PtcGetNearestPointsData(). This function returns an interpolated lookup result at a given point and normal.

  • There is a new spheres display mode in the ptviewer utility for point clouds with all zero normals, which is particularly useful for viewing point clouds generated by the volume primitive.

  • The renderer now allows users to bake point clouds with no data (i.e. an empty string in the displaychannels parameter).

  • Fixed handling of the -dspyargs parameter of ptrender.

  • Fixed a bug that could lead to a crash when there are more brick maps in play than specified via /prman/texture3d/maxfiles in the rendermn.ini. When a brick map file pointer is recycled, the large arrays pointed to by the brick map are freed, but the brick map itself (which is quite small) is kept around. This makes it possible to re-open the brick map if needed, while keeping the overall memory use limited.

  • A ptfilter bug that could result in a crash when passing position point clouds and using -filter colorbleeding has been fixed.

  • Point clouds and brick maps with matrix data can now be read without crashing.

Geometry

  • The renderer now supports independently interpolated facevarying primvars on subdivision surfaces. Consequently, subdivision meshes no longer have the restriction that discontinuities at an edge in one particular facevarying primitive variable causes discontinuities for all other facevarying primitive variables at that edge. Note that facevarying float s and facevarying float t are not considered separate variables. In other words, a discontinuity in either variable will imply a discontinuity in both. This is a special case only for these two variables. In order for the same behavior to be applied to user supplied uv data (i.e. "float myu", "float myv"), the user must bind both two uv data into a single channel ("float[2] myuv").
  • RiBlobby has two new opcodes:
    • 1005 (sphere) indexes the first of four floats describing a scale and a translate; it's a more compact/efficient form of the ellipsoid opcode if all you're dealing with is a sphere.
    • 8 is used to create a volumetric blobby region.
  • Attribute "dice" "referencecamera" now works correctly for implicits.
  • A bug that could cause clipping artifacts when rendering RiBlobbies has been addressed.
  • A bug that could lead to a crash when rendering linear curves of considerable length has been rectified.

Display

  • There is a new parameter for the OpenEXR display driver: "string autocrop" ["true"|"false"]. If this parameter is set to "true" and there is an alpha channel in the image the driver will automatically set the datawindow in the image to cover only the region that contains non-zero alpha values.
  • The OpenEXR display driver now supports B44 and B44A compression.
  • There is a new display-system API function: DspyGetNumberOfHosts(). It returns 1 for "regular" rendering and the number of hosts for, e.g., netrendering.
  • Support for vpvolumes in stereo renders has been implemented, subject to certain restrictions. As part of adding this support, the following changes were made:
    • The default shading space is no longer camera for vpvolumes executed from a different camera.
    • The default value of an output variable for a vpvolume shader can be inherited from a surface. This is only possible for output varying parameters that are AOVs, and only for those AOVs that are not arrays.
  • There is a new display driver entry point for supporting changing crop windows during re-rendering. For complete details, please consult the DspyImageActiveRegion section of the Display Driver Plugins developer note.
  • There is a new function for registering direct-linked display drivers: DspyRegisterDriverTable. For complete details, please consult the Direct-linked Display Driver Registration section of the Display Driver Plugins developer note.
  • When rendering in stereo, calling RxTransform() to get the "secondary camera" to "world" matrix now returns the correct result.

Outputs

  • There is a new optional argument to txmake - -extraargs displaywindow - which adds the ability to txmake EXR images with display windows such that the display window becomes the full resolution of the output texture. Supported outputs are the tiff, exr, and Pixar texture formats.

  • Users can now select array elements from DisplayChannels that are arrays, e.g.

    DisplayChannel "varying color[20] AOVOut1"
    Display "+output.exr" "openexr" "P,N,AOVOut1:5"
    
  • TIFF and OpenEXR shadows generated by the d_shadow display driver are no longer restricted to a 16K x 16K maximum resolution.

  • Source image width/height is now being stored correctly in TIFF textures.

  • A bug that caused incorrect channel names to be passed from an array of AOVs to the OpenEXR driver has been fixed.

  • A bug that caused the OpenEXR display driver to strip sequence numbers from channel names incorrectly has been fixed.

Statistics and Warnings

  • A query of the texturememory limit now returns its value in KB (the same as how it is specified in RIB).

  • The Options tab in the xml statistics now includes point, node, and deepshadow memory. The values reported are what was actually used. The renderer looks for the specification first in the RIB file, then in the .ini file; if not present, it then uses the default.

  • Due to security restrictions in modern browsers, having the XML style sheet as a separate file in a separate directory will no longer generate a correct stats display. Instead, we now embed the stylesheet directly into the stats file. While this increases the size of each stats file, the results are more useful in modern browsers. This default behavior can be changed via the rendermn.ini, like so:

    /prman/statistics/embedstylesheet       false
    
  • Brick map cache stats for brick map gprims have been improved.

  • Fixed some issues with combined shading statistics.

Other

  • There are several new command line options to prman:
    • -res x y[:par] overrides the RIB Format
    • -crop l r t b overrides the RIB CropWindow
    • -d dispType overrides the RIB Display type
    • -statsfile f overrides RIB stats file & level (2)
  • Users can now select an arbitrary origin for the "spiral" bucket order. This can be specified in RIB via the option "orderorigin", e.g. Option "bucket" "string order" ["spiral"] "orderorigin" [256 256]. The default remains the center of the image.
  • The interpretation of netrender's "-h host:N" option has been changed for the 15.0 release to increase clarity about the requested behavior of the remote prman processes launched on the servers. For complete details, please see the netrender manual page.
  • The midpoint hider now works as expected, addressing issues with two-level opacity culling and the two-level occlusion buffer.
  • A bug that inadvertently caused improper "star" - * - membership inside procedurals has been fixed.
  • A bug that could result in curves with Attribute "dice" "hair" and Surface "null" not appearing in a render has been fixed.
  • A (Windows-only) bug that could result in shader compiler errors when files have spaces in the filenames has been fixed.
  • A bug that could cause incorrect importance calculations when the number of samples is a non-integer less than 1 has been fixed.
  • Ray-traced RiPoints that have been motion-blurred or have user-specified normals now behave as expected. Additionally, sidedness (i.e. specifying "hitsides" during ray tracing calls) is now obeyed.
  • Fixed a bug that could lead to artifacts on motion-blurred multisegment geometry with depth of field enabled.
  • A bug that could cause bucket-related grid-like artifacts when sigma hiding is used in conjunction with heavy rotational motion blur has been fixed.
  • A bug that could result in license overcounting when rendering multi-frame RIB files has been fixed.
  • A bug that could lead to a crash when Ri calls are made prior to RiBegin has been fixed.

Changes in 15.1

New Features

  • There is a new option for ptfilter: -copychannels. This option can used with ssdiffusion, occlusion, colorbleeding, and volumecolorbleeding. When this option is on, all the data in the input point cloud are copied to the output point cloud (in addition to the new data, of course).
  • There is a new variable, of type shader, available to the user: displacement. Analogous to surface, displacement refers to whatever is bound to the displacement slot via RiDisplacement.
  • There is a new Rix API method on RixStats called AddFileLogStat() that allows plugins to log file access inside the file log section of the statistics.
  • The Point Cloud API functions PtcReadDataPoint(), and PtcReadTreeNode() now accept a NULL data pointer.
  • Editing of raytracing visibility and membership attributes during rerendering is now supported.
  • A new type of edit block has been added that allows one to delete multiple lights simultaneously (in a single rerender).
  • The depthmask hider is now permitted during rerendering.

Performance Enhancements

  • There have been numerous optimizations to baking for re-rendering.
  • Writing brick maps and point clouds has been optimized for increased speed: bricks and points are written to file in much larger packets than before. (If the file destination is a remote location, e.g. across a network, we still recommend writing to local disk first and then copying the file across the network.)
  • Brick maps and organized point cloud files can now be larger than 2GB on 64-bit architectures. (On 32-bit architectures the files are unfortunately still limited to 2GB.)
  • Improvements to gzip compression have resulted in speedups of at least 2x to the brickmake utility.
  • Rendering performance has been improved for volumes moving through the camera plane, as well as for volumes that use DSO plugins that do not perform bounding box checks in their Range() method.

Miscellaneous Changes and Bug Fixes

  • sortbleeding is automatically turned on when computing point-based volume color bleeding.
  • Fixed a bug in ptxmake that could cause memory corruption that led to crashes or artifacts when ptxmaking non-square images.
  • Fixed a bug that could cause significant slowdowns when ray tracing with samplemotion set to 1.
  • Fixed a bug that prevented specifying a datatype when creating textures through the netrender client.
  • Several issues with gridpattern() have been fixed.
  • Point-based indirectdiffuse() and occlusion() now work even when maxdiffusedepth is reached.
  • Fixed a bug that could lead to a crash when using indirectdiffuse() in point-based mode.
  • Fixed a bug that caused either scoped or global coordinate systems to fail when there were none of the other kind present.
  • Fixed a bug in reading of organized point cloud nodes from cache.
  • Issues with transforms to shader space and current space in various circumstances related to visible point volume shading with arbitrary cameras have been fixed.
  • RifFaceEdgeData and RifSubdivFaceIndex now operate correctly, even if RiSubdivisionMesh() uses "catmull-clark" instead of RI_CATMARK as the mask parameter.
  • Fixed issues with NaN results when computing ray-traced ambient occlusion from brick map geometric primitives without Os data.
  • Error reporting for point clouds has been improved, particularly in regard to caching.
  • Fixed a bug that prevented construct from running on all but the first frame during multi-frame renders.
  • Fixed a numeric/boundary issue in wnoise that could lead to a crash.
  • Improved struct member function typechecking such that a private member function can be defined with the same name as a public one. Errors are reported only if the type-matching function is private.
  • Improved the degeneracy check for point-based octree nodes, avoiding a potential infinite loop.
  • Fixed a bug in grid combining of shaders that have shader-typed member variables.
  • Fixed a licensing bug that could result in render passes being run without generating results, e.g empty shadow maps. As a result, PRMan will exit immediately with a severe error if the seat count is exceeded.
  • A bug that could cause black images when rendering blobby volume brick maps generated with maxerror > 0 has been fixed.
  • Fixed a bug that could lead to blocky artifacts when rendering blobby volume brick maps.
  • Fixed a bug that caused oriented microdisks (i.e. RiPoints with a normal and brick map geometric primitives with normal data) rendered under perspective projection to be rendered incorrectly. The error was most apparent for wide perspective projections.
  • Fixed a bug that could cause a ptfilter crash when using the -volumecolorbleeding and -positions arguments.
  • Fixed a bug in prman_cleaner that could cause the cleaner to exit prematurely before cleaning a deadlocked prman.
  • Fixed a bug that could inadvertently cause a deadlock when prman receives asynchronous signals (UNIX-only).
  • A bug that could potentially lead to a prman crash when referencing a string array of length 1 that has been set via a user option has been fixed.
  • Fixed a bug that could lead to erosion of volumetric brick maps. As a result of this change, volumes are now defined where the field is strictly > 0.
  • A bug that could cause the filter width of a secondary output to affect the z-depth filter of the primary output has been fixed.
  • Fixed a bug in the Sigma Hider that could cause NaNs for zero width curves.
  • Fixed a bug that could cause artifacts in multigridded volumes.
  • Fixed a bug that caused incorrect results for ptfilter -ssdiffusion with albedo and/or dmfp values read from a point cloud file.
  • Fixed a Windows-only bug that could detrimentally affect the speed of ptfilter with organized point clouds.
  • The shader compiler no longer truncates the arg string it is passed, and users can now provide up to 250 include files.
  • Fixed a bug that could cause baked channels to be named incorrectly when using RxBake3d to create a point cloud file.
  • A bug that could cause a crash when using the intersectinggeometry volume refinement strategy has been fixed.
  • Fixed a bug that could lead to a crash when computing environment directions for point-based volume color bleeding.
  • A bug that could cause artifacts when function calls reference different ray tracing subsets has been fixed.
  • Fixed a bug that could lead to artifacts in point-based occlusion and (non-volume) color bleeding near normal (0,0,0).
  • Restrictions on the maximum comment length in shader meta data have been lifted.
  • Fixed the OpenEXR display driver, such that autocrop works with AOVs as well as RGBA.
  • Filter regions now properly take into account the aspect ratio of the texture pixels.
  • Fixed a bug that could cause a crash when using option() on string arrays of size 1.
  • Deformation blur in brickmap volumes is now supported. Users must bake dPdtime into the brickmap file and enable deformation blur by specifying the Blobby inside a MotionBegin/MotionEnd block.
  • Fixed a buffer overrun that could lead to a crash in brickmake.
  • Fixed a bug that could cause cracks in faceedit regions of hierarchical subdivision surfaces when using deformation blur, under certain circumstances.
  • A bug that could lead to cracks in displaced blobbies has been fixed.
  • Blobbies now allow for direct specification of the level set threshold via RI_LEVELSET. Previously, the threshold could only be subtracted from using RI_THRESHOLD.
  • The bounds for ray traced procedurals with Attribute "procedurals" "string attributes" are no longer wrongly subjected to the transform in the saved attribute state.
  • A problem where transmission rays sometimes computed the wrong opacity on semi-transparent surfaces particularly on dense meshes has been fixed.
  • Issues with referencecamera dicing for RiBlobby have been addressed.
  • When the texture3d() parameter "usepresence" is on, the initial values of the lookup variables were not being properly mixed with the brick map voxel data, if the lookups only looked up a subset of the data in the brick map.
  • Runflags for RxTexture() were index incorrectly, leading to incorrect texture lookup. This has been fixed.
  • Using the "source" flag with a DisplayChannel now works correctly when more than one "source" is specified.
  • Co-shaders can now emit array AOVs.

Re-rendering Changes and Bug Fixes

  • Fixed a caching bug in re-rendering mode that could lead to a sporadic crash during postprocessing of the bake database.
  • Fixed a bug that could cause an application using a 'launched' prman process to crash if the remote prman process terminated abnormally.
  • The shader compiler analysis of liveness of shader output variables has been improved, avoiding baking these variables unless necessary.
  • Issues with re-rendering subdivision meshes that contain hierarchical attribute faceedits have been resolved.
  • Crashing when re-rendering large subdivision meshes has been resolved.
  • Fixed a crash when re-rendering scenes with procedural primitives that are never subdivided (for example, an off-screen primitive).
  • Implemented the proper caching behavior of procedural primitives during baking for re-rendering.
  • Edits to coordinate systems in re-rendering mode now behave as expected.
  • Fixed a bug that caused light deletion to be skipped during flushing.

Changes in 15.2

New Features

  • There is a new RiVolume primitive:

    RiVolume "type" [ bounds ] [ nx ny nz ] ...

    The RiVolume primitive is expected to be generally more efficient than the equivalent RiBlobby primitive, since field function evaluations are greatly reduced. Type can take the string value: "box", "ellipsoid", "cone", or "cylinder". We expect users to supply nx * ny * nz values for vertex and varying storage class variables, specified in an order where X varies fastest and Z varies slowest. Vertex is interpolated using a tricubic basis; varying is interpolated using a trilinear basis. For uniform/constant storage a single value is expected.

    The new RiVolume primitive carries with it several caveats:

    • Unlike RiBlobby, RiVolume currently dices in object space. This means that its response to depthshadingrate may not be as high as that of RiBlobby, and in some circumstances (no motion blur, no depth of field) it may not hit test as efficiently as RiBlobby. We will evaluate whether changing this dicing strategy makes sense after this 15.2 prerelease.
    • RiVolume has special treatment for transmission() rays: shaded values are computed at the normal shading rate, cached, and reused. This means that return transmission() results from a RiVolume are expected to be very fast - depending on caching, perhaps as fast as a shadow map lookup or better. However, your opacity may not have any ray-direction dependent computation.
    • RiVolume supports internal deformation blur specified using dPdtime attached directly to the primvar. Currently this still requires two copies of the RiVolume inside a MotionBegin/End block. This is subject to change after the initial 15.2 pre-release.
    • Vertex variables are interpolated using a Catmull-Rom spline. Due to the negative support present in this spline, some vertex variables may fall outside of the expected range.
  • There is a new Attribute that controls visible point list compression, enabling significant speedups for volumes with high visible point depth complexity, but low actual color complexity:

    Attribute "volume" "deptherror" [0.00392]

    This number represents the maximum shift in adjacent visible points before they are considered too different to be composited together. In cases where there are no overlapping volumes, or there is no deep shadow map being output, the deptherror can be significantly increased (leading to faster and slimmer renders) since compositing early does not affect the final answer. However, compositing early will increase error for overlapping volumes and deep shadow map output, thus increasing the deptherror is not advised for those situations.

  • The rerendering mode of prman now supports implicit surfaces.

  • The "editlights" token in RiEditBegin can now signify an array of lights in addition to a colon-separated list of lights concatenated into a single string. To get the array behavior, use an inline declaration containing the array length, e.g.:

    EditBegin "relighting" "string[2] editlights" ["light2" "light3"]

    Rather than:

    EditBegin "relighting" "string editlights" ["light2:light3"]

  • "w" is now an allowed variable in the shading language. Existing shaders that declare a local variable w continue to work.

  • There is a new subsurface scattering parameter: "followtopology". It diminishes subsurface scattering across local concavities such as wrinkles, skin pores, lips, etc.

  • There is a new "environmentblur" parameter for the occlusion() and indirectdiffuse() functions. This blur is applited to lookups into an environment map specified by the exisiting "environmentmap" parameter.

  • There is a new option, gridmemory, which can be used to set a grid memory threshold; when grid memory goes above this value, the renderer will attempt to discard grids that can be regenerated later by re-dicing the high-level gprim from which they originated.

  • The "hitsides" parameter for indirectdiffuse() has been split in two: "colorhitsides" and "occlusionhitsides" provide additional control point-based color bleeding. The "hitsides" parameter is still supported, however, setting "colorhitsides" to "front" and "occlusionhitsides" to "both" will provide more accurate results.

  • Corresponding to the change above, the ptfilter option -sides can now be specified by two separate options, -colorsides and -occlusionsides, for increased control.

  • A new rendermn.ini setting has been added to control statistics behavior on Linux and OS-X:

    /prman/statistics/emitoncrash  true
    

    If set to false, PRMan will not emit statistics when it receives a synchronous signal, for example SIGSEGV. This will avoid a potential deadlock situation at the expense of not obtaining statistics if PRMan crashes.

  • NDC and screen space can now be retrieved from arbitrary cameras.

Miscellaneous Changes

  • Ray-traced motion blurred RiBlobby volumes are now much faster to render.

  • Render speed has been improved across the board for "diagonal motion blur", including cases where primitives fly through the camera plane. This is particularly relevant for volumes going through the camera; in some situations, the memory requirements have been reduced by an order of magnitude, along with the increase in speed.

  • The handling of ray-traced RiBlobby volumetric envelopes has been significantly improved. Results are much more accurate, and problems with self-biasing should now be eliminated or greatly reduced.

  • The intersectinggeometry refinement strategy is now much more robust. Also, the interaction of volumes with opaque surfaces in general has been improved.

  • Volumes now respect RiGeometricApproximation. Note that due to the nature of their dicing algorithm, the response of RiBlobby to RiGeometricApproximation may be limited.

  • Thread safety during re-rendering has been improved.

  • Re-rendering bake options can now be queried via the option() shadeop, RxOption(), or a rib conditional, e.g.:

    uniform float baking = 0; option("render:rerenderbake", baking);

  • Baking for re-rendering should result in smaller bakedb sizes when used with class-based shaders.

  • Visible point shading now allows both an Atmosphere and Interiors to run at a point.

  • Ptfilter can now compute multibounce partial color bleeding results. This is useful when ptfilter is used to compute multiple global illumination bounces and indirectdiffuse() is used to compute one additional bounce.

  • The RiHider "shutteropening" option has been replaced by the RiCamera "shutteropening" option, which provides the same functionality.

  • Users can now specify an array element for DisplayChannel "string source".

  • The -Progress option to ptfilter (notice the capital P, and it takes no argument) prints R90000 progress percentages but no other progress info. This mimics PRMan's -Progress behavior.

  • The ptfilter parameter -albedochannel now applies to colorbleeding as well as volumecolorbleeding.

  • The diffuse reflection coefficients are now clamped to the range [0,1] for multiple-bounce point-based color bleeding. This ensures more physically realistic results.

  • RicProcessCallbacks has been added to the PRMan Python binding.

  • ptfilter's threading performance has been improved.

  • Point cloud stats have been improved.

  • Read times for brick maps and organized point clouds have been significantly reduced.

  • toslim now provides basic support for Imager shaders.

Bug Fixes

  • MotionBegin/MotionEnd are now thread-safe for reentrant procedurals.
  • Ray-traced RiBlobby volumes now correctly respect the interaction of shadingrate with the gridsize limit. Unfortunately, in some circumstances with very large volumes, versions prior to 15.2 may have been significantly undershading, so users may see a relative slowdown in 15.2 with an identical scene.
  • The renderer now accurately composites overlapping volumes, even if the depth segments are very long.
  • Deep shadow maps generated from volumes may have undersampled the volume in the past if the depthrelativeshadingrate was set very high. This is no longer the case: we guarantee that the volume will be sampled at least as often as is required to stay within the deep shadow map compression error threshold.
  • mpoint is now correctly diced for RiBlobby volumes.
  • Fixed a bug with bias in point-based occlusion() and indirectdiffuse() - bias is now applied after the normal has been normalized. Note that this bug did not apply to versions of PRMan prior to 15, or if /prman/pointbased/compatibilitymode is set to 14` in your ``rendermn.ini file.
  • A bug that could cause indirectdiffuse() and occlusion() to use the wrong setting for "colorhitsides" and/or "occlusionhitsides" has been fixed.
  • A brick map geometric primitive bug that could cause a crash when a brick map with (0,0,0) normals is mixed with non-zero normals has been fixed.
  • A bug that could lead to a crash when passing empty strings to the texture3d() filenames array parameter has been fixed.
  • Fixed a bug that could cause compiler errors for types with underbars (_) in the type name (e.g. _struct).
  • Co-shader handle overrides now behave as expected.
  • A bug that caused derived referenced shaders that were not in the direct co-shader list to overwrite the list of co-shaders has been fixed.
  • Fixed a bug that could cause toslim to crash when a shader has a parameter of type "shader".
  • A bug in the parameter parsing of RxTexture3d() that could lead to corruption or uninitialized data has been fixed.
  • A bug that could cause artifacts to appear in reflections when rendering a brickmap primitive using ray tracing has been fixed.
  • Fixed a bug in (hemi)sphere sample computation of environment color for continuation rays that continue through a surface that is transparent (after shader evaluation).
  • Fixed a bug that could cause ray tracing artifacts when using a filterregion to read a texture that is used for displacement.
  • Filter regions now follow the rasterorient attribute, creating an orthographic frame perpendicular to the surface normal when filtering a non-raster-oriented diced surface. This is especially important when baking to prevent overfiltering the sillhouettes of objects; now the filtering will match the goal dicing criteria.
  • Fixed a crash that could be caused by face edits of a constant variable on hierarchical subdivs.
  • A bug that could adversely affect RiMakeBrickMap on Windows has been fixed.
  • Fixed a bug that could inhibit the rendering speed of motion-blurred blobbies and blobby volumes.
  • Fixed a bug that could cause artifacts for blobby volumes flying through the camera, due to near clipping plane bounding issues.
  • Fixed a bug that could cause RI_LEVELSET to be wrongly ignored for motion-blurred blobbies.
  • Fixed a bug that could cause a crash if the DAG for an implicit is empty.
  • Fixed a bug in transmission() that caused incorrect values for primvars specified in RIB.
  • Fixed a bug that resulted in transmission() returning wrong results on volumes with trivial shaders.
  • A bug caused the PtcGetNearestPointsData() point cloud API function to be unable to read organized point clouds. This bug has been fixed. PtcGetNearestPointsData() now treats an organized point cloud as if it were unorganized: it reads the point cloud in and organizes it in memory.
  • A bug that could result in undesirable explosions in the brightness of the computed indirect illumination has been fixed.
  • A bug in txmake that caused non-mipmapped OpenEXR textures to be created incorrectly has been fixed.
  • Passing a bad "displaychannels" string to bake3d() no longer causes the renderer to crash.
  • Fixed a bug that could produce incorrect results for short-range occlusion and color bleeding calculations when using point-based indirectdiffuse() or occlusion().
  • A bug wherein increasing the gridsize limit could cause a crash and artifacts in an AOV when rendering a volume has been fixed.
  • A bug that cause memory access errors when attempting to bake zero-length procedurals in PRMan's re-rendering mode has been fixed.
  • A bug that could cause bake3d() to crash if a curve had no width has been fixed.
  • Volumes with clipping planes now interact correctly.
  • Issues with ray-traced volumes have been addressed.
  • An issue with the deallocation of RixSubdivisionMesh has been fixed.
  • Bugs in limit surface evaluation in the Rix subdivision API have been fixed.
  • Fixed a bug that prevented shaders run at transmission ray hits from getting a result from querying the ray label.
  • Improved derivatives for ray hits from rays shot during visible point shading.
  • Fixed a bug that could result in NaNs being passed during PTex filtering, which could, in turn, lead to a crash.
  • Fixed bug causing calls to RxTextureGetData to corrupt memory and potentially crash.
  • Fix netrender client option handling regarding tractor-blade protocol vs alfserver protocol. As before, netrender -T ... enables Tractor mode, but now setenv NRM_TRACTOR 1 also works, as intended. Most developers running netrender manually to Tractor blades will probably want to set the env var in their login environment.
  • Fixed a ptfilter bug in which zero or negative points would be excluded from the results when running -filter occlusion.
  • Fixed a bug in which local varying length arrays of structs that did not have a default initializer were being constructed with a default length of 1, rather than 0.
  • Fixed several bugs that could result in a crash when gather() requests variables be fetched and the prim which the ray hits has the null shader.

Changes in 15.3

Miscellaneous Changes

  • The speed and memory performance of ray-traced volumes has been improved.
  • The precision of splitting and dicing of implicits has been improved.

Bug Fixes

  • Fixed a bug that could cause miscalculation of dPdtime for sub-shutter motion blur blocks.
  • Fixed a bug that could result in bucket artifacts for highly-blurred deforming and transforming blobby surfaces.
  • Fixed a bug that could lead to NaNs under certain circumstances when rendering volumes.
  • A bug that could cause biasing artifacts in ray-traced volumes has been fixed.
  • Fixed the behavior of rayinfo("importance", ...) for ray hit multigridding.
  • Fixed a bug that could cause prman to crash when rendering displaced curves with motion blur.
  • Fixed a bug that could lead to a crash when doing point-based volume color bleeding.
  • A bug that could lead to a crash when the re-renderer is direct-linked.
  • refinement() now behaves as expected with double-shaded surfaces.
  • gather() now properly traces against geometry that isn't split finer than its base mesh.
  • A bug that caused indirectdiffuse() and occlusion() with maxvariation > 0 to return NaN results on trimmed NURBS patches has been fixed. This bug could also lead to incorrect color calculations when basing, for example, subsurface scattering on indirectdiffuse() results.
  • Fixed a rare bug that could result in point-based indirectdiffuse() returning an "all black" result for shading grids that are actually only partially black.
  • Fixed RxTransform and RxTransformPoints results when one of the input spaces has an object space component.
  • Fixed RxTransform and RxTransformPoints to properly handle raw strings as space arguments.
  • Copying a resizable array to another with a different capacity now behaves as expected.
  • Fixed a bug that could cause netrender to wedge when rendering simple scenes.
  • Several issues with Lagrangian filtering have been addressed.
  • Fixed bug causing potential for incorrect visible point samples for primitives with a motion sample very close to the eye plane.
  • Fixed a bug that could cause homogeneous point vertex variables on NURBS patches to be garbled, resulting in NaNs.
  • Fixed a bug in soft shadow lookups that could result in a crash.
  • Addressed issues with the installer on OS X.

Alfserver Notice

As of RenderMan Pro Server version 15.2, pursuant to the deprecation of Alfred and the implementation of Tractor, Alfserver is no longer included with the RPS package. Existing customers still using Alfserver can download Alfserver as part of the Alfred 9 package, and, of course, the Alfserver included with RPS 15.1 remains compatible.


Known Issues


Deprecated


Prev | Next


Pixar Animation Studios
Copyright© Pixar. All rights reserved.
Pixar® and RenderMan® are registered trademarks of Pixar.
All other trademarks are the properties of their respective holders.