Meine Werkzeuge
Namensräume
Varianten

Early Z-Culling

Aus indiedev
Wechseln zu: Navigation, Suche

Early Z-Culling ist eine der Optimierungen der GPU, die recht unbekannt ist, aber trotzdem eine Menge bringen kann und dem Bereich des Culling zuzurechnen ist.

Man kann sich den Weg eines Pixels auf den Bildschirm so vorstellen wie ein Fließband, daß den Weg des Pixels beschreibt. Vorne auf das Fließband wird ein Pixel gelegt, der dann geshaded, gefärbt etc. wird und am Ende verlässt er das Fließband und erscheint auf dem Bildschirm. Dies erfolgt unabhängig davon, ob der Pixel auf dem Bildschirm sichtbar ist oder nicht für jeden einzelnen Pixel des Bildes. Das Early Z-Culling bewirkt nun, daß raltiv weit vorne am Fließband bereits geprüft wird, ob der Pixel benötigt wird oder nicht. Wenn nicht, dann wird er weggeworfen und macht Platz für einen neuen Pixel.

Merke Merke

Je mehr Overdraw und/oder je teurer der Shader je Pixel, desto mehr bringt "Early Z-Culling".

Funktionsweise

Early Z-Culling ist im Grunde genommen ein simpler Tiefentest (und macht daher nur Sinn mit DepthBuffer). Sobald der Punkt in den ScreenSpace transformiert wurde (also irgendwann nach dem VertexShader, aber vor dem PixelShader) wird geprüft, ob der Pixel einen niedrigeren Tiefenwert hat als die Position, an die er gerendert werden soll. Ist der Tiefenwert größer, dann ist der Pixel unsichtbar und wird sofort verworfen. Bei Transparenz funktioniert das nicht, da vom DepthBuffer keine Transparenz berücksichtigt werden kann. Im "transparenten Fall" würde einfach nur die vorderste, sichtbare, transparente Fläche gerendert und dahinter nichts mehr.

Weiterführende Links

Navigation
Tutorials und Artikel
Community Project
Werkzeuge