Zum Inhalt springen
FSMW

PBR-Wissen

PBR-Texturen erklärt: Karten, Workflows und Farbraum

PBR-Texturen (Physically Based Rendering) beschreiben eine Oberfläche über mehrere Graustufen- und Farbkarten – typisch sind sechs: Basecolor, Normal, Roughness, Metallic, AO und Height.

Kernkarten
Basecolor, Normal, Roughness, Metallic, AO, Height (6 Stück)
Farbraum
sRGB nur für Basecolor, alle anderen Karten linear/Non-Color
Auflösungen
2K, 4K, 8K (2048 / 4096 / 8192 px)
Referenz
glTF 2.0 (Khronos), Blender-Handbuch

Was PBR eigentlich bedeutet

PBR steht für Physically Based Rendering. Der Grundgedanke: Statt eine Oberfläche als ein einziges Foto zu behandeln, zerlegt man sie in mehrere Eigenschaften, die zusammen beschreiben, wie sich Licht auf ihr verhält. Wie hell und in welcher Farbe reflektiert die Oberfläche? Wie rau oder glatt ist sie? Besteht sie aus Metall oder nicht? Erst wenn eine Game-Engine oder ein Renderer diese Eigenschaften einzeln kennt, kann sie physikalisch plausibel berechnen, wie das Material unter wechselndem Licht aussieht – in der Mittagssonne genauso wie in der Abenddämmerung.

Deshalb liefert eine PBR-Textur nicht ein Bild, sondern ein Set aus Bildern. Jede Karte trägt eine einzelne Information, jede wird an einer eigenen Stelle im Materialgraph angeschlossen. Wir verkaufen unsere kachelbaren Texturen für LS25-Mods genau in diesem Format, mit sechs Karten pro Textur in drei Auflösungsstufen.

Der Begriff PBR beschreibt dabei kein einzelnes Dateiformat und keine einzelne Software, sondern ein Prinzip, das inzwischen quer durch die Branche verwendet wird: Blender, Unreal Engine, Unity, Godot und der offene Austauschstandard glTF folgen alle demselben Grundmuster aus Basisfarbe plus einer Handvoll Materialeigenschaften. Wer einmal verstanden hat, wie die sechs Karten zusammenspielen, kann eine Textur in jede dieser Umgebungen übertragen, ohne bei null anzufangen.

Die Karten im Überblick

Basecolor / Diffuse

Die Basecolor-Karte (auch Diffuse oder Albedo genannt) enthält die reine Farbe der Oberfläche, ohne eingebrannte Schatten, Glanzlichter oder Ambient Occlusion. Bei nichtmetallischen Materialien entspricht sie ungefähr der Farbe, die man mit bloßem Auge unter neutralem Licht sieht. Bei Metallen speichert der gleiche Kanal die Reflexionsfarbe des Metalls selbst – Kupfer sieht in der Basecolor rötlich aus, Stahl eher grau.

Normal Map

Die Normal Map kodiert kleine Oberflächenneigungen in Farbwerten, ohne die Geometrie selbst zu verändern. Rot und Grün speichern die seitliche Neigung, Blau die Haupttiefe. Es gibt zwei Konventionen dafür, wie der grüne Kanal ausgerichtet ist: OpenGL und DirectX. Beide enthalten dieselben Rohdaten, nur der grüne Kanal ist invertiert – wird die falsche Konvention geladen, wirken Vertiefungen wie Erhebungen. Unsere Normal Maps liefern wir in OpenGL-Konvention, weil Blender das im Ausgangszustand so erwartet, ebenso wie Unity und Godot. Unreal Engine ist die bekannteste Ausnahme: Sie setzt standardmäßig die DirectX-Konvention voraus, der grüne Kanal muss beim Import also invertiert werden.

Fast alle unserer Normal Maps sind zudem Tangentenraum-Normal-Maps: Die gespeicherten Richtungen beziehen sich auf die lokale Oberfläche des Dreiecks, nicht auf eine feste Weltachse. Das macht sie wiederverwendbar – dieselbe Normal Map funktioniert unabhängig davon, wie das Objekt in der Szene gedreht liegt. Wie man eine solche Karte in Blender korrekt anschließt und welche weiteren Software-Pfade es gibt, zeigt die Normal-Map-Anleitung.

Normal Map aufgeteilt in Rot-, Grün- und Blau-Kanal, mit Kennzeichnung der OpenGL- und DirectX-KonventionKI-generiert
Normal Map aufgeteilt in Rot-, Grün- und Blau-Kanal, mit Kennzeichnung der OpenGL- und DirectX-Konvention KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Roughness

