← Zurück zu Software & Tools
Substance Functions und der Pixel Processor ermöglichen in Substance Designer die pixelweise Definition benutzerdefinierter mathematischer Operationen über einen eingebetteten Funktions-Graph-Editor – das tiefste Anpassungslevel innerhalb von Designer.

Rubrik: Animation & VFX · Unterrubrik: Substance · Niveau: Fortgeschritten

Synonyme / Auch bekannt als: Function Graph, FX-Graph, Pixel Processor Node, Substanz-Funktionen


Was sind Substance Functions?

Substance 3D Designer operiert auf zwei Ebenen: dem Composite Graph (der Haupt-Node-Graph mit Bild-Nodes) und dem Function Graph (einem eingebetteten, niedrigschwelligeren Programmiersystem). Substance Functions sind Programme, die im Function Graph geschrieben werden und als Wert-Berechnungen für Node-Parameter oder als vollständige Pixeloperationen im Pixel Processor ausgeführt werden.

Der Pixel Processor ist der Node, der Substance Functions zur pixelweisen Bildverarbeitung einsetzt – vergleichbar mit einem Fragment Shader in GLSL, aber ohne Shaderprogrammierung im eigentlichen Sinne.


Erklärung

Der Function Graph

Wenn man einen Doppelklick auf einen Parameter, der mit einer Function angesteuert werden kann, ausführt, öffnet sich der Function Graph Editor. Dieser Editor sieht ähnlich aus wie der Composite Graph, enthält aber andere Node-Typen:

Mathematische Nodes:

  • Add, Subtract, Multiply, Divide
  • Max, Min, Clamp (auf 0–1 begrenzen)
  • Pow (Potenz), Sqrt (Wurzel), Abs (Absolutwert)
  • Floor, Ceil, Fract (Nachkommasteil)
  • Sin, Cos, Tan, Atan2 (trigonometrische Funktionen)

Vektor-Nodes:

  • Vector2, Vector3, Vector4 (Vektoren erstellen)
  • Vector2 Split, Swizzle (Komponenten extrahieren)
  • Dot Product, Cross Product
  • Normalize, Length, Distance

Kontroll-Nodes:

  • If/Else (Bedingte Verzweigung)
  • Get: Zugriff auf vordefinierte Werte (Zeit, Koordinaten, externe Parameter)
  • Sampler2D: Sampling eines Bildes an einer bestimmten UV-Koordinate

Output: Jede Function gibt einen einzelnen Wert zurück (float, float2, float3, float4 für Graustufe, 2D-Vektor, RGB oder RGBA).

Pixel Processor

Der Pixel Processor Node ist ein spezieller Composite-Graph-Node, der für jeden Pixel des Output-Bildes eine benutzerdefinierte Funktion ausführt. Er ist das mächtigste Werkzeug für benutzerdefinierte Bild-Operationen in Designer.

Setup eines Pixel Processors:

  1. Pixel Processor Node in den Composite Graph einfügen
  2. Input-Images verbinden (bis zu 4 Bildeingaben)
  3. Doppelklick → Function Graph öffnet sich
  4. Im Function Graph: Per Pos-Node die aktuelle UV-Koordinate (0–1 pro Kanal) abrufen; per Sampler-Nodes Pixel-Werte aus den Input-Images lesen; mathematische Operationen anwenden; Ergebnis an Output verbinden

Verfügbare Eingaben im Pixel-Processor-Funktionsgraph:

  • $pos: Aktuelle Pixelkoordinate (float2, 0–1 in U und V)
  • $size: Output-Größe in Pixel (float2)
  • $uvtile: UDIM-Tile-Index (float2)
  • Input-Sampler: sampleCoor(input, pos) für bilineares Sampling an beliebiger Position

Typische Anwendungsfälle

Benutzerdefinierte Warp-Operationen: Ein Pixel Processor liest die aktuelle UV-Position, addiert einen per Sampler gelesenen Offset-Wert aus einem Rauschbild und liest das Input-Bild an der veränderten Position – ein custom Warp-Node.

Mathematische Graustufeneffekte: Sinus-basierte Wellen, exponentielle Kurven, radiale Gradients – alles, was der Standard-Node-Satz nicht abdeckt.

Kanal-Packing: RGBA-Manipulation – verschiedene Graustufen-Inputs in unterschiedliche Kanäle eines Output-RGBA-Bildes schreiben. Nützlich für Engine-spezifisches Textur-Packing direkt in Designer.

Prozedurale UV-Manipulation: Verzerrungen, Tiling-Variationen, Stochastic Tiling-Effekte (zufällige Verschiebung/Rotation von Tiles zur Vermeidung von Wiederholungsmustern).

Substance Functions als Parameter-Driver

