Skip to content

Commit af1bf53

Browse files
authored
Move Standard Nodes specification to its own document (#2268)
In anticipation of imminent updates from the AOUSD group's work to create normative definitions of all MaterialX nodes, this PR moves the descriptions of the Standard Source Nodes and Standard Operator Nodes from the main Specification.md file into a new MaterialX.StandardNodes.md file. This also updates hyperlinks throughout all .md files as needed to reflect the new organization, has a rewritten Compositing Nodes section to use the same "bullet-point" formatting as the other nodes, plus other minor typo and formatting fixes.
1 parent dcd0285 commit af1bf53

8 files changed

Lines changed: 1293 additions & 1153 deletions

documents/Specification/MaterialX.GeomExts.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ There are many formats that can be used to describe the associations between sha
5151

5252
**[References](#references)**
5353

54+
<br>
5455

5556

5657
# Geometry Representation
@@ -142,6 +143,7 @@ So the following MTLX file snippets are equivalent:
142143
</materialx>
143144
```
144145

146+
<br>
145147

146148

147149
# Additional MaterialX Data Types
@@ -150,6 +152,8 @@ Systems supporting MaterialX Geometry Extensions support the following additiona
150152

151153
**GeomName** and **GeomNameArray**: attributes of type "geomname" are just strings within quotes, but specifically mean the name of a single geometry using the conventions described in the [**Geometry Representation**](#geometry-representation) and [**Geometry Name Expressions**](#geometry-name-expressions) sections. A geomname is allowed to use a geometry name expression as long as it resolves to a single geometry. Attributes of type "geomnamearray" are strings within quotes containing a comma-separated list of one or more geomname values with or without expressions, and may resolve to any number of geometries.
152154

155+
<br>
156+
153157

154158
# Additional Filename Substitutions
155159

@@ -163,6 +167,7 @@ Filename input values for various nodes can include one or more special strings
163167

164168
Only applications fully supporting Geometry Extensions may allow using a &lt;_geometry token_> as part of a larger filename string. All applications should allow the use of "&lt;_geometry token_>" as the full filename string, in which case the string primvar value stored with the geometry is used as the filename unchanged; the string primvar value itself might be allowed to contain another token such as &lt;UDIM> which the renderer may be able to parse and replace itself.
165169

170+
<br>
166171

167172

168173
# Geometry Info Elements
@@ -298,6 +303,7 @@ Workflows involving textures with implicitly-computed filenames based on u,v coo
298303
</geominfo>
299304
```
300305

306+
<br>
301307

302308

303309
# Look and Property Elements
@@ -510,6 +516,8 @@ This example defines four collections, a light shader and material, and a proper
510516
</materialx>
511517
```
512518

519+
<br>
520+
513521

514522
# References
515523

documents/Specification/MaterialX.NPRSpec.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ July 1, 2024
1212

1313
# Introduction
1414

15-
The MaterialX Specification and MaterialX Physically Based Shading Nodes documents describe a number of standard pattern and shading nodes that may be used to construct nodegraph-based shaders for physically based rendering in a variety of applications. However, there are certain operations that are desirable in non-photorealistic shading styles but which cannot be implemented within certain rendering constructs. It is also helpful conceptually to separate nodes primarily useful for photorealistic and non-photorealistic shading styles into separate libraries.
15+
The [MaterialX Standard Nodes](./MaterialX.StandardNodes.md) and [MaterialX Physically Based Shading Nodes](./MaterialX.PBRSpec.md) documents describe a number of standard pattern and shading nodes that may be used to construct nodegraph-based shaders for physically based rendering in a variety of applications. However, there are certain operations that are desirable in non-photorealistic shading styles but which cannot be implemented within certain rendering constructs. It is also helpful conceptually to separate nodes primarily useful for photorealistic and non-photorealistic shading styles into separate libraries.
1616

1717
This document describes a number of MaterialX nodes primarily applicable to non-photorealistic, or NPR, rendering. Rendering applications whose architecture cannot support these operations are not required to support these nodes.
1818

@@ -26,6 +26,8 @@ This document describes a number of MaterialX nodes primarily applicable to non-
2626

2727
**[References](#references)**
2828

29+
<br>
30+
2931

3032
# MaterialX NPR Library
3133

@@ -64,6 +66,7 @@ This document describes a number of MaterialX nodes primarily applicable to non-
6466
* `shininess` (float): the specular power typically ranging from 1 to 256, defaults to 64.
6567
* `light_direction` (vector3): the incoming predominant lighting direction in world space, defaults to (1.0, -0.5, -0.5).
6668

69+
<br>
6770

6871

6972
# References

documents/Specification/MaterialX.PBRSpec.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ This document describes a number of shader-semantic nodes implementing widely-us
4848

4949
**[References](#references)**
5050

51+
<br>
5152

5253

5354
# Physical Material Model
@@ -80,7 +81,7 @@ In general, a color given as input to the renderer is considered to represent a
8081

8182
MaterialX supports the use of [color management systems](./MaterialX.Specification.md#color-spaces-and-color-management-systems) to associate colors with specific color spaces. A MaterialX document typically specifies the working color space that is to be used for the document as well as the color space in which input values and textures are given. If these color spaces are different from the working color space, it is the application's and shader generator's responsibility to transform them.
8283

83-
The ShaderGen module has an interface that can be used to integrate support for different color management systems. A simplified implementation with some popular and commonly used color transformations is supplied and enabled by default. A full integration of OpenColorIO ([http://opencolorio.org](http://opencolorio.org)) is planned for the future.
84+
The ShaderGen module has an interface that can be used to integrate support for different color management systems. A simplified implementation with some popular and commonly used color transformations is supplied and enabled by default. An integration with the relevant portions of OpenColorIO ([http://opencolorio.org](http://opencolorio.org)) is planned for the future.
8485

8586

8687
## Surfaces
@@ -135,6 +136,7 @@ Local lights are specified as light shaders assigned to a locator, modeling an e
135136

136137
Light contributions coming from far away are handled by environment lights. These are typically photographically-captured or procedurally-generated images that surround the whole scene. This category of lights also includes sources like the sun, where the long distance traveled makes the light essentially directional and without falloff. For all shading points, an environment is seen as being infinitely far away.
137138

139+
<br>
138140

139141

140142
# MaterialX PBS Library
@@ -411,6 +413,8 @@ Note that the standard library includes definitions for [**`displacement`**](./M
411413
* `color` (color3): Scattering color. Defaults to (1.0, 1.0, 1.0).
412414
* `azimuthal_roughness` (float): Azimuthal roughness, range [0.0, 1.0]. Defaults to 0.2.
413415

416+
<br>
417+
414418

415419
# Shading Model Examples
416420

@@ -456,6 +460,7 @@ This is an open surface shading model that was designed as a collaboration betwe
456460
A MaterialX definition and nodegraph implementation of OpenPBR Surface can be found here:
457461
[https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/libraries/bxdf/open_pbr_surface.mtlx](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/libraries/bxdf/open_pbr_surface.mtlx)
458462

463+
<br>
459464

460465

461466
# Shading Translation Graphs
@@ -465,6 +470,8 @@ The MaterialX PBS Library includes a number of nodegraphs that can be used to ap
465470
* Autodesk Standard Surface to UsdPreviewSurface
466471
* Autodesk Standard Surface to glTF
467472

473+
<br>
474+
468475

469476
# References
470477

documents/Specification/MaterialX.Proposals.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ MaterialX should also support the following color spaces:
5454

5555
### AOV Output Elements
5656

57+
(Summary for README.md: **New Support for Shader AOVs**
58+
59+
Previously, MaterialX used custom types with a structure of output variables to define shader AOVs. But this approach was not very flexible and in fact had not been implemented. In v1.39, nodegraph-based shader implementations can include new [&lt;aovoutput> elements](./MaterialX.Specification.md#aov-output-elements) to define AOVs which renderers can use to output additional channels of information in addition to the final shading result, while file-based &lt;implementation>s can similarly define AOVs using [&lt;aov> elements](./MaterialX.Specification.md#implementation-aov-elements).
60+
)
61+
5762
A functional nodegraph with either a "shader" or "material"-semantic output type may contain a number of &lt;aovoutput> elements to declare arbitrary output variables ("AOVs") which the renderer can see and output as additional streams of information. AOVoutputs must be of type float, color3 or vector3 for pre-shading "pattern" values, or BSDF or EDF for shader-node output values; the renderer is expected to extract the appropriate color-like information from BSDF and EDF types. AOVs defined within a shader-semantic node instantiated within this functional nodegraph may be "passed along" and potentially renamed (but may not be modified or operated on in any way) by providing a sourceaov attribute in the &lt;aovoutput>.
5863

5964
```xml

0 commit comments

Comments
 (0)