Prinzipien - 3D Grafik - "Drawing" (Zeichnen) - Z-Puffer / Z-Test



Dieser Test wird beim "Blending" des Zeichnens durchgeführt.

Die Lade-Objekte in screenAV werden in einen 3D-Raum gezeichnet. Um festzustellen, ob sich ein Lade-Objekt näher an der Kameraposition befindet als die, die schon gezeichnet wurden, wird der Z-Puffer und der Z-Test benötigt.

Z-Puffer

Den "Z-buffer" kann man sich wie ein Bitmap Bild vorstellen, nur das er anstatt der Farbinformation eine Tiefeninformation entählt.
Für jeden Pixel des "Framebuffer"īs, speichert der Z-Puffer einen Wert, wie Tief im 3D-Raum das Pixel des "Framebuffer"īs ist.
Diese Tiefeninformation wird von Lade-Objekten gesetzt, wenn sie in den "Framebuffer" gezeichnet werden.
Danach können diese Tiefeninformation genutzt werden, um Lade-Objekte abhängig von den Tiefenwerten zu zeichnen oder nicht ("Depth-testing" bzw. Z-Test).
In screenAV kann diese Funktion im "Set-parameters"-Befehl auf der "Depth"-Seite eingestellt werden.

Wichtig:
Die Tiefenwerte sind NICHT mit den Werten der Objekt-Koordinaten zu vergleichen!
Die Tiefeninformation des Z-Puffers ändern sich mit der Kameraposition, und mit den Einstellungen der "NearPlane" und "FarPlane". Sehen Sie bei Prinzipien - 3D-Raum.

Z-Test

Dieser Test wird beim "Blending" des Zeichnens durchgeführt.
Beim Z-Test werden die eigenen Z-Werte mit dem des Z-Puffers verglichen. Je nach Test wird dann das Pixel gezeichnet oder nicht. Wird gezeichnet, so kann dabei der Z-Puffer auf den neuen Wert gesetzt werden.

Beispiel:
Zuerst wird eine Flache Scheibe gezeichnet. Diese beeinflusst den Z-Puffer.
Danach wird die Kugel gezeichnet.
Die Einstellungen in screenAV "Less", "Greater" und "Always" werden im "Set-parameters"-Befehl auf der "Depth"-Seite durchgeführt.

"Less" (Weniger)
"Greater" (Größer)
"Always" (Immer)
"LESS" (Kleiner)
Die Kugel wird gezeichnet wenn die eigenen Tiefenwerte kleiner sind als die Tiefenwerte im Z-Puffer. (Wenn keine Hindernisse zwischen Kugel und Kameraposition sind.)
Dies ist meistens bei verformten Lade-Objekten die sinnvollste Einstellungen. Bei verformten Lade-Objekten mit Transparenzen kann es jedoch wieder zu Grafikfehlern kommen.

"GREATER" (Größer)
Die Kugel wird gezeichnet wenn die eigenen Tiefenwerte größer sind als die Tiefenwerte im Z-Puffer.

"ALWAYS" (Immer) (Voreinstellung)
Die Kugel wird unabhängig vom Z-Puffer immer gezeichnet.

ACHTUNG:

Hier handelt es sich nicht um einen Grefikfehler! Die hinteren Dreiecke werden zuletzt gezeichnet und überzeichnen die Vorderen!
Sie können im "Set-parameters"-Befehl auf der "Drawing"-Seite "Sorted draw" Einstellen. Dann werden die Dreiecke von hinten nach vorne gezeichnet und es kommt zu keinen Grafikfehlern. Es ist dabei zu beachten, dass je nach Anzahl der Dreiecke dafür sehr viel Rechenleistung benötigt wird.
Besonders bei verformten Lade-Objekten mit Transparenzen ist dies die beste Einstellung.