WERBEPLATZ VERFÜGBAR · PARTNERSCHAFTEN WILLKOMMEN

Frustum Culling, Occlusion Culling und LOD-Pop-in: Wie 3D-Spiele-Engines unsichtbare Geometrie verwerfen

365Finds Editorial
11.430 Wiki-Artikel erfasst

365 Wiki mit deiner KI nutzen

Kopiere den Prompt unten, füge ihn in deine gewohnte KI ein und stelle direkt deine Frage.

Vollständigen Skill herunterladen

Probiere es zuerst mit dem Prompt aus. Wenn du 365 Wiki häufig nutzt, installiere den vollständigen 365Wiki Skill, damit du ihn nicht jedes Mal einfügen musst. Ohne bevorzugte KI funktionieren auch die Webversionen von Gemini oder Microsoft Copilot.

Einleitung: Das geometrische Optimierungsproblem moderner Spiele

Die Schauplätze zeitgenössischer Open-World-Titel – wie die weitläufigen Nadelwälder in The Witcher 3, die hochgradig verschachtelten Wolkenkratzerschluchten in Cyberpunk 2077 oder die Bergpanoramen in Horizon Zero Dawn – bestehen pro Einzelbild regelmäßig aus zig Millionen Polygonen, hunderten Lichtquellen und vielen Gigabyte hochauflösender Texturen. Müsste der Grafikprozessor (GPU) für jeden einzelnen Frame ausnahmslos jedes Dreieck der virtuellen Welt transformieren, rastern und schattieren, würde selbst modernste Spitzenhardware unter der Rechenlast zusammenbrechen und lediglich einstellige Bildraten liefern.

Echtzeit-3D-Rendering ist im Kern die Kunst des Weglassens. Spiele-Engines erreichen hohe Bildwiederholraten nicht allein durch brachiale Rechengeschwindigkeit, sondern indem sie unsichtbare Geometrie in einem extrem frühen Stadium der Pipeline radikal verwerfen.

Dieser Prozess stützt sich auf eine dreistufige Architektur zur Sichtbarkeitsermittlung: Frustum Culling (Sichtkegel-Abschneidung), Occlusion Culling (Verdeckungsberechnung) und das Management von Detailstufen (LOD, Level of Detail). Arbeiten diese Systeme optimal zusammen, sparen sie enorme Mengen an CPU-Draw-Calls und GPU-Rasterisierungsbandbreite ein. Werden sie jedoch zu aggressiv kalibriert oder geraten bei raschen Kamerabewegungen aus dem Takt, entsteht eines der auffälligsten Darstellungsphänomene im PC-Gaming: das Pop-in von Geometrie.

Frustum Culling: Das Verwerfen von Geometrie außerhalb des Sichtbereichs

Frustum Culling ist der primäre und rechentechnisch sparsamste Sichtbarkeitstest, den eine Engine in der Render-Pipeline durchführt.

                   [Kameraposition / Auge des Spielers]
                            / \
                           /   \
        Vordere           /=====\
        Clipping-Ebene   /   ▲   \
                        /    │    \   <--- Innerhalb des Frustums (GERENDERT)
                       / [Sichtbar]\
                      /   Objekt    \
        Hintere        /=============\
        Clipping-Ebene/               \
       [Verworfen: L] [Verworfen: T] [Verworfen: R]

Die Geometrie des Kamera-Frustums

In der 3D-Computergrafik ist der Sichtbereich der Kamera kein unendlicher Quader, sondern eine Pyramide mit abgeschnittener Spitze, geometrisch als Pyramidenstumpf (Frustum) bezeichnet. Das Frustum wird mathematisch exakt durch sechs Begrenzungsebenen definiert:

  1. Vordere Clipping-Ebene (Near Plane): Schneidet Geometrie ab, die sich zu nah an der Kameralinse befindet, um fehlerhafte Schnittkanten im Blickfeld zu verhindern.
  2. Hintere Clipping-Ebene (Far Plane): Bestimmt die maximale Sichtweite; alles dahinter wird ignoriert.
  3. Linke, rechte, obere und untere Ebene: Werden durch das Sichtfeld (FOV) der Kamera und das Seitenverhältnis des Monitors vorgegeben.

Bounding Volumes und Ebenen-Schnittprüfungen

Millionen einzelner Scheitelpunkt-Koordinaten (Vertices) auf der CPU gegen sechs Ebenen zu prüfen, würde massive Last erzeugen. Daher umschließt die Engine jedes 3D-Modell mit einem stark vereinfachten geometrischen Hüllkörper (Bounding Volume):

Bevor ein Draw-Call an DirectX, Vulkan oder den Treiber geht, führt die Engine einfache Skalarprodukt-Berechnungen zwischen der Bounding Sphere und den Ebenengleichungen durch. Liegt das Bounding Volume vollständig außerhalb auch nur einer der sechs Ebenen, wird das gesamte Mesh verworfen. Die GPU erhält für dieses Objekt weder Vertices noch Rechenbefehle.

Occlusion Culling: Die Eliminierung verdeckter Polygone (Overdraw)

Frustum Culling entfernt zuverlässig Objekte hinter dem Spieler oder außerhalb des Sichtfeldes, löst jedoch nicht das Problem des Overdraws: Objekte, die zwar im Frustum liegen, aber durch Hindernisse im Vordergrund – wie massive Burgmauern, Gebirgszüge oder Türen – vollständig verdeckt sind.

Ein detailliertes Dorf mit Marktständen und Werkstätten hinter einer gewaltigen Burgmauer voll auszurechnen, wäre eine gigantische Verschwendung von Rasterisierungsressourcen. Spiele-Engines nutzen Occlusion Culling, um diese verdeckten Meshes zu eliminieren.

