Early Z-Culling

Early Z-Culling ist eine der Optimierungen, die recht unbekannt ist, aber trotzdem eine Menge bringen kann. Zudem ist diese Optimierung relativ leicht zu verwenden. In diesem Artikel versuche ich, dem interessierten Leser zu erklären, was Early Z-Culling ist und wie es funktioniert.

Man kann sich Early Z-Culling so vorstellen wie ein Fließband, daß den Weg eines Pixels bis auf den Bildschirm 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.

Fausregel ist also: Je mehr Overdraw und/oder je teurer der Shader je Pixel, desto mehr bringt „Early Z-Culling“.

Ein wenig Hintergrundwissen zur 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.

Advertisements

Veröffentlicht am 12.01.2011, in Grundlagen, Optimierung, XNA. Setze ein Lesezeichen auf den Permalink. 2 Kommentare.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: