Skip to content

Commit a518876

Browse files
authored
Move Standard Library Shader Nodes to StandardNodes doc (#2278)
Move the description of Standard Library Shader Nodes from the main Specification doc to the new StandardNodes doc. Adjust other text and links as needed.
1 parent af1bf53 commit a518876

2 files changed

Lines changed: 40 additions & 36 deletions

File tree

documents/Specification/MaterialX.Specification.md

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ MaterialX Specification v1.39
88
**Version 1.39**
99
Doug Smythe - Industrial Light & Magic
1010
Jonathan Stone - Lucasfilm Advanced Development Group
11-
March 9, 2025
11+
March 15, 2025
1212

1313

1414
# Introduction
@@ -74,7 +74,6 @@ This document describes the core MaterialX specification. Companion documents [
7474
   [Example Custom Node Defined by a Nodegraph](#example-custom-node-defined-by-a-nodegraph)
7575
  [Custom Node Use](#custom-node-use)
7676
[Shader Nodes](#shader-nodes)
77-
  [Standard Library Shader Nodes](#standard-library-shader-nodes)
7877
[Material Nodes](#material-nodes)
7978
  [Example Pre-Shader Compositing Material](#example-pre-shader-compositing-material)
8079
[Material Variants](#material-variants)
@@ -657,15 +656,17 @@ MaterialX also supports the following additional attributes for Output elements
657656

658657
## Standard Nodes
659658

660-
A core part of MaterialX is its set of Standard Nodes, divided into four categories: Source nodes, Operator Nodes, Physically-Based Shading nodes, and NPR (non-photorealistic) Shading nodes.
659+
A core part of MaterialX is its set of Standard Nodes, divided into five categories: Source nodes, Operator nodes, Standard Shader nodes, Physically-Based Shading nodes, and NPR (non-photorealistic) Shading nodes.
661660

662-
**Source nodes** use external data and/or procedural functions to form an output; they do not have any required inputs. Standard Source Nodes are grouped into the following classifications: [Texture Nodes](./MaterialX.StandardNodes.md#texture-nodes), [Procedural Nodes](./MaterialX.StandardNodes.md#procedural-nodes), [Noise Nodes](./MaterialX.StandardNodes.md#noise-nodes), [Shape Nodes](./MaterialX.StandardNodes.md#shape-nodes), [Geometric Nodes](./MaterialX.StandardNodes.md#geometric-nodes) and [Application Nodes](./MaterialX.StandardNodes.md#application-nodes).
661+
[**Source nodes**](./MaterialX.StandardNodes.md#standard-source-nodes) use external data and/or procedural functions to form an output; they do not have any required inputs. Standard Source Nodes are grouped into the following classifications: [Texture Nodes](./MaterialX.StandardNodes.md#texture-nodes), [Procedural Nodes](./MaterialX.StandardNodes.md#procedural-nodes), [Noise Nodes](./MaterialX.StandardNodes.md#noise-nodes), [Shape Nodes](./MaterialX.StandardNodes.md#shape-nodes), [Geometric Nodes](./MaterialX.StandardNodes.md#geometric-nodes) and [Application Nodes](./MaterialX.StandardNodes.md#application-nodes).
663662

664-
**Operator nodes** process one or more required input streams to form an output. Standard Operator Nodes are grouped into the following classifications: [Math Nodes](./MaterialX.StandardNodes.md#math-nodes), [Logical Operator Nodes](./MaterialX.StandardNodes.md#logical-operator-nodes), [Adjustment Nodes](./MaterialX.StandardNodes.md#adjustment-nodes), [Compositing Nodes](./MaterialX.StandardNodes.md#compositing-nodes), [Conditional Nodes](./MaterialX.StandardNodes.md#conditional-nodes), [Channel Nodes](./MaterialX.StandardNodes.md#channel-nodes) and [Convolution Nodes](./MaterialX.StandardNodes.md#convolution-nodes).
663+
[**Operator nodes**](./MaterialX.StandardNodes.md#standard-operator-nodes) process one or more input streams to form an output. Standard Operator Nodes are grouped into the following classifications: [Math Nodes](./MaterialX.StandardNodes.md#math-nodes), [Logical Operator Nodes](./MaterialX.StandardNodes.md#logical-operator-nodes), [Adjustment Nodes](./MaterialX.StandardNodes.md#adjustment-nodes), [Compositing Nodes](./MaterialX.StandardNodes.md#compositing-nodes), [Conditional Nodes](./MaterialX.StandardNodes.md#conditional-nodes), [Channel Nodes](./MaterialX.StandardNodes.md#channel-nodes) and [Convolution Nodes](./MaterialX.StandardNodes.md#convolution-nodes).
665664

666-
**Physically-Based Shading nodes** are shader-semantic nodes implementing a number of widely-used [BSDF/BSSRDF](./MaterialX.PBRSpec.md#bsdf-nodes), [emission](./MaterialX.PBRSpec.md#edf-nodes) and [volume](./MaterialX.PBRSpec.md#vdf-nodes) distribution functions and [utility nodes](./MaterialX.PBRSpec.md#utility-nodes) useful in constructing complex layered rendering shaders using node graphs, as well as a set of complete [PBR Shader Nodes](./MaterialX.PBRSpec.md#pbr-shader-nodes) implementing open standard shading models.
665+
[**Standard Shader nodes**](./MaterialX.StandardNodes.md#standard-shader-nodes) comprise non-shading shaders such as for displacement, and shaders which do not respond to external illumination.
667666

668-
**NPR Shading nodes** are operations that are desirable in non-photorealistic shading styles but which cannot be implemented within certain rendering constructs. These include [NPR Application Nodes](./MaterialX.NPRSpec.md#npr-application-nodes), [NPR Utility Nodes](./MaterialX.NPRSpec.md#npr-utility-nodes) and [NPR Shading Nodes](./MaterialX.NPRSpec.md#npr-shading-nodes).
667+
[**Physically-Based Shading nodes**](./MaterialX.PBRSpec.md) are shader-semantic nodes implementing a number of widely-used [BSDF/BSSRDF](./MaterialX.PBRSpec.md#bsdf-nodes), [emission](./MaterialX.PBRSpec.md#edf-nodes) and [volume](./MaterialX.PBRSpec.md#vdf-nodes) distribution functions and [utility nodes](./MaterialX.PBRSpec.md#utility-nodes) useful in constructing complex layered rendering shaders using node graphs, as well as a set of complete [PBR Shader Nodes](./MaterialX.PBRSpec.md#pbr-shader-nodes) implementing open standard shading models.
668+
669+
[**NPR Shading nodes**](./MaterialX.NPRSpec.md) are operations that are desirable in non-photorealistic shading styles but which cannot be implemented within certain rendering constructs. These include [NPR Application Nodes](./MaterialX.NPRSpec.md#npr-application-nodes), [NPR Utility Nodes](./MaterialX.NPRSpec.md#npr-utility-nodes) and [NPR Shading Nodes](./MaterialX.NPRSpec.md#npr-shading-nodes).
669670

670671

671672

@@ -1313,33 +1314,7 @@ As with non-shader custom nodes, **Input** elements are used within a <nodede
13131314

13141315
An input with a shader-semantic type may be given a value of "" to indicate no shader node is connected to this input; this is typically the default for shader-semantic inputs of operator nodes. It is up to applications to decide what to do with unconnected shader-semantic inputs.
13151316

1316-
1317-
1318-
### Standard Library Shader Nodes
1319-
1320-
The Standard MaterialX Library defines the following nodes and node variants operating on "shader"-semantic types. Standard library shaders do not respond to external illumination; please refer to the [**MaterialX Physically Based Shading Nodes**](./MaterialX.PBRSpec.md#materialx-pbs-library) document for definitions of additional nodes and shader constructors which do respond to illumination.
1321-
1322-
<a id="node-surface-unlit"> </a>
1323-
1324-
* **`surface_unlit`**: an unlit surface shader node, representing a surface that can emit and transmit light, but does not receive illumination from light sources or other surfaces. Output type surfaceshader.
1325-
* `emission` (float): the surface emission amount; default is 1.0
1326-
* `emission_color` (color3): surface emission color; default is (1, 1, 1)
1327-
* `transmission` (float): the surface transmission amount; default is 0
1328-
* `transmission_color` (color3): surface transmission color; default is (1, 1, 1)
1329-
* `opacity` (float): surface cutout opacity; default is 1.0
1330-
1331-
<a id="node-displacement"> </a>
1332-
1333-
* **`displacement`**: Constructs a displacement shader describing geometric modification to surfaces. Output type "displacementshader".
1334-
* `displacement` (float or vector3): Scalar (along the surface normal direction) or vector displacement (in (dPdu, dPdv, N) tangent/normal space) for each position. Default is 0.
1335-
* `scale` (float): Scale factor for the displacement vector. Default is 1.0.
1336-
1337-
<a id="node-mix-shader"> </a>
1338-
1339-
* **`mix`**: linear blend between two surface/displacement/volumeshader closures.
1340-
* `bg` (surface/displacement/volumeshader): the name of the background shader-semantic node
1341-
* `fg` (surface/displacement/volumeshader): the name of the foreground shader-semantic node
1342-
* `mix` (float): the blending factor used to mix the two input closures
1317+
Please refer to [**Standard Shader Nodes**](./MaterialX.StandardNodes.md#standard-shader-nodes), [**Physically-Based Shading Nodes**](./MaterialX.PBRSpec.md) and [**NPR Shading Nodes**](./MaterialX.NPRSpec.md) for descriptions of Shader Nodes defined by MaterialX.
13431318

13441319

13451320

documents/Specification/MaterialX.StandardNodes.md

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ MaterialX Standard Nodes v1.39
88
**Version 1.39**
99
Doug Smythe - Industrial Light & Magic
1010
Jonathan Stone - Lucasfilm Advanced Development Group
11-
March 9, 2025
11+
March 15, 2025
1212

1313

1414
# Introduction
@@ -41,6 +41,8 @@ In the descriptions below, a node with an "(NG)" annotation indicates a node tha
4141
[Channel Nodes](#channel-nodes)
4242
[Convolution Nodes](#convolution-nodes)
4343

44+
**[Standard Shader Nodes](#standard-shader-nodes)**
45+
4446
<br>
4547

4648

@@ -1090,7 +1092,7 @@ The Mix node takes two 1-4 channel inputs `fg` and `bg` plus a separate 1-channe
10901092
* `mix` (float or same type as `bg`): the 0-1 mixing value; default is 0.
10911093

10921094

1093-
See also the [Standard Library Shader Nodes](./MaterialX.Specification.md#standard-library-shader-nodes) section of the main Specification document for additional `mix` operator variants supporting shader-semantic types.
1095+
See also the [Standard Shader Nodes](#standard-shader-nodes) section below for additional shader-semantic variants of the [`mix` node](#node-mix-shader).
10941096

10951097

10961098

@@ -1227,4 +1229,31 @@ Convolution nodes have one input named "in", and apply a defined convolution fun
12271229
* `in` (float): the input value or nodename
12281230
* `scale` (float): the scale of normal map deflections relative to the gradient of the height map. Default is 1.0.
12291231

1232+
<br>
1233+
1234+
1235+
# Standard Shader Nodes
1236+
1237+
The Standard MaterialX Library defines the following nodes and node variants operating on "shader"-semantic types. Standard library shaders do not respond to external illumination; please refer to the [**MaterialX Physically Based Shading Nodes**](./MaterialX.PBRSpec.md#materialx-pbs-library) document for definitions of additional nodes and shader constructors which do respond to illumination, as well as [**MaterialX NPR Shading Nodes**](./MaterialX.NPRSpec.md) for definitions of shaders and nodes applicable to non-photorealistic rendering.
1238+
1239+
<a id="node-surface-unlit"> </a>
1240+
1241+
* **`surface_unlit`**: an unlit surface shader node, representing a surface that can emit and transmit light, but does not receive illumination from light sources or other surfaces. Output type surfaceshader.
1242+
* `emission` (float): the surface emission amount; default is 1.0
1243+
* `emission_color` (color3): surface emission color; default is (1, 1, 1)
1244+
* `transmission` (float): the surface transmission amount; default is 0
1245+
* `transmission_color` (color3): surface transmission color; default is (1, 1, 1)
1246+
* `opacity` (float): surface cutout opacity; default is 1.0
1247+
1248+
<a id="node-displacement"> </a>
1249+
1250+
* **`displacement`**: Constructs a displacement shader describing geometric modification to surfaces. Output type "displacementshader".
1251+
* `displacement` (float or vector3): Scalar (along the surface normal direction) or vector displacement (in (dPdu, dPdv, N) tangent/normal space) for each position. Default is 0.
1252+
* `scale` (float): Scale factor for the displacement vector. Default is 1.0.
1253+
1254+
<a id="node-mix-shader"> </a>
12301255

1256+
* **`mix`**: linear blend between two surface/displacement/volumeshader closures.
1257+
* `bg` (surface/displacement/volumeshader): the name of the background shader-semantic node
1258+
* `fg` (surface/displacement/volumeshader): the name of the foreground shader-semantic node
1259+
* `mix` (float): the blending factor used to mix the two input closures

0 commit comments

Comments
 (0)