Die Roughness-Karte legt fest, wie stark eine Oberfläche das Licht streut: Weiß bedeutet rau und diffus (Glanzlicht groß und schwach), Schwarz bedeutet glatt und spiegelnd (Glanzlicht klein und scharf). Für Holz, Beton oder Stoff liegt der Wert meist im mittleren bis hohen Bereich, für poliertes Metall oder nasse Oberflächen deutlich niedriger.

Metallic

Die Metallic-Karte ist praktisch immer schwarz oder weiß, Zwischenwerte kommen nur an Kanten oder bei Verschmutzung vor. Weiß markiert reines Metall, Schwarz alles andere – Holz, Stein, Kunststoff, Haut. Diese Karte entscheidet, ob die Basecolor als Diffusfarbe oder als Reflexionsfarbe behandelt wird: Bei einem Nichtmetall reflektiert die Oberfläche nur einen kleinen Teil des Lichts direkt, der Rest dringt ein und kommt gestreut als Diffusfarbe zurück – deshalb bestimmt hier vor allem Roughness den Glanzeindruck. Bei einem Metall gibt es diese Streuung nicht, die gesamte Reflexion trägt bereits die Farbe aus der Basecolor.

Ambient Occlusion (AO)

Die AO-Karte speichert, wie stark eine Stelle von umgebender Geometrie abgeschattet wird – Ritzen, Ecken und enge Falten erscheinen dunkler. Sie ersetzt keine echte Beleuchtung, sondern verstärkt nur die kleinen Kontaktschatten, die ein Echtzeit-Renderer sonst kaum auflöst.

Height / Displacement

Die Height- oder Displacement-Karte speichert tatsächliche Tiefe statt nur eines optischen Eindrucks. Eine Engine kann sie für Parallax-Effekte nutzen, die die Oberfläche ohne zusätzliche Geometrie tiefer wirken lassen, oder für echte Verschiebung der Vertices bei ausreichend fein unterteilten Meshes. Unsere Displacement-Karten liegen als 16-Bit-PNG vor, weil 8 Bit für weiche Höhenverläufe oft sichtbare Stufen erzeugt. Details zum Einsatz in Blender und anderer Software stehen in der Displacement-Map-Anleitung.

Gepackte Karten: ARM und ORM

Rough-, Metallic- und AO-Karten sind reine Graustufenbilder. Statt sie als drei einzelne Dateien zu speichern, packt man sie in die drei Farbkanäle einer einzigen Textur – ein Kanal, eine Information. Das spart Speicherplatz und reduziert die Anzahl der Texturzugriffe, die eine Engine pro Materialaufruf braucht. Die gängigste Reihenfolge ist ARM beziehungsweise ORM: Rot = AO, Grün = Roughness, Blau = Metallic. Genau diese Reihenfolge nutzen wir für unsere _arm-Dateien, und sie deckt sich mit der Kanalbelegung, die die glTF-2.0-Spezifikation für ihre metallicRoughnessTexture festlegt (Grün = Roughness, Blau = Metalness). Mehr zu Engine-Unterschieden und einem Umpack-Skript steht in der ORM/ARM-Anleitung.

Übersicht der sechs PBR-Karten einer Textur nebeneinander: Basecolor, Normal, Roughness, Metallic, AO und Height.KI-generiert
Übersicht der sechs PBR-Karten einer Textur nebeneinander: Basecolor, Normal, Roughness, Metallic, AO und Height. KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Wie die Karten im Material zusammenwirken

Beim Rendern liest die Engine für jeden sichtbaren Bildpunkt alle sechs Karten an derselben UV-Position aus und kombiniert sie mit der Richtung des Lichts und der Blickrichtung der Kamera. Basecolor und Metallic legen fest, welche Farbe reflektiertes Licht annimmt. Roughness bestimmt, wie breit oder scharf das Glanzlicht ausfällt. Die Normal Map verbiegt die Oberflächenrichtung im Kleinen, sodass Unebenheiten auch ohne zusätzliche Geometrie auf Glanzlicht und Schatten wirken. AO dämpft das Ergebnis in Ritzen und Ecken zusätzlich ab. Height kommt nur zum Einsatz, wenn die Engine oder das Material explizit Parallax- oder Tessellation-Effekte anfordert – ohne diese Funktion bleibt die Karte ungenutzt. Die Unreal-Engine-Dokumentation zu physikalisch basierten Materialien beschreibt genau dieses Zusammenspiel von Metallic und Roughness als Grundlage der Lichtberechnung.

Metal/Roughness- vs. Specular/Glossiness-Workflow

