RenderMan allows for attributes to be assigned to and used on geometry instances for different purposes. These attributes can be set per-instance, this is different than a Primvar which is the same for the master geometry and instances.
Some attributes allow controls for:
Name | Type | Default | Description |
---|---|---|---|
grouping:membership | string | null | Grouping membership used for linking |
identifier:id | integer | 0 | Lower 32 bits of 64 bit object id |
identifier:id2 | integer | 0 | Upper 32 bits of 64 bit object id |
identifier:lpegroup | string | null | Grouping membership used for light path expressions, example, keylight |
identifier:name | string | null | Instance path name |
lightfilter:subset | string | null | Active light filter groups in lighting |
lighting:excludesubset | string | null | Exclude light groups from lighting |
lighting:mute | integer | 0 | Mutes light emission |
lighting:subset | string | null | Light groups active in lighting |
Ri:Matte | integer | 0 | Indicates a matte object, this object is rendered as a "black hole" |
Ri:ReverseOrientation | integer | 0 | Flip shading normals |
Ri:Sides | integer | 2 | Geometry can be one or two sided |
shade:relativepixelvariance | float | 1 | PixelVariance multiplier for camera visible objects, allows you to alter the samples relative to the global setting |
shade:indexofrefraction | float | -1 | Set an index of refraction used in nested dielectrics, we use the bxdf result, this is used as an override |
trace:holdout | integer | 0 | Indicates holdout object, useful in holdout workflow. These objects collect reflections, shadows, and transmission. |
trace:intersectpriority | integer | 0 | Raytrace intersection priority for nested dielectrics |
trace:maxdiffusedepth | integer | 1 | Maximum diffuse light bounces |
trace:maxspeculardepth | integer | 2 | Maximum specular light bounces |
trace:reflectexcludesubset | string | null | Exclude object groups from reflections |
trace:reflectsubset | string | null | Object groups visible to reflections |
trace:shadowexcludesubset | string | null | Exclude object groups from casting shadows |
trace:shadowsubset | string | null | Object groups active in shadows |
attributes trace:transmitexcludesubset | string | null | Exclude object groups from transmission/refractions |
trace:transmitsubset | string | null | Object groups visible to transmission/refractions |
user:<name> <type> <value> | any | null | Arbitrary instance user data |
visibility:camera | integer | 1 | Indicates if object is visible to the camera |
visibility:indirect | integer | 1 | Indicates if object is visible to indirect (reflection and specular refraction) rays |
visibility:transmission | integer | 1 | Indicates if object is visible to shadow rays |
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.
A variable's class and the surface primitive determine how many samples must be included when a primitive variable is attached to a surface primitive. The following two tables identify the correct number of values that must be included for each combination of class specifier and surface primitive.
Surface Primitive | Constant | Uniform | Varying | Vertex | Facevarying |
---|---|---|---|---|---|
Quadrics | 1 | 1 | 4 | 4 | 4 |
Polygon | 1 | 1 | nverts | nverts | nverts |
General Polygon | 1 | 1 | nverts | nverts | nverts |
Points Polygons | 1 | npolys | nverts | nverts | sum(nverticesi) |
Points General Polygons | 1 | npolys | nverts | nverts | sum(nverticesi) |
Points | 1 | 1 | npoints | npoints | npoints |
Subdivision Mesh | 1 | nfaces | nverts | nverts | sum(nverticesi) |
Surface Primitive | Constant | Uniform | Varying and Facevarying | Vertex |
---|---|---|---|---|
Patch Bilinear | 1 | 1 | 4 | 4 |
Patch Bicubic | 1 | 1 | 4 | 16 |
PatchMesh Bilinear | 1 | (nu-unowrap)* (nv-vnowrap) | nu*nv | nu*nv |
PatchMesh Bicubic | 1 | usegs*vsegs | (usegs+unowrap)* (vsegs+vnowrap) | nu*nv |
NuPatch | 1 | (nu-uorder+1)* (nv-vorder+1) | (nu-uorder+2)* (nv-vorder+2) | nu*nv |
Curves Linear | 1 | sum(nsegsi-nowrap) | sum(nverticesi) | sum(nverticesi) |
Curves Cubic | 1 | sum(nsegsi) | sum(nsegsi+nowrap) | sum(nverticesi) |
Blobby | 1 | 1 | nleaf | nleaf |
Note, in the above table for parametric surface primitives, unowrap, vnowrap, and nowrap are assumed to be a boolean value of either 0 = periodic or 1 = nonperiodic. This is NOT how uwrap, vwrap, and wrap are used in the RenderMan interface.
For a bicubic patch mesh the number of values for the uniform and varying classes is determined by the number of patch segments in the u and v direction (usegs, vsegs, and nsegsi in the above table). This is determined by the u and v basis functions of the patch mesh. The following table gives the formula for calculating the number of patch segments, in the u or v direction, of a patch mesh. N is the number of control vertices in the u or v direction (nu or nv in the above table).
Name | Type | Default | Description |
---|---|---|---|
<name> <type> <value> | Any | null | Arbitrary primitive user data |
identifier:object | string | null | Object name |
Name | Type | Default | Description |
---|---|---|---|
dice:micropolygonlength | float | 0 | Object micropolygon length expressed in pixel size |
dice:minlength | float | -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:minlengthspace | string | null | 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:
|
dice:offscreenstrategy | string | "viewfrustumdistance" | Defines the dicing strategy used for offscreen objects that may be traced indirectly, the options are: "clamped", "sphericalprojection, "viewfrustumdistance", "worlddistance" |
dice:rasterorient | integer | 1 | 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 space. |
dice:referencecamera | string | null | RenderMan has support for specifying the camera and strategy to use during dicing. These are chosen via the "strategy" and "referencecamera" parameters of "dice". |
dice:referenceinstance | string | null | This is the object name of the referenced instance used for dicing |
dice:strategy | string | "instanceprojection" | Defines the dicing strategy used for objects on screen, the options are: "instanceprojection", "sphericalprojection", "worlddistance" |
dice:worlddistancelength | float | -1 | Object micropolygon length expressed in world space units |
Ri:GeometricApproximationFocusFactor | float | -1 | Allows the renderer to dice more coarsely for out of focus objects |
Ri:GeometricApproximationMotionFactor | float | 0 | Allows the renderer to dice more coarsely for blurry or fast moving objects |
Name | Type | Default | Description |
---|---|---|---|
displacementbound:CoordinateSystem | string | null | The name of the coordinate system that the displacement bound is measured in.
|
displacementbound:sphere | string | null | Amount 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. |
Name | Type | Default | Description |
---|---|---|---|
trace:autobias | integer | 1 | Allow the renderer to automatially adjust ray bias, 0 is off |
trace:bias | float | 0.01 | The user-set bias amount, typically small values to offset a ray to avoid artifacts such as shadow acne |
trace:displacements | integer | 1 | Trace displacements (seen in reflections and refractions, etc) 0 is off |
trace:samplemotion | integer | 0 | Whether 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 |
Name | Type | Default | Description |
---|---|---|---|
primvars:Blobby Ri:code | integer | null (required) | |
primvars:Blobby Ri:floats | float | null | |
primvars:Blobby Ri:nleaf | integer | null (required) | |
primvars:Blobby Ri:strings |
primvars:Blobby Ri:code integer[n] [required] Description
primvars:Blobby Ri:floats float[n] [] Description
primvars:Blobby Ri:nleaf integer [required] Description
primvars:Blobby Ri:strings integer[n] [] Description
primvars:Cone N <detail> normal [] Description
primvars:Cone Ri:height float [1] Description
primvars:Cone Ri:radius float [1] Description
primvars:Cone Ri:thetamax float [360] Description
primvars:Cone s <detail> float [] Description
primvars:Cone st <detail> float[2] [] Description
primvars:Cone t <detail> float [] Description
primvars:Curves curve:stochasticshadows integer [1] Description
primvars:Curves N <detail> normal [] Defines oriented ribbons
primvars:Curves Os <detail> color [] Opacity.
primvars:Curves P vertex point [required] Description
primvars:Curves Ri:Basis string [required] Required for non-linear curves. Values are "bezier", "b-spline", or "catmull-rom".
primvars:Curves Ri:nvertices uniform integer [required] Description
primvars:Curves Ri:type string [required] Description
primvars:Curves Ri:wrap string [required] Description
primvars:Curves s <detail> float [] Description
primvars:Curves st <detail> float[2] [] Description
primvars:Curves t <detail> float [] Description
primvars:Curves width <detail> float [] Description
primvars:Cylinder N <detail> normal [] Description
primvars:Cylinder Ri:radius float [1] Description
primvars:Cylinder Ri:thetamax float [360] Description
primvars:Cylinder Ri:zmax float [1] Description
primvars:Cylinder Ri:zmin float [-1] Description
primvars:Cylinder s <detail> float [] Description
primvars:Cylinder st <detail> float[2] [] Description
primvars:Cylinder t <detail> float [] Description
primvars:Disk N <detail> normal [] Description
primvars:Disk Ri:height float [0] Description
primvars:Disk Ri:radius float [1] Description
primvars:Disk Ri:thetamax float [360] Description
primvars:Disk s <detail> float [] Description
primvars:Disk st <detail> float[2] [] Description
primvars:Disk t <detail> float [] Description
primvars:Hyperboloid N <detail> normal [] Description
primvars:Hyperboloid Ri:point1 point [1 0 -1] Description
primvars:Hyperboloid Ri:point2 point [0 1 1] Description
primvars:Hyperboloid Ri:thetamax float [360] Description
primvars:Hyperboloid s <detail> float [] Description
primvars:Hyperboloid st <detail> float[2] [] Description
primvars:Hyperboloid t <detail> float [] Description
primvars:NuPatch N <detail> normal [] Description
primvars:NuPatch P vertex point [required] Description
primvars:NuPatch Pref vertex <point|hpoint> [] Reference P.
primvars:NuPatch Pw vertex hpoint [required] Description
primvars:NuPatch Ri:nu integer [required] Description
primvars:NuPatch Ri:nv integer [required] Description
primvars:NuPatch Ri:Orientation string ["outside"] Geometric winding order
primvars:NuPatch Ri:trimknot float[n] [] Description
primvars:NuPatch Ri:trimmax float[n] [] Description
primvars:NuPatch Ri:trimmin float[n] [] Description
primvars:NuPatch Ri:trimn integer[n] [] Description
primvars:NuPatch Ri:trimncurves integer[n] [] Description
primvars:NuPatch Ri:trimnloops integer [] Description
primvars:NuPatch Ri:trimorder integer[n] [] Description
primvars:NuPatch Ri:trimu float[n] [] Description
primvars:NuPatch Ri:trimv float[n] [] Description
primvars:NuPatch Ri:trimw float[n] [] Description
primvars:NuPatch Ri:uknot float[n] [required] Description length (Ri:uorder + Ri:nu)
primvars:NuPatch Ri:umax float [optional] Description
primvars:NuPatch Ri:umin float [optional] Description
primvars:NuPatch Ri:uorder integer [required] Description
primvars:NuPatch Ri:vknot float[n] [] Description length (Ri:vorder + Ri:nv)
primvars:NuPatch Ri:vmax float [optional] Description
primvars:NuPatch Ri:vmin float [optional] Description
primvars:NuPatch Ri:vorder integer [required] Description
primvars:NuPatch s <detail> float [] Description
primvars:NuPatch st <detail> float[2] [] Description
primvars:NuPatch t <detail> float [] Description
primvars:NuPatch trimcurve:sense string ["inside"] Description
primvars:Paraboloid N <detail> normal [] Description
primvars:Paraboloid Ri:radius float [1] Description
primvars:Paraboloid Ri:thetamax float [360] Description
primvars:Paraboloid Ri:zmax float [1] Description
primvars:Paraboloid Ri:zmin float [0] Description
primvars:Paraboloid s <detail> float [] Description
primvars:Paraboloid st <detail> float[2] [] Description
primvars:Paraboloid t <detail> float [] Description
primvars:Points N <detail> normal [] Description
primvars:Points Nref <detail> normal [] Reference N.
primvars:Points P vertex point [required] Description
primvars:Points Pref vertex point [] Reference P.
primvars:Points width <detail> float [] Description
primvars:PolygonMesh N <detail> normal [] Description
primvars:PolygonMesh Nref <detail> normal [] Reference N.
primvars:PolygonMesh P vertex point [required] Description
primvars:PolygonMesh polygon:concave integer [1] Allow concave polygons.
primvars:PolygonMesh polygon:smoothnormals integer [0] Smooth normals if not provided
primvars:PolygonMesh Pref vertex point [] Reference P.
primvars:PolygonMesh Ri:nvertices uniform integer [required] Description
primvars:PolygonMesh Ri:Orientation string ["outside"] Geometric winding order
primvars:PolygonMesh Ri:vertices facevarying integer [required] Description
primvars:PolygonMesh s <detail> float [] Description
primvars:PolygonMesh st <detail> float[2] [] Description
primvars:PolygonMesh t <detail> float [] Description
primvars:Procedural __bound float[6] [required] Description. Required for procedural 1.
primvars:Procedural procedural:immediatesubdivide integer [0] Description
primvars:Procedural procedural:reentrant integer [0] Description
primvars:Procedural proceduralVersion integer [2] Description
primvars:Procedural Ri:boundfunction string [required] Description "SimpleBound" or "DSOBound". Required for procedural 2.
primvars:Procedural Ri:subdivisionfunction string [required] Description "DelayedReadArchive" or "DynamicLoad"
primvars:Sphere N <detail> normal [] Description
primvars:Sphere Ri:radius float [1] Description
primvars:Sphere Ri:thetamax float [360] Description
primvars:Sphere Ri:zmax float [Ri:radius] Description
primvars:Sphere Ri:zmin float [-Ri:radius] Description
primvars:Sphere s <detail> float [] Description
primvars:Sphere st <detail> float[2] [] Description
primvars:Sphere t <detail> float [] Description
primvars:SubdivisionMesh dice:pretessellate integer [1] Description
primvars:SubdivisionMesh dice:watertight integer [0] Description
primvars:SubdivisionMesh N <detail> normal [] Description
primvars:SubdivisionMesh Nref <detail> normal [] Reference N.
primvars:SubdivisionMesh P vertex point [required] Description
primvars:SubdivisionMesh Pref vertex point [] Reference P.
primvars:SubdivisionMesh Ri:nvertices uniform integer [required] Description
primvars:SubdivisionMesh Ri:Orientation string ["outside"] Geometric winding order
primvars:SubdivisionMesh Ri:scheme string [required] Description
primvars:SubdivisionMesh Ri:subdivtagfloatargs float[n] [] Description
primvars:SubdivisionMesh Ri:subdivtagintargs integer[n] [] Description
primvars:SubdivisionMesh Ri:subdivtagnargs integer[n] [] Description
primvars:SubdivisionMesh Ri:subdivtags string[n] [] Description
primvars:SubdivisionMesh Ri:subdivtagstringtags string[n] [] Description
primvars:SubdivisionMesh Ri:vertices facevarying integer [required] Description
primvars:SubdivisionMesh s <detail> float [] Description
primvars:SubdivisionMesh shade:faceset integer[n] [] Description
primvars:SubdivisionMesh st <detail> float[2] [] Description
primvars:SubdivisionMesh stitchbound:CoordinateSystem string [] Description
primvars:SubdivisionMesh stitchbound:sphere float [0] Description
primvars:SubdivisionMesh t <detail> float [] Description
primvars:Torus N <detail> normal [] Description
primvars:Torus Ri:majorradius float [1] Description
primvars:Torus Ri:minorradius float [0.5] Description
primvars:Torus Ri:phimax float [360] Description
primvars:Torus Ri:phimin float [0] Description
primvars:Torus Ri:thetamax float [360] Description
primvars:Torus s <detail> float [] Description
primvars:Torus st <detail> float[2] [] Description
primvars:Torus t <detail> float [] Description
primvars:Volume Ri:Bound float[6] [0 0 0 0 0 0] Description
primvars:Volume Ri:dimensions integer[3] [required] Description [Volume]
primvars:Volume Ri:type string [required] Description [Volume]
primvars:Volume volume:dsominmax integer [0] Description [Volume]