Args Files for Procedurals

Similar to the use in shader interfaces, UI hints can be defined for renderer procedurals. RendererProceduralArgs nodes look for an Args File called proceduralName.so.args in the same directory as the .so for the selected procedural.

Here’s an example of a procedural.so.args file:

<args format="1.0" outputStyle="scenegraphAttr">
  <float name='color' size='3' default='1,0,0' widget='color'/>
  <float name='radius' default='1'/>
</args>

Note

For procedurals, the type and default value of a parameter have to be declared. This is in contrast to the use of Args Files for Shaders where the type can be interrogated directly from the shader.

Output Style

The choice of outputStyle controls how Katana declares procedural arguments to the renderer. We show the resulting RenderMan .rib and Arnold .ass generation to illustrate the differences. The following styles are available:

typedArguments

Serializes arguments into multiple typed arguments. This is the default if outputStyle is not specified.

In RenderMan:

Procedural "DynamicLoad2" "MyProc"
  "float[3] color" [0 1 0]
  "float radius" [0]

In Arnold:

procedural {
  name MyProc
  declare color constant ARRAY FLOAT
  color 3 1 FLOAT 0 1 0
  declare radius constant FLOAT
  radius 0.9
}
classic

Serializes arguments into a single string.

In RenderMan:

Procedural "DynamicLoad" ["/path/to/proc.so" "-color 0 1 0 -radius 0.9"]

In Arnold:

procedural
{
  name MyProc
  dso "/path/to/proc.so"
  data "-color 0 1 0 -radius 0.9"
}
scenegraphAttr

Serializes arguments to XML, then passes the XML string as a single string argument.