Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Note

These may also be referred to as "master attributes" for clarity versus Instance Attributes which may be varied per instance.

Common

...

Primvars can be set and manipulated on different types of geometry (as available for that type of geometry). This can allow pattern networks and shaders to retrieve this information at render time.

Class Specifiers: There are several types of Primvars

Constant:  One value remains constant over the entire surface primitive. 
Uniform:  One value remains constant for each uv patch segment of the surface primitive. 
Varying:  Four values are interpolated over each uv patch segment of the surface. Bilinear interpolation is used for interpolation between the four values. 
Vertex:  Values are interpolated between each vertex in the surface primitive. The basis function of the surface is used for interpolation between vertices. 
Facevarying:  For polygons and subdivision surfaces, four values are interpolated over each face of the mesh. Bilinear interpolation is used for interpolation between the four values. 

 

User Primvars

Arbitrary primitive user datanull
Name
Type
Default
Description
<name> <type> <value>Anynull
identifier:objectstringemptyObject shape name.

...

Shading

Name
Type
Default
Description
derivatives:extrapolateinteger1Extrapolated smooth normals across grid boundaries.
displacement:ignorereferenceinstanceint0Indicates if displacement shading should ignore properties of the reference instance.
displacementbound:CoordinateSystemstringobjectThe name of the coordinate system that the displacement bound is measured in.
displacementbound:offscreenint0Apply displacementbound to offscreen geometry when dicing. Geometry that is entirely offscreen, but displaces into view may be prone to undertessellation because of the offscreen dicing strategy. This can be corrected by enabling this control and setting a reasonable displacementbound. Doing so will incur a performance penalty commensurate with the size of the displacement bound.
displacementbound:spherefloat0Maximum displacement distance used to compute object bounds. This value should be as tight as possible.
Ri:OrientationstringoutsideGeometry winding order that determines surface normal. This attribute effects lighting and displacement. Supported values: inside, outside.
trace:autobiasinteger1Enable automatic raytrace bias.
trace:biasfloat0.01Manual raytrace bias in object space. Small values should be used to avoid artifacts such as shadow acne.
trace:displacementsinteger1Enable displacement shading.

