Material Graph#

What Is Material Graph?#

Material Graph is a node-based visual editor for creating and editing UsdShade material networks in NVIDIA Omniverse™ Kit applications. It provides a direct, interactive way to build materials by placing nodes on a canvas and wiring them together. You do not need to edit shader parameters through property panels or manually author Universal Scene Description (USD) data.

Each material graph is a set of interconnected nodes that define how a material produces its outputs. The editor reads from and writes to the USD stage. Every change you make appears immediately in the scene and can be saved, versioned, and shared like other USD data.

Material Graph Editor with a sample material open

Key Concepts#

Materials#

A material is a USD UsdShade.Material prim that packages one or more shader networks. In Material Graph, the material is the top-level object you create and edit. Each material can contain graphs for multiple render contexts.

Nodes#

A node is the fundamental building block. Each node performs a single operation: generating a value, transforming an input, sampling a texture, or computing a final surface response. Nodes appear on the canvas as rectangular cards with a header, an optional accent line, and a list of ports.

See the Node Reference for the available material and graph nodes.

Ports#

Ports are the typed connectors on a node. Input ports appear on the left edge; output ports appear on the right edge. Each port has a name, a data type, and optionally a default value. You connect an output port on one node to an input port on another to pass data between them.

Connections#

A connection (also called a wire or link) carries data from an output port to an input port. When you drag a wire, the editor highlights valid drop targets and dims incompatible ones so you can identify allowed connections.

Render Contexts#

Material Graph supports multiple render contexts, each corresponding to a shading language or standard:

Context

Description

MDL

NVIDIA Material Definition Language. Rich node library for physically based materials.

MaterialX

The open standard for material and look-development interchange.

Universal

A simplified, renderer-agnostic context for basic material definitions.

A single material can have graphs for all three contexts. The toolbar tabs let you switch between them. Only one context is active at a time, and the Catalog, canvas, and validation all reflect the active context.

NodeGraphs#

A NodeGraph is a container node that encapsulates a sub-graph. You can group a set of nodes into a NodeGraph to reduce visual clutter, create reusable building blocks, or organize complex materials into logical sections. Double-clicking a NodeGraph navigates inside it; the breadcrumb bar at the top of the canvas tracks your current depth.

Interface Tour#

Toolbar#

The toolbar runs along the top of the editor window and provides quick access to the most common actions.

From left to right:

Control

Purpose

Create (+)

Create a new material and open it for editing.

Edit

Open an existing material selected in the stage.

Material name

Displays the name of the currently loaded material.

Error / Warning indicators

Show counts of errors (red) and warnings (amber). Hover over a badge to read issue details.

Context tabs (MDL / MaterialX / Universal)

Switch the active render context. Material Graph shows a tab for each registered context plugin.

Pause / Recompile

Toggle compilation lock. When paused, edits are not compiled until you unpause or press Ctrl+R.

Solo (S)

Isolate the active context in the Viewport by temporarily disconnecting other outputs.

Overflow menu (…)

Access preferences, view commands, and documentation.

Material Graph toolbar with create, edit, context, compilation, solo, and menu controls

Canvas#

The canvas is the main editing surface. Nodes live here, and you pan (MMB drag), zoom (scroll wheel), and frame (F) to navigate. The background uses a subtle grid to help with alignment.

Catalog Panel#

The Catalog sits on the left side of the editor. Toggle its visibility with Show Catalog in Material Graph preferences. It has three tabs:

Tab

Contents

Nodes

All functional nodes available in the active context, organized by category.

NodeGraphs

Reusable nodegraph assets and compounds that can be dropped onto the canvas.

Textures

Texture assets organized into groups, with thumbnail previews.

Drag an item from any tab onto the canvas to create the corresponding node.

Material Graph Catalog with the Nodes, NodeGraphs, and Textures tabs

Node States#

Nodes can display visual indicators when something needs attention:

  • Error (red fringe): A represented node or connection has a rendering-affecting validation issue. Hover over it to read the error description.

  • Warning (amber fringe): A represented node has a non-rendering validation issue. Hover over it to read the warning description.

Node Anatomy#

Every node on the canvas follows the same visual structure:

┌──────────────────────────────┐
│  [icon]  Node Name           │  ← Header
├══════════════════════════════┤  ← Accent line (colored by category)
│                              │
│  ● input_1          output ● │  ← Port area
│  ● input_2                   │
│  ● input_3                   │
│                              │
└──────────────────────────────┘
  • Header: Shows the node name and an icon representing its category or function.

  • Accent line: A thin colored bar below the header. The color is determined by the node’s category and helps with visual grouping.

  • Port area: Input ports are listed on the left edge with connection dots; output ports are on the right edge. Each port label shows the port name, and hovering reveals the data type.

Nodes can be displayed in three states using keyboard shortcuts. Open (1) shows all ports, Minimized (2) shows a compact summary, and Closed (3) collapses the node to its header.

Next Steps#