-
Notifications
You must be signed in to change notification settings - Fork 5
Node structure
ymesh edited this page Feb 3, 2013
·
4 revisions
All nodes and node networks are stored in unified XML format. Here is basic node structure:
Node description:
<node name="nodeName" - internal node name
label="Node_Label" - user-friendly node label (without white spaces)
author="Node author name"
type="surface" ( rib, rib_code, rsl_code, image, surface, displacement, light, volume )
icon="nodeName.png"> - icon file name (relative to .xml node location)
<help>Short node description</help>
Input parameters:
<input>
<property name="Ci" type="color" default="color(1.0, 1.0, 1.0)" />
<property name="Oi" type="color" default="color(1.0, 1.0, 1.0)" />
</input>
Output parameters:
<output>
<property name="volume" type="rib" default="Surface "${NODELABEL}"" />
<property name="__color" type="color" default="color(0)" detail="varying" provider="primitive" />
</output>
Include files needed for RSL shader:
<include>
<file name="noises.h"/>
<file name="pxslUtil.h"/>
</include>
Internal local variables names, that can be used inside code block as $(name):
<internal>
<variable name="spec"/>
</internal>
Python code that will execute before node code processing. Here is possible to change parameters and code at run-time.
<param_code>
<![CDATA[
print ":: Hello from %s XML code !!!" % self.label
]]>
Main node code. The format depends of node type (SL, RIB, ...)
<code><![CDATA[
#define SURFACE_SHADER ${INSTANCENAME}
surface ${INSTANCENAME} (
${PARAMS}
)
{
/* CODE BEGIN ${INSTANCENAME} */
Ci = $(Ci) * $(Oi);
Oi = $(Oi);
/* CODE END ${INSTANCENAME} */
}
]]>
</code>
</node>
Node parameter description:
<property name="paramName" - parameter name for internal purposes and final shader
label="Parameter Name" - user-friendly parameter name
type="rib" - (image, float, int, color, string, normal, point, vector, matrix, surface, displacement, volume, light, rib, text, transform )
shaderParam="1" - =1 if parameter is used as external in compiled shader
space="rgb" - space option ("rgb", "hsv", "hsl", "xyz", "XYZ", "YIQ") for color,
("current", "shader", "object", "camera", "world", "raster", "NDC", "screen")
for point, vector, normal, matrix
detail="uniform" - (uniform, varying)
provider="external" - (internal, external, primitive, attribute)
subtype="slider" - (slider, switch, selector, file)
range="1 100 0.1" - "Min Max Step" for slider
- "item1=value1:item2=value2:item" for selector
(if values are 0,1,.. they can be omitted)
value="" - parameter value
default="" - default parameter value
display="hidden" - used for hidden parameters
>
<help>Short parameter description</help>
</property>