Neben dem Pixel Processor können Substance Functions auch Node-Parameter steuern:

  • Ein Rotation-Parameter eines Transform-Nodes kann durch eine Function gesteuert werden, die per $randomseed einen zufälligen Winkel berechnet.
  • Eine Color-Output-Node kann eine Function nutzen, die per $size die Auflösung in die Berechnung einbezieht.

Exponierte Graph-Parameter können innerhalb von Functions als $Input-Variablen genutzt werden.

FX-Map als Vorstufe

Die FX-Map ist ein Node, der intern auf einem Quadtree-Algorithmus basiert und für jeden „Stamp" (platzierten Instanz) eine Function nutzt, die Position, Rotation, Skalierung und Farbe berechnet. FX-Map-Functions sind ein Haupteinsatzgebiet für Substance Functions und ermöglichen komplexe, organische Pattern-Layouts.


Beispiele

Custom Radial Gradient: Im Pixel Processor: $posSubtract mit 0.5, 0.5 (Mittelpunkt) → LengthInvertClamp → Output (Graustufengradient, Mitte hell).

Stochastic Tiling: Im Pixel Processor: UV-Position in Grid-Zellen aufteilen → pro Zelle per Random-Funktion eine Zufalls-Rotation/Translation berechnen → Input-Textur an der transformierten UV-Position samplen → leichter Blend zwischen Zellgrenzen. Ergebnis: Tileable Textur ohne sichtbare Wiederholungsmuster.


In der Praxis

Substance Functions und Pixel Processor sind für Einsteiger nicht notwendig – 90 % der Materialien lassen sich ohne sie erstellen. Sie werden relevant für:

  • Technische Artists, die spezifische Effekte benötigen, die keine Standard-Node-Kombination abbildet
  • Material-TDs, die benutzerdefinierte Generators und Filters für Studio-Bibliotheken erstellen
  • Stochastic-Tiling-Implementierungen für hochwertige Environment-Texturen

Die Lernkurve ist vergleichbar mit einfacher Shader-Programmierung – wer HLSL/GLSL-Grundlagen kennt, findet sich schnell zurecht.


Vergleich & Abgrenzung

Pixel Processor vs. HLSL/GLSL Shader: Pixel Processor ist vereinfachter, hat Einschränkungen (kein Loop, keine Rekursion), ist aber in Designer integriert und GPU-beschleunigt. Vs. Houdini VEX: VEX ist mächtiger und operiert auf 3D-Geometrie; Pixel Processor ist auf 2D-Bildoperationen beschränkt, aber einfacher zu erlernen.


Häufige Fragen (FAQ)

Brauche ich Programmierkenntnisse für den Pixel Processor? Grundlegendes mathematisches Verständnis (Vektoren, Trigonometrie, Interpolation) ist hilfreich, aber echte Programmiersprachen-Kenntnisse sind nicht erforderlich. Der visuelle Funktionsgraph macht die Logik greifbar.

Kann ich Schleifen im Function Graph nutzen? Nein. Der Function Graph ist iterationsfrei (keine for/while-Loops). Rekursive Effekte werden stattdessen durch gestaffelte Node-Kaskaden oder FX-Map-Algorithmen realisiert.

Was ist der Unterschied zwischen Function Graph und Composite Graph? Composite Graph operiert auf Bildern (Textures); Function Graph operiert auf einzelnen Werten (floats, Vektoren). Function Graphs werden von Composite-Graph-Nodes aufgerufen, um Pixel-Werte oder Parameter zu berechnen.


Verwandte Einträge


Weiterführend

  • Adobe Inc.: Substance 3D Designer – Pixel Processor. Adobe Help Center, 2024.
  • Allegorithmic: Introduction to Function Graphs. Allegorithmic Tutorial Series, 2018.
  • Amiryousefi, Roham: Stochastic Tiling with Pixel Processor. 80.lv Tutorial, 2022.
  • Wihlidal, Graham: Advanced Designer Techniques. SIGGRAPH 2019 Course Materials.
← Zurück zu Software & Tools
Infotag · 13. Mai · 15:00 Uhr · Vor Ort

Sei am Mittwoch dabei.
Bring Eltern oder Freunde mit.

Ein halber Nachmittag, der dir drei Jahre Klarheit bringen kann. Kostenlos, unverbindlich, ehrlich.

  • Rundgang durch Studios, Schnitträume und Tonstudio
  • Echte Absolventenfilme sehen
  • 1:1-Beratung zu Bewerbung & BAföG
  • Studierende direkt fragen
  • Kaffee, kein Sales-Pitch
  • Auch online möglich

Platz beim Infotag reservieren

Dauert 30 Sekunden. Bestätigung per E-Mail.
100 % kostenlos · keine Verpflichtung · jederzeit absagbar