Skip to main content

Node Graph

The Node Graph panel lets you build materials from individual shading and texture nodes. Use it when a material needs logic beyond what the curated panel controls offer — channel mixing, procedural masks, blended layers or custom transforms.

Opening the Node Graph​

Open the Node Graph panel from View ▸ Node Graph. If the entry is greyed out, choose View ▸ Unlock Advanced UI first. You can also click Open Node Editor in the Material Editor escape banner (visible when a material has been edited as nodes).

The panel docks to any edge of the workspace.

When to use node editing​

The curated Material Editor controls cover the majority of physical-surface editing without any node knowledge. The Node Graph becomes the right tool when you need:

  • A custom mix of two materials driven by a texture mask
  • Procedural noise feeding a bump or roughness channel
  • UV transform nodes applied differently per texture layer
  • Colour maths (hue-shift, curves, value remap) inline in the graph

Every material edited in the Node Graph shows the Edited as nodes — curated controls disabled escape banner in the Material Editor. To return to curated controls, press Rebuild from Spec in that banner — this discards the node edits and restores the panel controls.

Toolbar​

The Node Graph toolbar sits at the top of the panel:

ControlAction
Material thumbnailPreview of the current material
Assignment comboAssign the selected part(s) to a material — picking from this combo re-points all selected parts to that material (parts share one material)
New materialNew — create a fresh material and assign it to the selection
Frame all nodesFrame all — fit all nodes in view (Home)
Frame selectedFrame selected — zoom to the selected node(s); frames all nodes if none (.)
Duplicate materialDuplicate material — give the selection a private copy of this material
Single-userSingle-user — give this part its own copy (only when shared)
RenameRename material — updates every part that shares it

A live "shared by N" label beside the toolbar shows how many parts share the current material.

ActionGesture or key
PanMiddle-drag
ZoomScroll wheel
Frame all nodesFrame all nodes button, or Home
Frame selectedFrame selected button, or . (full stop)
SelectLeft-click a node
Add to selection / toggleShift+click
Box selectDrag on empty canvas (Shift+drag adds to the current selection)
Select a wireClick on or next to it
Cut wiresCtrl+drag across wires
Select allA
Move selectedDrag the node header
Delete selected node or wireX
Delete and reconnectCtrl+X (heals the chain the deleted node was in)

Adding and editing nodes​

ActionGesture or key
Add nodeShift+A — opens the Add popup at the cursor; or drag from an output socket onto empty canvas
DuplicateShift+D
MuteM
Tidy layoutT
Align selected leftShift+X
FindCtrl+F
End the current gestureEsc — see the value-editing notes below

To copy nodes within the current graph, select them and press Shift+D. With the Node Graph docked in the main window, Ctrl+C runs Render ▸ Copy Image even while the Node Graph is focused, so it does not copy nodes in the current build.

Note: With the Node Graph focused, Delete runs Edit ▸ Delete Selected on the scene parts — not on graph nodes. Use X or Ctrl+X to delete nodes. F frames the viewport selection. Space plays and pauses the timeline. These keys are claimed by the application even when the graph is focused.

Editing values​

An unconnected input shows its local value where that type supports an inline control. Once you connect a wire, the incoming connection supplies the value and the local control is hidden.

  • Numbers: drag the value horizontally, or double-click it to type a value. For a vector, edit the X, Y or Z component separately.
  • On / off values: click to toggle.
  • Choices: click the value and choose an item from the menu.
  • Colours: click the swatch to open the colour picker.
  • Files: click the file value to choose a file.

Esc stops a numeric scrub or node drag where it is; it does not restore the starting value or position, and it does not finish the edit. Release the mouse normally to finish an edit. To go back, type the starting value back in. When you drag the input end of an existing connection, the wire is disconnected as soon as you pick it up; if you press Esc, or release anywhere other than a compatible input, it stays disconnected. Reconnect it if needed.

Finding a node in a large graph​

With the graph canvas focused, press Ctrl+F and type part of a node name. Enter steps forward through matches; Shift+Enter steps backward. Each result becomes selected and centred without changing the zoom. Esc closes the search field.

Ramps, curves and optical layers​