[Blickpunkt] ───► [Massive Granit-Burgmauer] ───X (SICHT BLOCKIERT)
                            │
               (Occlusion-Culling-Test)
                            │
                  ┌─────────┴─────────┐
                  ▼                   ▼
           [Verdeckter Markt]   [Verdeckte Schmiede]
           (DRAW CALL GESTOPPT) (GPU-LAST: NULL)

Drei wesentliche Occlusion-Culling-Techniken

  1. Potentially Visible Sets (PVS) und Cell-Portal-Systeme:
    • Bewährt in Korridor- und Innenraum-Szenarien (klassisch in id Tech- und Source-Engines).
    • Die Karte wird in Räume (Cells) unterteilt, die durch Öffnungen (Portals) verbunden sind. Befindet sich ein Portal nicht im aktuellen Frustum, wird die Geometrie des dahinterliegenden Raumes gar nicht erst berechnet.
  2. Hardware-Occlusion-Queries:
    • Die Engine sendet vereinfachte Quader entfernter Objekte an die GPU und fragt ab: „Hat irgendein Pixel dieses Quaders den Tiefentest (Z-Buffer) bestanden?“.
    • Lautet das Ergebnis null Pixel, wird das detaillierte Mesh in den Folge-Frames verworfen.
    • Die Latenzfalle: Das Zurücklesen der Abfrage über den PCIe-Bus erfordert 1 bis 2 Frames Synchronisationszeit zwischen CPU und GPU. Bei schnellen Drehungen führt diese Verzögerung dazu, dass Objekte kurz aufblitzen oder verspätet aufploppen.
  3. Hierarchischer Z-Buffer (HZB) und Compute-Shader-Culling:
    • Standard in modernen Architekturen wie Unreal Engine 5 und Unity HDRP. Der Tiefenpuffer des vorherigen Frames wird in eine Mipmap-Pyramide heruntergerechnet (HZB).
    • Compute-Shader testen auf der GPU zehntausende Bounding-Boxen parallel gegen diese Pyramide. Da dies rein im VRAM geschieht, entfallen Pipeline-Stalls zwischen CPU und GPU.

Detailstufen (LOD) und die Physik des Modell-Pop-ins

Selbst wenn ein Objekt im Frustum liegt und unverdeckt ist, wäre es unwirtschaftlich, für eine 100.000-Polygon-Statue, die in großer Ferne nur 8 Pixel auf dem Monitor einnimmt, die volle Geometrie zu zeichnen. Hier greift das LOD-System (Level of Detail).

Diskrete LODs vs. virtualisierte Geometrie

Warum Pop-in entsteht: Hardware-Engpässe im Asset-Streaming

Das plötzliche Hineinploppen von Gebäuden, Bäumen oder Texturen ist selten ein Programmierfehler, sondern das Resultat physikalischer Flaschenhälse beim Laden von Daten:

  1. I/O-Latenz des Datenträgers: Mechanische Festplatten (HDDs) oder ausgelastete SATA-SSDs schaffen es nicht, Hunderte Megabyte Mesh-Daten binnen Millisekunden in den Arbeitsspeicher zu streamen.
  2. PCIe-Bandbreite und VRAM-Upload: Schnelle Kameradrehungen überlasten die Datenübertragung von Vertex-Puffern und Texturen in den Grafikspeicher.
  3. Verzögerte Verdeckungsaufhebung: Schwenkt der Spieler rasant um eine Ecke, bewegt sich die Kamera schneller, als HZB-Berechnungen die Verdeckungsflags löschen können – das Objekt erscheint mit spürbarer Verzögerung.

Diagnose-Matrix: Rendering-Artefakte und Darstellungsfehler

Die präzise Einordnung von Darstellungsfehlern hilft bei der gezielten Konfiguration der Grafikoptionen:

Visuelles SymptomBetroffenes SubsystemTechnischer MechanismusEmpfohlene Abhilfemaßnahme
Objekte verschwinden an den BildschirmrändernFrustum CullingZu knapp berechnetes Bounding Volume oder falsches FOVSicherheitsabstand für FOV in den Konfigurationsdateien anheben
Flackern von Gebäuden beim schnellen UmbiegenOcclusion CullingSynchronisationslatenz bei Hardware-AbfragenOcclusion-Methode auf hierarchischen Z-Buffer (HZB) umstellen
Modelle ändern sprunghaft ihre Form bei AnnäherungDiskreter LOD-BiasLOD-Umschaltabstände zur Ressourceneinsparung zu kurzQualität der „Sichtweite“ oder „Mesh-Details“ im Menü erhöhen
Schatten auf dem Boden ploppen ab 10 Metern aufCascaded Shadow Maps (CSM)Umschaltgrenzen der Schattenkaskaden zu kurz gesetztSchattendistanz im Grafikmenü oder Kaskadenanzahl erhöhen
Texturen wirken nach Drehung matschig und schärfen nachTextur-Mipmap-StreamingVRAM voll oder Latenz beim Nachladen von der SSDSpiel auf NVMe-SSD installieren; Texturqualität leicht senken

Die Beherrschung von Echtzeit-Grafik basiert auf dem feinen Gleichgewicht zwischen Geometriedichte, Speicherbandbreite und Prozessorlast. Die fundierten Architekturleitfäden auf 365Finds bieten Orientierung, um Engine-Parameter präzise abzustimmen und störendes Geometrie-Pop-in zu beseitigen, ohne die Bildraten zu gefährden.

Referenzen