Texturen sind typischerweise der größte einzelne Verbraucher von VRAM beim Echtzeit-Rendering. Ein modernes AAA-Spiel könnte mit 20–60 GB Texturdaten auf der Festplatte ausgeliefert werden, die zur Laufzeit mehrere Gigabyte GPU-Speicher belegen. Die Wahl der richtigen Auflösung, des Komprimierungsformats und der Ladestrategie wirkt sich direkt auf Bildrate, Ladezeiten und Mindesthardwareanforderungen aus.
VRAM-Budgets
Eine einzelne unkomprimierte 4096×4096-RGBA-Textur belegt 64 MB VRAM. Bei einer typischen 8-GB-GPU würden also etwa 125 unkomprimierte 4K-Texturen das gesamte Budget füllen — ohne Platz für Frame-Buffer, Tiefen-Buffer oder Mesh-Daten. In der Praxis verlassen sich Spiele stark auf Texturkomprimierung, um tausende Texturen in begrenzen Speicher zu packen.
Budget-Richtlinien variieren je nach Zielhardware. Für Mobile (2–3 GB gemeinsamer Speicher) sollte der gesamte Texurspeicher unter 512 MB bleiben. Für PC/Konsole (6–12 GB VRAM) sind 2–4 GB für Texturen üblich. VR-Titel benötigen zusätzlichen Spielraum, da sie zwei Viewports gleichzeitig rendern.
MIP-Mapping
MIP-Maps sind vorab berechnete herunterskalierte Kopien einer Textur. Eine 2048-px-Textur hat MIP-Ebenen bei 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2 und 1 Pixel. Die GPU wählt die entsprechende MIP-Ebene basierend darauf, wie weit die Oberfläche von der Kamera entfernt ist, und vermeidet so Aliasing (Flimmern), das auftritt, wenn eine hochauflösende Textur unter ihre Pixeldichte verkleinert wird.
MIP-Maps erhöhen den Speicherbedarf der Textur um genau 33 % (die unendliche geometrische Reihe 1/4 + 1/16 + 1/64 + ... konvergiert gegen 1/3). Dies lohnt sich fast immer. Ohne MIP-Mapping flimmern entfernte Oberflächen bei Kamerabewegungen und erzeugen störendes visuelles Rauschen. Jede Spiel-Engine generiert MIP-Maps automatisch beim Asset-Import.
Texturkomprimierungsformate
BC (Block Compression) — PC und Konsole
Die BC-Familie (auch als DXT/S3TC für ältere Formate bekannt) ist der Standard auf PC und Konsole. BC1 (DXT1) komprimiert RGB mit 4:1 und ergibt 4 Bits pro Pixel. BC3 (DXT5) verarbeitet RGBA mit 4:1. BC5 ist optimal für Normal Maps (Zwei-Kanal-Komprimierung). BC7 bietet höhere Qualität RGB(A) bei denselben 8 Bits pro Pixel wie BC3 und wird auf moderner Hardware bevorzugt. Eine 2048-px-BC7-Textur verwendet 16 MB mit MIPs — im Vergleich zu 64 MB unkomprimiert.
ASTC — Mobile und moderne Konsolen
Adaptive Scalable Texture Compression unterstützt variable Blockgrößen von 4×4 bis 12×12 und ermöglicht es Entwicklern, einen Qualitäts-Größen-Kompromiss pro Textur zu wählen. ASTC ist für moderne mobile GPUs (ARM Mali, Qualcomm Adreno) vorgeschrieben und wird auf PlayStation 5 und Nintendo Switch unterstützt. Ein 4×4-ASTC-Block bietet Qualität vergleichbar mit BC7; 6×6-Blöcke reduzieren die Größe weiter mit minimalem sichtbarem Verlust.
ETC2 — OpenGL ES Baseline
ETC2 ist das minimal erforderliche komprimierte Format für OpenGL-ES-3.0-Geräte. Die Qualität ist geringer als bei ASTC, besonders für Texturen mit Alpha-Kanälen. Verwenden Sie ETC2 nur als Fallback für ältere Geräte ohne ASTC-Unterstützung.
Textur-Atlanten
Mehrere kleine Texturen in einer einzelnen großen Textur (einem Atlas) zusammenzufassen reduziert Draw-Calls. Jede Materialänderung in einem Frame erfordert eine Zustandsänderung auf der GPU, die die Pipeline stoppt. Indem verwandte Texturen — alle Wandtexturen, alle Bodentexturen — in Atlanten gepackt werden, können Objekte, die den Atlas teilen, zu einem einzelnen Draw-Call gebündelt werden. UV-Koordinaten werden angepasst, um den Teilbereich des Atlas zu referenzieren.
Atlas-Größen von 2048×2048 oder 4096×4096 sind typisch. Größere Atlanten verschwenden VRAM, wenn nur ein kleiner Teil in einem bestimmten Frame verwendet wird. Textur-Streaming-Systeme in Engines wie Unreal Engine 5 mildern dies teilweise ab, indem nur die benötigten MIP-Ebenen geladen werden.
LOD und Textur-Streaming
Level of Detail (LOD) gilt für Texturen ebenso wie für Geometrie. Objekte weit von der Kamera können niedrigere MIP-Ebenen oder völlig andere, kleinere Texturen verwenden. Virtuelles Texturieren (verwendet in Unreal Engine’s Nanite-System und id Software’s Mega Textures) streamt Texturdaten in Echtzeit von der Festplatte und lädt nur die Kacheln, die bei der aktuellen Kameraposition und Zoomstufe sichtbar sind.
Dies entkoppelt die Texturauflösung von der VRAM-Kapazität: Eine Szene kann auf Terabytes von Texturdaten verweisen, während nur wenige hundert Megabyte im GPU-Speicher resident bleiben.
Praktische Richtlinien
- Verwenden Sie 1024 px für kleine Props (Tassen, Schrauben, Scharniere)
- Verwenden Sie 2048 px für mittelgroße Objekte (Möbel, Waffen, Wandabschnitte)
- Verwenden Sie 4096 px nur für Hero-Assets oder große Oberflächen (Terrain, Gebäudefassaden)
- Komprimieren Sie immer mit BC7 (PC) oder ASTC 4×4 (Mobile) als Baseline
- Profilieren Sie die VRAM-Nutzung mit RenderDoc oder dem integrierten Profiler der Engine
Generieren Sie nahtlose spielbereite Texturen mit unseren Gras-, Sand- oder Kopfsteinpflaster-Generatoren, verfügbar in 1024, 2048 und 4096 px.