Click a node's preview strip to open its ramp, curve or layer editor. The nodes that open an editor are: Color Ramp, RGB Curves, Float Curve, Vector Curves and Multi-Layer Optics BSDF. Changes update the node as you work. Done closes the editor and keeps the changes; Esc also closes it and keeps them. Opening another node's editor while one is open closes the first one; press Done first so its changes are finished as their own edit.

For Multi-Layer Optics BSDF, the layer editor pairs each layer's IOR with its thickness in nm. Add Layer adds a row with IOR 1.5 and thickness 550 nm. Edit IOR from 1.0 to 3.0 and thickness from 1 to 5000 nm, or use the row's × button to remove it. The editor allows up to eight layers.

Nodes​

Each node is a box with a title row, input sockets on the left and output sockets on the right. Drag from an output socket to an input socket to connect. An existing connection can be rerouted by dragging from the destination socket.

Node categories​

Nodes are organised into these categories in the Add popup (Shift+A):

CategoryWhat it provides
ShaderSurface, emission and other closure nodes
TextureImage, noise, procedural and other texture nodes
ColorColour mixing, hue/saturation, curves, invert and related
VectorBump, normal map, mapping transforms, vector maths
GeometryGeometry FX nodes — not shown in the Add popup in the standard configuration of this release
ConverterValue conversion and utility nodes
InputConstant values, texture coordinates and scene attributes
OutputMaterial Output, the node the material renders from
LayoutReroute dots for organising connections

Use the Add popup (Shift+A) to browse all available nodes.

Click the triangle at the left of a node header to collapse or expand it. A collapsed node hides its values and preview strip; expand it to edit them. Collapsed nodes keep their connection pins available.

Type in Search nodes… to filter the list; the first match is highlighted. Press Enter to add the highlighted node, or click any node in the list. Esc closes the popup. When you open it by dragging from an output socket into empty space, the list is filtered to nodes that can accept that connection. Dragging from an input socket opens the full list. Use Shift+A to browse without any connection filter.

Material Output node​

Connect the final surface shader to Surface, a volume shader to Volume, a displacement vector to Displacement, the Style output of Outline Style or Toon Ink to Outline, and the output of Ground Receiver to Ground on Material Output, as needed for the material. The first output node in the graph is protected from deletion; the Add popup can create additional output nodes.

Organising connections with Reroute​

Double-click an existing wire to insert a Reroute dot. The original connection is split through the dot, which becomes selected. You can also add a Reroute from the Layout category and connect it yourself. With a dot selected, Ctrl+X removes it and reconnects the chain; X removes it with its connections.

Working with texture nodes​

  1. Press Shift+A to open the Add popup, then select a node from the Texture category.
  2. For an image texture node, locate the file row in the node and load or browse for an image.
  3. Connect the node's output to the desired input on a shader node.
  4. To tile or offset the texture, insert a Mapping node between a coordinate node and the texture's vector input.

Shader nodes​

The Shader category contains nodes that expose the same physical parameters found on the Material Editor Surface tab — Base Color, Metallic, Roughness, IOR, Transmission Weight and more — as sockets that accept either inline values or connected signals.

Keyframing in node graphs​

Node inputs carry key buttons. Click a key button to add a keyframe; Alt-click to remove it; right-click to open the key menu: Add Keyframe (or Add Step Key on held channels), or Remove Keyframe when the playhead is on a key; then Jump to Previous Key, Jump to Next Key and Clear All Keys on This Channel (enabled when animated); jump items show the target frame when there is one. On vector and colour inputs the menu works per component: Key This Component, Remove Key on This Component, Key All Components, Remove Keys on All Components and Clear All Keys on These Channels. For a node-edited material, key values on the node inputs; the Keyframes tab lists only the material assignment.


Node reference​

The tables below describe the registered nodes, grouped by category. Entries marked deferred are not offered in the Add popup. Nodes marked "Not shown in the Add popup in the standard configuration of this release" cannot be added from the Add popup in this release; documents that already contain them keep them.

Shader​

