| Attributes

Dice attributes
The attributes in this category control how a primitive will be tessellated for raytracing or scan-line rendering.
Attribute "dice" "int minsubdivision" [2]
This is the minimum number of subdivisions that have to be performed to triangulate the surface of a primitive for raytracing. If the primitive has a very large curvature, you may want to increase this number (although default value is usually sufficient).
Attribute "dice" "int maxsubdivision" [10]
This is the maximum number of subdivisions to make in tesselating a surface for raytracing.
Attribute "dice" "int numprobes[2]" [3 3]

During the scan line rendering, the renderer needs to estimate the bounding box of a piece of a primitive. Pixie does this by sampling points on the surface and then extending the bounding of these points. "numprobes" controls the number of samples in u and v directions to take in order to estimate the bound. Notice that this is just an estimate and the renderer may underestimate the correct bound. The right way to do this is to actually subdivide the surface. But this consumes lost of computation and memory.

Attribute "dice" "int minsplits" [2]
This controls the minimum number of times a surface is split before dropping into the reyes pipeline. Since the pixie estimates the surface bounds by sampling, this number must be greater than 0 for some primitives.
Attribute "dice" "float boundexpand" [0.5]
This is the factor by which Pixie will overestimate the bound of the surface pieces. The bounding box computed by point sampling on the surface will be expanded by this factor.
Attribute "dice" "int binary" [0]
If this value is 1, when sampling a grid on a surface piece, create a power of two edges on the boundaries. This attribute is used to help the patch cracking problem.

Displacement attributes
These attributes are used to tell renderer how much a displacement shader actually displaces the surface. This information is vital for accurately tessellating and rendering surfaces displaced surfaces.
Attribute "displacement" "float sphere" [0]
This is the amount in the displacement coordinate system by which the displacement shader can move the surface.
Attribute "displacement" "string coordinatesystem" "current"
This command sets the coordinate system that the displacement bound is expressed in.

Visibility attributes
The attributes in this class control the visibility behaviors of objects.
Attribute "visibility" "int camera" [1]
If 1, the object is visible to camera rays (and to the scanline renderer).
Attribute "visibility" "int trace" [0]
If 1, the object is visible to rays created by the trace shading language command.
Attribute "visibility" "int photon" [0]
If 1, the object is visible to photons (i.e. it will block / bounce photons).
Attribute "visibility" "string transmission" "transparent"
This value controls the shadowing behavior of the object. If this value is "transparent", the object is not visible to the transmission rays and is considered completely transparent. If it is "opaque", the object is considered opaque. If it is "shader", the surface shader is executed to find out the opacity. If it is "Os", the opacity of the surface is copied from the Os attribute.

Trace attributes
These attributes control the raytracer behavior.
Attribute "trace" "int displacements" [0]
If 1, the surface will be displaced before the raytracing. True displacements for raytracing may be very expensive. Use this attribute sparingly as for most displacement shaders, this will not create noticeable change.
Attribute "trace" "float bias" [0.01]
This is the self-intersection bias. This single value is used for all raytracing as well as shadow mapping computations. Notice that the default value is different than the PrMan's shadow option.
Attribute "trace" "int maxdiffusedepth" [1]
This is the maximum number of diffuse photon bounces to compute with the photon hider.
Attribute "trace" "int maxspeculardepth" [2]
This is the maximum number of specular photon bounces to compute with the photon hider.

Irradiance attributes
These attributes control the irradiance / occlusion caching.
Attribute "irradiance" "string handle" ""

This is the irradiance cache file. Irradiance caching is usually a two pass approach: in the first pass, an irradiance cache is computed and saved into the file whose name is given by this attribute. In the second pass the same file used. Notice that this is an attribute, meaning different objects can save irradiance / occlusion information into separate files. This file is used by both indirectdiffuse and occlusion shading language commands.

Attribute "irradiance" "string filemode" ""
This argument controls how the irradiance file is used. Valid argument values are "","r", "w" for no r/w, read and write. You want to use "w" for the first pass and "r" for the second.
Attribute "irradiance" "float maxerror" [0.5]
This is a quality knob for the irradiance cache. 0 means a new sample is computer for each shading point without caching (very bad idea).

Photon attributes
These attributes control the photon mapping.
Attribute "photon" "string globalmap" ""
This attribute specifies the global photonmap to create if photon hider is being used.
Attribute "photon" "string causticmap" ""
This attribute specifies the caustic photonmap to create if photon hider is being used.
Attribute "photon" "string shadingmodel" "matte"
This attribute gives the shading model to use when scattering photons. The valid values are: "matte", "glass", "water", "chrome" and "transparent".
Attribute "photon" "int estimator" "100"
This is the number of photons to use when estimating the irradiance. Bigger numbers will cause smoother but blurrier estimates. The smaller numbers will create sharper but noisier image.