PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fast Z-Clear?


KiBa
2002-02-12, 13:00:12
Ich habe diese Technik noch nicht so richtig kapiert. Für das Tile wird also ein Flag gesetzt und angezeigt, dass der Z-Buffer dieses Tiles mit einem bestimmten Wert "gecleart" ist?
Was ist, wenn dieses Tile nun durch ein Polygon zur Hälfte bedeckt wird, der Z-Buffer wird an dieser Stelle überschrieben, wenn er den Z-Test anhand des gesetzten Flags besteht. Was ist mit dem restlichem Stück des Tiles, welches Zufalls-Z Werte aus dem vorherigen Frame enthält? Wie kann der Vergleich hier gemacht werden, wenn die Fläche nicht vorher wie üblich gecleart wird?
Oder funktioniert Fast Z-Clear so, dass nur das erste Beschreiben des Tiles beschleunigt wird? Dann wäre bei kleinen Polygonen aber nicht mehr viel Optimierung möglich, was sich angesichts der immer detailierter werdender Geometrie doch garnicht mehr lohnen würde...

ow
2002-02-12, 13:11:15
Ich denke, du hast das ganz falsch verstanden.
Nach jedem gerenderten Frame muss der Z-Buffer auf 0 zurueckgestzt werden.

Bei Fast Z-Clear geschieht das nicht pixelweise, sondern tileweise.

KiBa
2002-02-12, 20:12:34
Eben, nur Tileweise.
Sagen wir, das Tile ist 32x32, es wurde Fast Z-Clear mit 1.0 ausgeführt, das Flag für dieses Tile hat den Wert 1.0.
Die eigentlichen Z-Werte des Tiles sind noch vom vorherigen Frame, da sie nicht zurückgesetzt wurden, diese Werte sind nicht zu gebrauchen.
Nun wird ein Dreieck in dieses Tile gerendert, dieses bedeckt aber nur einen Pixel des Tiles (worst case). Das Flag muss jetzt zurückgesetzt werden, um anzuzeigen, dass der Z-Buffer dieses Tiles nicht mehr gecleared ist, da der Z-Wert eines Pixels bereits aktualisiert worden ist, und damit der Z-Test für dieses Pixel auch funktioniert.
Was ist jetzt mit den anderen 32x32-1 Z-Werten? Diese wurden noch nicht zurückgesetzt, das ist aber wegen des Z-Tests nötig. Wie soll der Rasterizer sonst entscheiden, ob ein Pixel schon gesetzt worden ist oder nicht?
Die einzige logische Erklärung für mich ist, dass nachdem Rendern des ersten Polygons in diesem Tile die restlichen Z-Werte wie üblich gecleart werden. Bedeckt das Polygon das ganze Tile, muss natürlich nichts mehr gemacht werden, da wäre Fast Z-Clear wohl am effektivsten, wenn es so funktioniert wie ich denke...

Quasar
2002-02-12, 21:16:46
Tilewise?

Fast Z-Clear betrifft (und bearbeitet) doch den gesamten Z-Buffer, oder?

Tilewise würde höchstens beim Kyro Sinn machen...

KiBa
2002-02-12, 21:31:06
Originally posted by Quasar
Tilewise?

Fast Z-Clear betrifft (und bearbeitet) doch den gesamten Z-Buffer, oder?

Tilewise würde höchstens beim Kyro Sinn machen...

Nein, eine GeForce arbeitet auch Tileweise, zumindest beim Z-Buffer, sonst hätte Fast Z-Clear keinen Sinn...

Thowe
2002-02-17, 22:02:44
Originally posted by KiBa


Nein, eine GeForce arbeitet auch Tileweise, zumindest beim Z-Buffer, sonst hätte Fast Z-Clear keinen Sinn...

Teilweise arbeitet auch der GeForce 4 Tileweise, denn auch bei nVidia sind die Leute zum Teil Weise. :D

aths
2002-02-18, 03:51:23
Ich weiss nicht, ob ich jetzt einen Denkfehler habe, doch meiner Meinung mach funktioniert fast Z clear nur mit hierarchischem Z-Buffer.

Quasar
2002-02-18, 21:00:11
Hm, aths. Deine Äußerungen werden in letzter Zeit zunehmend kryptisch.
Wie kommst du auf deine Annahme?

aths
2002-02-19, 17:22:52
Quasar, ich will nicht großmäulig wirken, doch wenn ich mich "kryptisch" ausdrücke, liest sich das noch gaaanz anders :) Zu deiner Frage, das ist eine sehr gute Frage, und ich bedanke mich dafür, dass du sie gestellt hast.

Hat sonst noch jemand eine Frage?

