Neural Texture Compression
Bei der neuronalen Texturkomprimierung werden Texturen als gelernte Merkmale gespeichert und bei Bedarf rekonstruiert. Das verringert den Grafikspeicherbedarf und erhält feine Details.
Neuronale Texturkomprimierung (NTC) ist ein verlustbehaftetes Komprimierungsverfahren, das Materialtexturen als kompakte gelernte Merkmale und einen kleinen neuronalen Decoder speichert. Der Decoder rekonstruiert Texturwerte, sobald ein Renderer sie benötigt. Anschaulich gesagt ersetzt das Verfahren große Sammlungen von Bildern mit Oberflächendetails durch eine kleinere gelernte Beschreibung. Dadurch sinkt der Speicher- und Grafikspeicherbedarf, während feine visuelle Details erhalten bleiben.
Karthik Vaidyanathan, Marco Salvi, Bartlomiej Wronski, Tomas Akenine-Möller, Pontus Ebelin und Aaron Lefohn von NVIDIA stellten 2023 mit Zufallsgesteuerte neuronale Komprimierung von Materialtexturen ein wegweisendes NTC-Verfahren mit wahlfreiem Zugriff vor. Es komprimiert gemeinsam die Texturen eines Materials und deren Mipmaps, also die zunehmend kleineren Texturversionen, die verwendet werden, wenn Oberflächen weiter entfernt erscheinen.
So funktioniert die neuronale Texturkomprimierung#
Ein Material für physikalisch basiertes Rendering verwendet mehrere aufeinander abgestimmte Texturkarten: Die Grundfarbe beschreibt die Oberflächenfarbe, Normalen-Maps beschreiben kleine Änderungen der Oberflächenausrichtung und die Rauheit bestimmt die Schärfe von Glanzlichtern. Diese Karten haben gemeinsame Strukturen. Ein Kratzer kann sich beispielsweise an derselben Stelle auf mehrere Kanäle auswirken. NTC nutzt diese Korrelationen und bildet die Karten gemeinsam in einem latenten Raum ab, wobei kompakte Merkmalsvektoren über räumliche Raster verteilt sind. Ein kleines neuronales Netz, meist ein mehrschichtiges Perzeptron, decodiert die Merkmale zu Materialwerten.
Während der Komprimierung werden die Merkmalsraster und die Modellgewichte des Decoders auf das Material abgestimmt. Eine Rekonstruktions-Verlustfunktion misst die Abweichungen von den Originaltexturen, und die Rückpropagierung liefert Gradienten für die Optimierung. Das ursprüngliche Verfahren verwendet den Adam-Optimierer und kombiniert abgerufene Merkmale mit Positionsinformationen und der angeforderten Mip-Stufe. Beim Rendering rekonstruiert eine Koordinatenabfrage das entsprechende Texel – das Gegenstück eines Pixels in einer Textur.
Diese hybride Struktur verbindet NTC mit impliziten neuronalen Repräsentationen, die Signale mithilfe gelernter, koordinatenabhängiger Funktionen darstellen. Das entscheidende Merkmal für die Grafikverarbeitung ist der wahlfreie Zugriff: Der Renderer rekonstruiert angeforderte Texturstellen bei Bedarf und ermöglicht so Echtzeitinferenz während des Shadings.
Kompromisse zwischen Speicherbedarf und Rendering#
NTC tauscht Texturspeicher gegen Decoder-Rechenaufwand auf der GPU. Zwei Bereitstellungsmodi verdeutlichen diesen Kompromiss besonders:
- Inferenz beim Laden: Texturen werden beim Laden eines Assets decodiert und können in herkömmliche blockkomprimierte BCn-Texturen umgewandelt werden. Dadurch sinken Speicherbedarf und Übertragungsgröße des Assets, während der Speicherbedarf im Arbeitsspeicher dem des Zielformats entspricht.
- Inferenz auf der Stichprobe: Shader dekodieren die angeforderten Texel während des Renderings. Dadurch bleibt die neuronale Repräsentation im Grafikspeicher, während beim Texturabtasten zusätzlicher Decoderaufwand entsteht.
Ein dritter Modus, die Inferenz anhand des Feedbacks, dekodiert angeforderte Texturkacheln in einen dünn besetzten Texturcache. Diese Entscheidungen bestimmen, wo die Einsparungen durch Komprimierung erhalten bleiben und wo die Dekomprimierung stattfindet.
Bei der ursprünglichen Inkwell-Demonstration kamen NTC-Texturen mit 4096 x 4096 Texeln zum Einsatz, verglichen mit blockkomprimierten Texturen mit 1024 x 1024 Texeln: 16-mal so viele Texel bei 30 % weniger Texturspeicher. Der Vergleich zeigt, dass sich Oberflächendetails mit höherer Auflösung in einer kleineren Texturbelegung bewahren lassen.
Anwendungen und verwandte Konzepte#
Interaktives 3D-Rendering ist eine direkte Anwendung. Entwickler komprimieren Material-Assets während der Inhaltsaufbereitung und integrieren die Dekodierung in den Renderer. Mit dem NVIDIA RTX-SDK zur neuronalen Texturkomprimierung komprimiert ntc-cli Textursätze, NTC Explorer vergleicht Einstellungen und der Beispielrenderer zeigt glTF-Assets an. Das mitgelieferte FlightHelmet-Modell enthält vorkomprimierte Materialien zum Testen der Rendering-Modi.
Neuronales Rendering bezeichnet den umfassenderen Einsatz gelernter Komponenten bei der Bildsynthese. NTC rekonstruiert gezielt gespeicherte Materialtexturen; Superauflösung rekonstruiert Bilder mit höherer Auflösung aus Eingaben mit geringerer Auflösung. Diese Verfahren kommen an unterschiedlichen Stellen einer Grafikpipeline zum Einsatz.
Modellquantisierung verringert die numerische Präzision von Netzwerkparametern und Aktivierungen. Ultralytics YOLO setzt dieses verwandte Verfahren mit geringer Präzision über den TensorRT-Export ein und erzeugt INT8-YOLO26-Engines, die den Speicherbedarf des Modells verringern und unterstützte Inferenz-Workloads beschleunigen.
Rekonstruktionsqualität und Artefakte#
Die Qualität von NTC hängt vom Bitbudget und der Komplexität des Materials ab. Eine höhere Bitzahl pro Texel bietet mehr Kapazität zur Rekonstruktion von Details; bei gleichbleibendem Budget erhöhen zusätzliche Kanäle den Komprimierungsdruck. Das in Dezibel gemessene Spitzen-Signal-Rausch-Verhältnis (PSNR) quantifiziert die Wiedergabetreue der Rekonstruktion: Höhere Werte weisen auf geringere Fehler hin. Durch gemeinsames Dekodieren können außerdem Merkmale zwischen Kanälen durchsickern und die rekonstruierten Materialeigenschaften verändern. In der Implementierung von NVIDIA wird ein ausdrücklich als Alphamaske gekennzeichneter Kanal speziell behandelt, damit Werte nahe 0 und 1 genauer erhalten bleiben.