Node labelxmlNamePurposeNotes
Principled BSDFprincipled_bsdfFull-physics surface — base colour, metallic, roughness, IOR, transmission, subsurface, coat, sheen—
Mix Shadermix_closureBlend two shader closures by a factor—
EmissionemissionSelf-illuminating surface—
Diffuse BSDFdiffuse_bsdfLambertian diffuse surface—
Glossy BSDFglossy_bsdfMirror-glossy reflection surface—
Metallic BSDFmetallic_bsdfMetallic surface with conductor Fresnel—
Glass BSDFglass_bsdfGlass with refraction and reflection—
Refraction BSDFrefraction_bsdfRefraction-only surface—
Toon BSDFtoon_bsdfToon-shaded diffuse surface—
Sheen BSDFsheen_bsdfCloth sheen (microfibre) surface—
Cloth BSDFcloth_bsdfWoven cloth (Irawan–Marschner model)—
Dispersion BSDFdispersion_bsdfSpectral glass dispersion (Cauchy model)—
Multi-Layer Optics BSDFmlo_bsdfMulti-layer optical stack (lacquer, coatings)Layer editor
Translucent BSDFtranslucent_bsdfDiffuse light transmission—
Transparent BSDFtransparent_bsdfPure transparent pass-through—
Subsurface Scatteringsubsurface_scatteringSub-surface light transport—
HoldoutholdoutCuts a compositing hole in the render—
Ambient Occlusionambient_occlusionBaked proximity shadowing—
Add Shaderadd_closureAdd two shader closures—
BackgroundbackgroundBackground / sky emission—
Principled Volumeprincipled_volumePhysical volumetric material—
Scatter Volumescatter_volumeVolume scattering—
Absorption Volumeabsorption_volumeVolume absorption—
Dirt Layervizid_dirt_layerLayer dirt / grime over a base shaderVIZid stylized
X-ray Surfacevizid_xray_surfaceRenders a see-through X-ray silhouetteVIZid stylized
Outline Stylevizid_outline_styleSets outline render style for this materialVIZid stylized
Ground Receivervizid_ground_styleMarks surface as a ground shadow receiverVIZid stylized
Toon Inkvizid_toon_inkInk-line / cel outline surface shaderVIZid stylized
Wood BSDFwood_bsdfPhysical wood surface — integrates with Wood TextureVIZid procedural wood
Principled Hair BSDFprincipled_hair_bsdfFull-physics hair closureNot shown in the Add popup in the standard configuration of this release
Hair BSDFhair_bsdfSimple hair closureNot shown in the Add popup in the standard configuration of this release

Deferred (not in Add popup): mix_closure_weight, aov_output.


Texture​

Node labelxmlNamePurposeNotes
Image Textureimage_textureLoad an image file and sample it as a textureFile input
Noise Texturenoise_texture3D Perlin noise — good for bump and roughness variation—
Voronoi Texturevoronoi_textureCell-based noise for organic patterns—
Sky Texturesky_textureProcedural physical sky—
Gradient Texturegradient_textureLinear or radial colour gradient—
Gabor Texturegabor_textureAnisotropic wave-based noise—
White Noise Texturewhite_noise_textureRandom white noise—
Wave Texturewave_textureSinusoidal wave bands—
Magic Texturemagic_texturePsychedelic multi-colour noise—
Checker Texturechecker_textureTwo-colour checkerboard—
Brick Texturebrick_textureProcedural brick / tile pattern—
Environment Textureenvironment_textureLoad a lat-long HDR environment imageFile input
Wood Texturewood_textureProcedural wood grain, rings and figure (196 inputs)VIZid procedural wood
Dirt Maskvizid_dirt_maskProcedural dirt / occlusion mask for layeringVIZid stylized

Color​

Node labelxmlNamePurposeNotes
MixmixMix two colours by a factor—
Color Ramprgb_rampMap a value to a colour along a gradient stripComplex UI
RGB to BWrgb_to_bwConvert colour to greyscale luminance—
Invert ColorinvertInvert colour values—
Mix Colormix_colorBlend two colours using a blending mode—
GammagammaApply a gamma curve to a colour—
Bright/Contrastbrightness_contrastAdjust brightness and contrast—
Hue/Saturation/ValuehsvShift hue, saturation and value—
RGB Curvesrgb_curvesPer-channel and combined curve editorComplex UI
Float Curvefloat_curveSingle-channel curve for float valuesComplex UI