Es gibt zwei verbreitete PBR-Workflows, die dasselbe Ziel mit unterschiedlichen Karten erreichen. Der Metal/Roughness-Workflow beschreibt eine Oberfläche über Basecolor, Metallic und Roughness – drei Karten, davon zwei einkanalig. Der ältere Specular/Glossiness-Workflow trennt stattdessen Diffuse-Farbe, eine farbige Specular-Karte und eine Glossiness-Karte; die Specular-Karte muss dabei RGB sein, weil sie bei Metallen die Reflexionsfarbe direkt trägt, während im Metal/Roughness-Workflow dieselbe Farbe schon in der Basecolor steckt.

In der Praxis hat sich Metal/Roughness durchgesetzt: glTF, Unreal Engine, Unity, Godot und Blenders Principled-BSDF-Shader erwarten es standardmäßig. Ein Grund dafür ist der geringere Speicherbedarf: Metallic und Roughness sind reine Graustufenkarten und lassen sich zusammen mit AO in eine einzige gepackte Textur legen, während eine Specular-Karte als Farbkarte ihren eigenen RGB-Speicherplatz braucht. Specular/Glossiness taucht heute vor allem noch in älteren Assets, bestimmten Exportvoreinstellungen von Texturier-Software oder eben im Spekular-Format von LS25 auf, das technisch eng verwandt, aber anders sortiert ist. Für unsere Texturen und alle vier Anleitungen dieser Reihe gilt: Metal/Roughness ist der Standard, den wir liefern.

Farbraum: sRGB nur für Farbe

Der zweite häufige Stolperstein ist der Farbraum. Basecolor-Karten enthalten sichtbare Farbe und werden im sRGB-Farbraum gespeichert – ein Bildschirm zeigt sRGB-Werte direkt korrekt an, ein Renderer muss sie vor der Lichtberechnung zurück in linearen Raum umrechnen. Rough-, Metallic-, AO- und Height-Karten dagegen enthalten keine Farbe, sondern reine Messwerte zwischen 0 und 1. Werden sie versehentlich als sRGB interpretiert, verschiebt die Gammakorrektur genau diese Werte, und das Material wirkt unmotiviert zu hell, zu dunkel oder zu glänzend.

Blenders Handbuch schreibt für die Normal-Map-Textur ausdrücklich die Einstellung Non-Color statt sRGB vor, weil die Datei zwar wie ein Bild aussieht, aber Zahlen statt Farbe enthält – dasselbe Prinzip gilt in der Software für jede andere Datenkarte. Auch die glTF-2.0-Spezifikation verlangt für ihre gepackte metallicRoughnessTexture ausdrücklich eine lineare Transferfunktion, keine Gammakorrektur. Wer eine Textur importiert, sollte also grundsätzlich prüfen: Farbe sichtbar → sRGB. Nur Zahlenwerte → linear beziehungsweise Non-Color.

Der Unterschied ist kein kosmetisches Detail. sRGB komprimiert dunkle Werte nichtlinear, damit sie für das menschliche Auge gleichmäßiger abgestuft wirken – genau diese Kompression verfälscht aber eine Zahl wie einen Rauheitswert von 0,3, wenn sie versehentlich durch dieselbe Kurve läuft. Deshalb bleibt die Regel unabhängig von der Software immer gleich: Nur was am Ende als sichtbare Farbe auf dem Bildschirm landet, gehört in den sRGB-Farbraum.

Auflösung: 2K, 4K oder 8K

Wir liefern jede Textur in drei Auflösungsstufen, 2048, 4096 und 8192 Pixel Kantenlänge, als drei separate Downloads zum gleichen Preis. Welche Stufe sinnvoll ist, hängt vom Abstand zur Kamera und von der Kachelgröße ab:

Auflösung Sinnvoll für Hinweis
2K (2048 px) Hintergrundflächen, viele Wiederholungen, mobile Ziele Kleinste Dateigröße, geringster Grafikspeicherbedarf
4K (4096 px) Standard für die meisten Wände, Böden, Dächer aus Nahdistanz Guter Kompromiss aus Schärfe und Speicherbedarf
8K (8192 px) Große Kachelmaße, Hero-Flächen direkt vor der Kamera Deutlich größere Dateien, nur wo die Schärfe wirklich gebraucht wird

Wer seine kachelbaren Texturen zuerst in SketchUp auf ein Modell legt, findet die passenden Einstellungen für Kachelgröße und Auflösung in der SketchUp-Anleitung.

Unsere sechs Karten als Beispiel

So sieht das PBR-Set einer unserer Texturen konkret aus, am Beispiel der Dateibenennung:

Datei-Suffix Karte Format Farbraum
_diff Basecolor / Diffuse JPG, Qualität 95 sRGB
_nor_gl Normal (OpenGL-Konvention) PNG, 16 Bit Linear / Non-Color
_rough Roughness JPG Linear / Non-Color
_ao Ambient Occlusion JPG Linear / Non-Color
_disp Height / Displacement PNG, 16 Bit Linear / Non-Color
_arm Gepackt: R=AO, G=Roughness, B=Metallic JPG Linear / Non-Color

Eine separate Metallic-Datei gibt es in unseren Paketen nicht – der Metallanteil steckt bereits im blauen Kanal der _arm-Datei. Für nichtmetallische Materialien wie Holz oder Beton ist dieser Kanal ohnehin durchgehend Schwarz.

Die Formatwahl hat jeweils einen konkreten Grund. JPG komprimiert verlustbehaftet, spart aber deutlich Speicherplatz – für Basecolor, Roughness, AO und die gepackte ARM-Karte reicht die Qualität bei 95 Prozent völlig aus, weil kleine Rundungsfehler in Graustufenwerten kaum auffallen. Normal und Displacement dagegen reagieren empfindlich auf Kompressionsartefakte: Schon kleine Abweichungen im grünen Kanal einer Normal Map erzeugen sichtbares Rauschen im Glanzlicht, und ein 8-Bit-Höhenverlauf zeigt bei sanften Rundungen oft deutliche Stufen. Deshalb liefern wir genau diese beiden Karten verlustfrei als 16-Bit-PNG.

Vergleich der drei Auflösungsstufen 2K, 4K und 8K derselben Textur mit vergrößertem Detailausschnitt.KI-generiert
Vergleich der drei Auflösungsstufen 2K, 4K und 8K derselben Textur mit vergrößertem Detailausschnitt. KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Häufige Fehler

Problem Ursache Lösung
Material wirkt komplett stumpf oder milchig Roughness- oder AO-Karte auf sRGB statt linear/Non-Color gesetzt Farbraum der Datenkarte auf Non-Color beziehungsweise Linear umstellen
Vertiefungen sehen aus wie Erhebungen Normal Map in falscher Konvention geladen (DirectX statt OpenGL oder umgekehrt) Grünen Kanal invertieren oder die passende Normal-Map-Einstellung der Engine wählen
Metallteile wirken grau statt reflektierend Metallic-Kanal fehlt oder ist nicht korrekt verbunden Blauen Kanal der _arm-Textur an den Metallic-Eingang anschließen
Textur unnötig groß im Grafikspeicher 8K überall verwendet, auch auf kleinen oder weit entfernten Flächen Auflösung nach Kachelgröße und Kameraabstand wählen, siehe Tabelle oben

Häufige Fragen

Was heißt PBR bei Texturen?

PBR steht für Physically Based Rendering. Statt einer einzigen Farbfotografie beschreibt eine PBR-Textur eine Oberfläche über mehrere Karten, die reale Lichteigenschaften wie Rauheit oder Metallanteil einzeln festlegen. Die Engine berechnet daraus, wie Licht auf der Oberfläche reflektiert wird.

Brauche ich immer alle sechs Karten?

Nein. Basecolor, Normal und Roughness reichen für die meisten Materialien. Metallic ist nur bei Metalloberflächen relevant, AO und Height sind zusätzliche Detailkarten, die viele Engines auch weglassen oder aus der Normal Map ableiten.

Warum stehen manche Texturen auf sRGB und andere nicht?

Basecolor-Karten enthalten sichtbare Farbe und werden deshalb im sRGB-Farbraum gespeichert und beim Rendern zurückgerechnet. Rough-, Metallic-, AO- und Height-Karten enthalten keine Farbe, sondern reine Zahlenwerte – sie müssen linear beziehungsweise als Non-Color gelesen werden, sonst verschiebt die Gammakorrektur die Werte.

Was ist der Unterschied zwischen 2K, 4K und 8K?

Die Zahl gibt die Kantenlänge der Textur in Pixeln an: 2K = 2048 px, 4K = 4096 px, 8K = 8192 px. Je höher die Auflösung, desto schärfer die Textur aus der Nähe – aber auch desto größer die Datei und der Grafikspeicherbedarf.

Was ist eine gepackte ARM- oder ORM-Textur?

Eine gepackte Textur legt drei Graustufenkarten in die drei Farbkanäle einer einzigen Datei: Rot, Grün und Blau tragen je eine eigene Information statt eines Farbwerts. Das spart Speicher und Texturzugriffe gegenüber drei getrennten Dateien.