Dicing

 This space is allowed to be "world", "object", "camera", or any other space marked by a RiCoordinateSystem call. Setting minlength to a negative value indicates that the minlength is to be computed in a different fashion:

  • For a RiVolume where the "type" is not blobbydso, the minlength is automatically half the size of a voxel measured in object space.
  • For a RiVolume where the "type" is blobbydso (i.e. the volume is defined by an implicit field plugin), the minlength is set to be the return value of the MinimumVoxelSize method from the ImplicitField API, and the dicing rate will be constrained to be less than this length measured in object space.
  • For RiBlobby, if there is a DSO in the DAG defining the blobby, the minlength is set to be the smallest non-zero return value returned by calls to all MinimumVoxelSize methods from the DSOs in the graph implementing the ImplicitField API. If there are no DSOs in the DAG the minlength is zero (there is no minimum dicing rate constraint)""Defines the dicing strategy used for offscreen objects that may be traced indirectly, the options are: "clamped", "sphericalprojection, "viewfrustumdistance", "worlddistance"Turning this off, by setting it to 0, enables  nonraster-oriented dicing , a mode of dicing that computes micropolygon sizes using an un-oriented raster space metric rather than the standard screen-aligned raster metric. This is useful in situations where it is important that the dicing rate on an object doesn't change due to camera orientation. For example, it can help in situations where objects that are viewed edge on result in large micropolygons (but small in screen space), which are then displaced leading to micropolygons that are large in screen spaceRenderMan has support for specifying the camera and strategy to use during dicing. These are chosen via the  "strategy"  and  "referencecamera"  parameters of "dice". This reference camera is required to define the dicing when doing multi-camera rendering. RenderMan does not choose the best/finest camera automatically, it must be set by the usernullThis is the object name of the referenced ""Defines the dicing strategy used for objects on screen, the options are: "instanceprojection", "sphericalprojection", "worlddistance"Object micropolygon length expressed space units-1 dice coarsely for out of focus objects dice coarsely or fast moving objects
    Name
    Type
    Default
    Description
    dice:micropolygonlengthfloat1Micropolygon distance in raster space for "instanceprojection" dicing. Values are expressed in pixel size
    dice:micropolygonlengthfloat0Object micropolygon length expressed in pixel size
    dice:minlengthfloat-1(Volumes) By default, minlength is not enabled: there is no minimum constraint on dicing rate. Setting minlength to a positive value specifies the minimum length of the voxel, as measured in a space denoted by the "minlengthspace" parameter.
    dice:minlengthspacestringnull.
    dice:offscreenstrategystringviewfrustumdistanceDicing method of objects outside the viewing frustum. Supported values: viewfrustumdistance, worlddistance, objectdistance.
    dice:rasterorientinteger1Changes micropolygon size according to the viewing angle of a surface. When rasterorient is on, surfaces are coarsely diced at a glancing angle.This feature is very useful for ground planes and other large objects that are seen at an angle and it should be disabled for geometry that is instanced several times as it can be seen from different angles as well as when displacement details are lost.
    dice:referencecamerastringnullemptySpecify the camera used for dicing. If no reference camera is specified, RenderMan will use the primary camera.
    dice:referenceinstancestringemptySpecify the reference instance used for dicing and displacement shading. The reference instance is used to drive dicing and displacement based on its position, scale, user attributes, and scoped coordinate systems. Reference instances are specified by its identifier:name attribute (instance name). If no reference instance is specified, RenderMan will automatically pick the nearest instance inside the primary camera's view frustum.
    dice:strategystringinstanceprojectionDicing method of objects within the viewing frustum. Supported values: instanceprojection, worlddistance, objectdistance.
    dice:worlddistancelengthfloat-1Micropolygon distance in world space for "worlddistance" dicing or object space for "objectdistance" dicing.
    Ri:GeometricApproximationFocusFactorfloat0Allows the renderer to use more coarse dicing for blurry objects due to depth of field.
    Ri:GeometricApproximationMotionFactorfloat0Allows the renderer to use more coarse dicing for blurry

     

    Displacement

    NameTypeDefaultDescription
    displacementbound:CoordinateSystemstringnull

    The name of the coordinate system that the displacement bound is measured in.

     

    • any of the standard coordinate systems ("screen", "camera", "world", "object")
    • "current", which is the current space (identical to "camera" in RenderMan)
    • "null", which specifies the coordinate system at the time of the RiAttribute call
    • any user-defined coordinate system created with RiCoordinateSystem
    displacementbound:spherestringnullAmount to pad the bounding box. The size is specified by identifying a single floating-point value which is the radius of a  sphere  which is guaranteed to contain the maximum possible displacement, and the name of the  coordinate system  in which this sphere resides. This value should be as tight as possible.

     

    Tracing Controls

    NameTypeDefaultDescription
    trace:autobiasinteger1Allow the renderer to automatially adjust ray bias, 0 is off
    trace:biasfloat0.01The user-set bias amount, typically small values to offset a ray to avoid artifacts such as shadow acne
    trace:displacementsinteger1Trace displacements (seen in reflections and refractions, etc) 0 is off
    trace:samplemotioninteger0Whether motion blurred objects appear in ray-traced results. When 0, the motion blur of other objects hit by rays launched from the object with this attribute will be ignored. When non-zero, motion blur will be taken into account by rays launched from an object with this attribute

     

    objects due to motion blur.

    Points

    ...

    Name
    Type
    Default
    Description
    falloffpowerfloat0For use with points, if not supplied, or set to zero, the points will have a hard edge. A value of 1 is a "reasonable" value that emulates the usual cosine based falloff; this will likely be the goto value for most people doing volumetric particle effects. Values between 0 and 1 makes the falloff faster, eroding the point faster - point has "less presence". Values higher than 1 (up to infinity) makes the falloff slower to the point of being non-existent.

    Volume

    Name
    Type
    Default
    Description
    dice:minlengthfloat-1Volume minimum dice length. Negative indicates to automatically compute this value.
    dice:minlengthspacestringemptyCoordinate space of dice:minlength.
    Ri:Boundfloat[6]0 0 0 0 0 0Volume bounds.
    volume:dsominmaxinteger0

    SubdivisionMesh

    Name
    Type
    Default
    Description
    dice:pretessellateinteger1Pre-tessellate subdivision geometry to polygons.
    dice:watertightinteger0Tessellate geometry with no holes. Watertight geometry requires less raytrace bias.
    shade:facesetinteger[n]emptyActive geometry face indexes.
    stitchbound:CoordinateSystemstringempty
    stitchbound:spherefloat0

    NuPatch

    Name
    Type
    Default
    Description
    trimcurve:sensestringinsideSupported values: inside, outside.

    PolygonMesh

    Name
    Type
    Default
    Description
    polygon:concaveinteger1Allow concave polygons.
    polygon:smoothdisplacementinteger0Output smoothed (per-vertex) normals as Ndsp primvar, if polygon:smoothnormals hasn't already inserted smooth normals.
    polygon:smoothnormalsinteger0Smooth (per-vertex) normals if not provided.

    Procedural

    Name
    Type
    Default
    Description
    procedural:immediatesubdivideinteger0
    procedural:reentrantinteger0