Materials

Monolithic Materials

Type

Attribute

Description

string

material.<renderer><ShaderCategory>Shader

The name of the renderer-specific shader to use for the shader category with the given name, for example:

material.dlSurfaceShader = "dlPrincipled"

group

material.<renderer><ShaderCategory>Params

A group that contains attributes that represent the parameters of the shader that is referenced by the material.<renderer><ShaderCategory>Shader attribute.

For example, a material.dlSurfaceParams group attribute contains attributes that represent the parameters of the shader referenced in material.dlSurfaceShader.

group

material.ops

See Deferred Material Ops.

Network Materials

Type

Attribute

Description

group

material.parameters

Contains a child attribute for every Material Interface parameter of the Network Material which has been altered from its default value, for example using a Material node in edit mode.

any

material.parameters.<exposedParameter>

The current value of the exposed parameter with the given name expressed as an attribute, for example:

material.parameters.Thickness = 0.73f

group

material.nodes

Contains child attributes for each shading node contributing to the Network Material represented by the material group attribute.

group

material.nodes.<node>

Contains child attributes that describe the shading node with the given name, for example dlPrincipled25.

string

material.nodes.<node>.name

The name of the shading node, as determined by the value of the name parameter of the corresponding Katana shading node, for example:

material.nodes.dlPrincipled25.name = "dlPrincipled25"

string

material.nodes.<node>.type

The type of the shading node, as determined by the value of the nodeType parameter of the corresponding Katana shading node, referencing a particular shader that the node represents by its name, for example:

material.nodes.dlPrincipled25.type = "dlPrincipled"

string

material.nodes.<node>.target

The name of the renderer that the shading node targets, for example:

material.nodes.dlPrincipled25.target = "dl"

string

material.nodes.<node>.srcName

The name of the Katana node that created this attribute, for example:

material.nodes.dlPrincipled25.srcName = "dlPrincipled25"

group

material.nodes.<node>.parameters

Contains a child attribute for every shader parameter of the node which has been altered from its default value.

any

material.nodes.<node>.parameters.<parameter>

The altered value of the parameter with the given name expressed as an attribute, for example:

material.nodes.dlPrincipled25.parameters.coating_thickness = 0.48f

If the parameter is exposed in the Material Interface of the Network Material (see material.interface below), this value is used as the default value for the parameter in the Material Interface.

group

material.nodes.<node>.connections

Contains a child attribute for every connection going into the node.

Note that non-contributing nodes are skipped for connections expressed by this attribute (e.g. Dot nodes and disabled nodes), whereas material.layout.<node>.connections (see below) takes those into account.

string

material.nodes.<node>.connections.<inputPort>

A reference to the output port on another node, given in the format <sourcePort>@<sourceNode>, which is connected to the input port with the given name, for example:

material.nodes.dlPrincipled25.connections.color = "outColor@myChecker"

group

material.terminals

Contains two child attributes for every terminal of the Network Material that is represented by the material group attribute.

string

material.terminals.<renderer><ShaderCategory>

The name of the shading node connected to the terminal with the given name (which consists of the name of the renderer and the name of the shader category), for example:

material.terminals.dlSurface = "dlPrincipled25"

string

material.terminals.<renderer><ShaderCategory>Port

The name of the output port on the shading node with the name that is specified in the material.terminals.<renderer><ShaderCategory> attribute, for example:

material.terminals.dlSurfacePort = "outColor"

group

material.interface

Contains child group attributes for each shader parameter that has been exposed for the Material Interface of the Network Material.

group

material.interface.<exposedParameter>

Contains child attributes that describe the exposed parameter with the given name, for example Thickness, or Roughness.

string

material.interface.<exposedParameter>.src

The path of the source parameter that the exposed parameter represents, given in the format <node>.<parameter>, e.g. "dlPrincipled25.coating_thickness", or "dlPrincipled25.roughness", for example:

material.interface.Thickness.src = "dlPrincipled25.coating_thickness"

group

material.interface.<exposedParameter>.hints

Contains child attributes for hints that have been set for the exposed parameter, which depend on the type of the parameter and the type of widget used for it. A couple of common parameter hints are documented below. For more information, see Widgets and Hints.

string

material.interface.<exposedParameter>.hints.help

Help text that has been set for the exposed parameter, which is made available to the user in the form of a help button in the parameter’s UI.

string

material.interface.<exposedParameter>.hints.page

