Args Files for Procedurals ========================== .. highlight:: xml Similar to the use in shader interfaces, UI hints can be defined for renderer procedurals. :kat:node:`RendererProceduralArgs` nodes look for an Args File called :samp:`{proceduralName}.so.args` in the same directory as the :file:`.so` for the selected procedural. Here's an example of a ``procedural.so.args`` file:: .. note:: For procedurals, the type and default value of a parameter have to be declared. This is in contrast to the use of :doc:`ForShaders` 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.