:) Ernsthaft: Ehe ich darauf eine vernünftige Antwort geben könnte, müsste ich mich zunächst ein mal tiefergehend mit HyperZ auseinander setzen. Leider fehlt mir in der nächsten Zeit die Zeit dafür - aber ich behalte das im Hinterkopf!

MaxSPL
2002-03-03, 23:58:01
Teilweise arbeitet auch der GeForce 4 Tileweise, denn auch bei nVidia sind die Leute zum Teil Weise. :D [/B]

Cooler Spruch *eg*


Greets, MaxSPL

Quasar
2002-03-04, 00:00:29
Originally posted by aths
Quasar, ich will nicht großmäulig wirken, doch wenn ich mich "kryptisch" ausdrücke, liest sich das noch gaaanz anders :)

:) Mit kryptisch meinte ich auch eher, daß du eine Behauptung in den Raum stellst ohne den Hauch eines Nachweises....

zeckensack
2002-03-11, 16:54:40
:idea:


Der Chip hat genug Cache an bord, um in der maximalen 3d-Auflösung für jeden Bildpunkt ein bit zu setzen, wo dann drinsteht, ob der Z-Buffer an der Stelle noch 'sauber' oder schon überschrieben ist. Zb 1600x1200=1.92Mb=240 000 bytes (kB/kiB absichtlich umschifft ;))


Hmmm ???

[Plan B]
Der Chip machts doch mit einem einzelnen Bit für'n Tile - sagen wir mal 4x4 Pixel - und schreibt dann halt doch das ganze Teil in den Z Buffer, wenn mindestens ein Punkt bemalt wird. Versaftet nur fast die maximale Bandbreite, kommt aber auf's Szenario an. Spart mindestens einen Z-Schreibzugriff pro Kachel, hört sich jetzt nicht bombastisch an, aber die meisten Dreiecke sind halt doch grösser als ein Pixel und überdecken mit etwas Glück gleich ganze Tiles (anstatt nur Tileteile :o).
[/Plan B]

KiBa
2002-03-12, 19:59:46
Originally posted by zeckensack
:idea:

Der Chip hat genug Cache an bord, um in der maximalen 3d-Auflösung für jeden Bildpunkt ein bit zu setzen, wo dann drinsteht, ob der Z-Buffer an der Stelle noch 'sauber' oder schon überschrieben ist. Zb 1600x1200=1.92Mb=240 000 bytes (kB/kiB absichtlich umschifft ;))

Mmh, das wäre schonmal ein Ansatz, um die Sache zu beschleunigen, im Worst-Case allerdings könnte das sogar noch langsamer sein, da hier jeder Pixel ersteinmal überprüft werden muss...
[i]
[Plan B]
Der Chip machts doch mit einem einzelnen Bit für'n Tile - sagen wir mal 4x4 Pixel - und schreibt dann halt doch das ganze Teil in den Z Buffer, wenn mindestens ein Punkt bemalt wird. Versaftet nur fast die maximale Bandbreite, kommt aber auf's Szenario an. Spart mindestens einen Z-Schreibzugriff pro Kachel, hört sich jetzt nicht bombastisch an, aber die meisten Dreiecke sind halt doch grösser als ein Pixel und überdecken mit etwas Glück gleich ganze Tiles (anstatt nur Tileteile :o).
[/Plan B] [/B]
Genau das habe ich oben auch geschrieben, ich denke so funktioniert es...

@aths
Warum nimmst du an, Fast Z-Clear arbeitet mit einem hierarchischem Z-Buffer? Hab bisher noch nirgends gelesen, dass heutige Chips sowas einsetzen. Dabei ist sogar noch mehr Overhead im Worst-Case fall zu bearbeiten, da z.b. alle Nodes markiert werden müssen, bei denen alle Childs markiert sind. Auch hier gibt es Nachteile bei sehr kleinen Polygonen, da der enstehende Baum bis nach unten durchgetestet werden muss...

zeckensack
2002-03-13, 00:07:13
Mmh, das wäre schonmal ein Ansatz, um die Sache zu beschleunigen, im Worst-Case allerdings könnte das sogar noch langsamer sein, da hier jeder Pixel ersteinmal überprüft werden muss...
Nö, wieso? Kannste doch alles im Chip vorhalten. Du mußt nur schaun, wie der aktuelle zu rendernde Z-Wert zu dem steht, mit dem der Z-Buffer gesäubert wurde. Wenn du dann den Pixel schreiben willst, kippste das Bit um und fängst danach an, den externen 'richtigen' Z-Buffer zu benutzen. Problem seh' ich höchstens in der Grösse von dem Ding, wenn man so bedenkt, wie sich die CPU-Hesteller die Beine ausreißen für 256k Cache extra ...