The title of a page under which the exposed parameter is to appear, for example "Coating", or "Base".

string

material.style

Indicates the type of material that the material group attribute represents.

For Network Materials, material.style is set to "network".

For Monolithic Materials, the material.style attribute is not set.

string

material.info.name

The name of the NetworkMaterial node that created the Network Material.

int

material.info.layoutVersion

The version number of the material.layout attribute convention.

int

material.info.sourceLayoutVersion

The source network’s version number of the material.layout attribute convention. This will be zero for a legacy NetworkMaterial.

group

material.layout

Added for Network Materials created by NetworkMaterialCreate nodes. See Network Material Layout Attributes section below.

Network Material Layout Attributes

Note: Some attributes are equivalent to material.nodes attributes to ensure their availability for non-contributing nodes, e.g. Dot nodes and disabled nodes. Those nodes do not contribute to the Network Material’s result when it comes to rendering.

Type

Attribute

Description

group

material.layout

Similar to material.nodes, the material.layout group attribute contains child attributes for each shading node contributing to the Network Material represented by the material group attribute. In addition to shading nodes, other types of nodes are covered as well, which are part of the layout of the shading node network, for example Dot nodes, Switch nodes, and Backdrop nodes.

The layout information stored in material.layout can be used by UI components to restore a shading node network with its full layout, including node positions and colors. The attribute can typically safely be ignored by renderer plug-ins, as shading node layout information is not typically meaningful for rendering a scene.

group

material.layout.<node>

Contains child attributes that describe the Katana node with the given name, for example dlPrincipled25.

string

material.layout.<node>.katanaNodeType

The name of the type of the Katana node described by the material.layout.<node> group attribute, for example:

material.layout.dlPrincipled25.katanaNodeType = "DlShadingNode"

(A shading node type name is created as "%sShadingNode" % rendererName.capitalize(), for example DlShadingNode.)

float[3]

material.layout.<node>.color

The RGB component values of a color that has been applied to the node, for example:

material.layout.bump3d2.color = [0.45f, 0.25f, 0.25f]

string

material.layout.<node>.comment

A comment that has been set for the node, which may contain multiple lines of text.

int (bool)

material.layout.<node>.disabled

Boolean flag that states whether the node is disabled (1) or not (0), for example:

material.layout.bump3d2.disabled = 1

By default, nodes are enabled, and this attribute is not set.

string

material.layout.<node>.parent

The name of the NetworkMaterialCreate or ShadingGroup node that contains the Katana node with the given name, for example:

material.layout.Dot1.parent = "NetworkMaterialCreate4"

double[2]

material.layout.<node>.position

The position of the Katana node as X and Y coordinates within its parent group node’s node graph, for example:

material.layout.bump3d2.position = [-54.0, 13.5]

string[]

material.layout.<node>.connections

A list of descriptions of connections going into the node, each following the format <inputPort>:<sourcePort>@<sourceNode>, for example:

material.nodes.dlPrincipled25.connections = ["color:output@Dot1", "anisotropy_direction:outNormal@bump3d2"]

Note that non-contributing nodes are taken into account for connections expressed by this attribute (e.g. Dot nodes and disabled nodes), whereas material.nodes.<node>.connections (see above) skips them.

int (enum)

material.layout.<node>.viewState

A shading node’s view state:
  • 0: show the node in a minimal/collapsed state without any ports

  • 1: show connected ports only

  • 2: show all ports (default)

group

material.layout.<node>.nodeShapeAttributes

A group containing all of the node’s shape attributes. Supported types for child attributes are StringAttribute & FloatAttribute.

group

material.layout.<node>.parameters

A group containing a representation of all of the node’s locally set parameters as they would appear under material.nodes.

group

material.layout.<node>.parameterVars

A group containing a representation of all the node’s parameters, detailing their enabled state, value and type (see section below).

group

material.layout.<node>.userParameters

A group containing a representation of all of the node’s “user” parameters.

group

material.layout.<node>.nodeSpecificAttributes

A group containing any node type-specific attributes (see section below).

Parameter Variables Layout Attributes

All attributes in this section are inside the following attribute group: material.layout.<node>.parameterVars.<parameter>.

These attributes represent the raw parameter state before they are baked. In particular, these variables reflect what is shown in the Parameters tab.

Type

Attribute

Description

int

.enable

Trinary flag to indicate whether, when baked, this parameter should forcibly use the default value (-1), inherit the value set upstream (0), or use the locally set value (1).

any

.value

The locally set value of this parameter.

string

.type

A string representation of this parameter’s type.

Node Type-Specific Network Material Layout Attributes

Note: Some attributes are equivalent to material.nodes attributes to ensure their availability for non-contributing nodes.

All attributes in this section are inside the following attribute group: material.layout.<node>.nodeSpecificAttributes

Shading Node

Type

Attribute

Description

string

.name

The value of the name parameter of the Katana shading node, equivalent to material.nodes.<node>.name.

string

.shaderType

The value of the nodeType parameter of the Katana shading node, equivalent to material.nodes.<node>.type (named differently here to reduce ambiguity).

string

.target

The name of the renderer that the shading node targets, equivalent to material.nodes.<node>.target.

string[]

.expandedPages

A list of names of pages that are expanded to reveal their contents, with subpages denoted by > characters.

string[]

.collapsedPages

A list of names of pages that are collapsed to hide their contents, with subpages denoted by > characters.

Dot

Type

Attribute

Description

int (bool)

.displayAsDot

Boolean flag that states whether to display a Dot node with a round node shape (1) or with the standard node shape (0, aka. basic display), which shows view flag, node name, and edit flag.

By default, Dot nodes are displayed with a round node shape, and this attribute is not set.

Backdrop

Type

Attribute

Description

double[2]

.size

The size of the Backdrop node as width and height.

string

.text

The text of the Backdrop node.

float

.fontScale

The font scale used for the Backdrop node, as a multiplier (default: 1.0f) of the text size used for node names.

float

.zDepth

The Z order index of the Backdrop node.

Switch

Type

Attribute

Description

int

.size

The value of the Switch node’s ‘in’ parameter.

group

.inputs

The names and “display names” of the node’s input ports.

ShadingNodeArrayConnector

Type

Attribute

Description

group

.inputs

The names and “display names” of the node’s input ports.

VariableSwitch

Type

Attribute

Description

string

.variableName

The value of the VariableSwitch node’s ‘in’ parameter.

group

.patterns

The names and values of the node’s “patterns” child parameters.

group

.inputs

The names and display name labels of the node’s input ports.

ShadingGroup

Type

Attribute

Description

string[]

.expandedPages

A list of names of pages that are expanded to reveal their contents in the external interface of the ShadingGroup node, with subpages denoted by > characters.

string[]

.collapsedPages

A list of names of pages that are collapsed to hide their contents in the external interface of the ShadingGroup node, with subpages denoted by > characters.

group

.outputSidebar

Group containing the page expansion state for the internal output interface, in the form of .expandedPages and .collapsedPages child string attributes equivalent to those describing the external interface.

group

.inputSidebar

Group containing the page expansion state for the internal input interface, in the form of .expandedPages and .collapsedPages child string attributes equivalent to those describing the external interface.

group

.outputPorts

Group containing an entry for every output port of the ShadingGroup node.

string

.outputPorts.<port>.name

The unique identifier name of the port.

string

.outputPorts.<port>.displayName

The display name label of the port.

string[]

.outputPorts.<port>.tags

A list of string tag expressions for valid port connections.

group

.inputPorts

Group containing an entry for every output port of the ShadingGroup node.

string

.inputPorts.<port>.name

The unique identifier name of the port.

string

.inputPorts.<port>.displayName

The display name label of the port.

string[]

.inputPorts.<port>.tags

A list of string tag expressions for valid port connections.

string[]

.returnConnections

A list of valid return connections, with each entry matching the format <returnPort>:<sourcePort>@<sourceNode>.

Assigning Materials

To assign a material to an object, set a materialAssign string attribute on the scene graph location that represents the object to the path of the scene graph location of the material to assign.

Type

Attribute

Description

string

materialAssign

The path of the scene graph location of the assigned material, for example /root/materials/carPaint.

Material Underlays

Type

Attribute

Description

group

material.underlayAttrs

An attribute that, at material resolve time, is copied to the root level of the target location’s attributes, and merged underneath any existing attribute values at that location.

This allows, for example, custom “default” renderer object settings to be specified for locations, which can be overridden by any locally-set values.

group

info.material.underlayAttrs

This is primarily for debug purposes. After the implicit resolve these attributes are moved so that you can still see which material underlays have been processed, but are no longer at risk of being resolved again.