Vector​

Node labelxmlNamePurposeNotes
MappingmappingTranslate, rotate and scale UV or other coordinate inputs—
BumpbumpConvert a height map to a surface normal offset—
NormalnormalExplicit normal vector input with a dot-product output—
Vector Mathvector_mathVector arithmetic (add, subtract, dot, cross, normalise, …)—
Vector Rotatevector_rotateRotate a vector around an axis—
Vector Transformvector_transformTransform a vector between world, object and camera space—
Vector Curvesvector_curvesPer-component curve for a vectorComplex UI
Normal Mapnormal_mapDecode a tangent-space normal map image—
DisplacementdisplacementDrive geometry displacement from a height or vector—
Set Normalset_normalOverride the surface normal with a connected vector—

Geometry​

These nodes are not shown in the Add popup in the standard configuration of this release.

Node labelxmlNamePurpose
Fuzzvizid_geo_fuzzMicro-fibre surface coverage (velvet, felt)
Flakesvizid_geo_flakesReflective metallic flake particles
Water Dropletsvizid_geo_dropletsSurface water droplets
Bubblesvizid_geo_bubblesSub-surface bubble effect
Foamvizid_geo_foamFoam cell geometry and surface appearance
Displacevizid_geo_displacePer-vertex surface displacement
Furvizid_geo_furFur fibre generation
Hairvizid_geo_hairHair / fibre generation

Converter​

Node labelxmlNamePurposeNotes
MathmathScalar arithmetic (add, multiply, power, sin, …)—
Mix Floatmix_floatBlend two float values—
Mix Vectormix_vectorBlend two vectors—
Mix Vector (Non-Uniform)mix_vector_non_uniformBlend two vectors with per-component factors—
Combine Colorcombine_colorCombine three floats into a colour in RGB, HSV or HSL mode—
Combine XYZcombine_xyzCombine X, Y, Z floats into a vector—
Separate Colorseparate_colorSplit a colour into three floats in RGB, HSV or HSL mode—
Separate XYZseparate_xyzSplit a vector into X, Y, Z floats—
WavelengthwavelengthConvert a wavelength in nm to a colour—
BlackbodyblackbodyConvert a colour temperature (K) to a colour—
Map Rangemap_rangeRemap a float from one range to another—
Vector Map Rangevector_map_rangeRemap each component of a vector—
ClampclampClamp a float to a min/max range—

Deferred (not in the Add popup): radial_tiling, raycast.


Input​

Node labelxmlNamePurposeNotes
Texture Coordinatetexture_coordinateGenerated, UV, object, camera, normal, window and reflection coordinate sources—
FresnelfresnelView-angle Fresnel factor—
Layer Weightlayer_weightFacing and blend weight for layered shaders—
GeometrygeometrySurface position, normal, tangent, true normal, incoming, parametric, backfacing, pointiness and random per island—
UV MapuvmapNamed UV map from the mesh—
Light Pathlight_pathRay type and bounce count (is-camera-ray, is-shadow-ray, …)—
Light Fallofflight_falloffQuadratic, linear and constant light falloff—
Object Infoobject_infoPer-object location, colour, alpha, object index, material index and random value—
Camera Datacamera_infoView distance, view Z depth, view vector—
ValuevalueConstant float value—
ColorcolorConstant colour value—
AttributeattributeNamed scene or object attribute—
WireframewireframeWireframe edge detection factor—
TangenttangentTangent direction for anisotropy—
BevelbevelEdge bevel shading (ray-based)—
Color Attributevertex_colorPer-vertex or per-face colour attribute—
Curves Infohair_infoHair curve attributesNot shown in the Add popup in the standard configuration of this release

Deferred (not in the Add popup): particle_info, point_info, volume_info.


Output​

Node labelxmlNamePurposeNotes
Material OutputoutputGraph root — accepts surface, volume, displacement, outline style and ground styleFirst output node protected from deletion

Layout​

Node labelxmlNamePurposeNotes
ReroutererouteSplit a wire through a dot to organise connectionsDouble-click a wire to insert one