Z-fighting mit AMD 290

Drazor

Komplett-PC-Aufrüster(in)
Hi,
ich hab eine 290 und habe öfters Z-fighting und wollte fragen ob man da irgendetwas machen kann oder ob man damit leben muss weil das doch schon recht nervig ist.
Danke schonmal im vorraus
Drazor
 
Ich würde ihn ja sagen was mein Problem ist aber ebend zu schauen worum sich der Thread handelt kann man doch selber oder nicht ?
 
Du hast ein Problem und willst Hilfe, also solltest du auch alle Informationen geben.
Du erwartest von anderen Leuten Eigeninitiative, zeigst aber selber keine.
Nen Link zur Hilfe hast du ja schon gekriegt.
 
du willst hilfe und wir sollen noch durch netz rennen,um dir ne antwort zu geben?!
das ist ein hilfeforum und nicht die heilsarmee.
problem schildern,hardware nennen und wenns nett formuliert ist,bekommst du etliche richtige antworten.
und dein problem wird gelöst.
also mal schaun...irgendeiner klickt schon auf deinen link....
 
Ursache

Z-Fighting nennt man den Effekt, der auftritt, wenn zwei Polygone genau auf der gleichen Stelle positioniert wurden, und/oder wenn der Tiefenpuffer nicht hoch genug auflöst: das Problem hat also seine Ursprünge in mangelnder Numerischer Stabilität bei der Berechnung der Tiefenwerte und damit zusammenhängend der Genauigkeit des verwendeten Zahlentyps im Tiefenpuffer.



Beschreibung

Z-Fighting erkennt man am Flimmern der sich überdeckenden Polygone/Linien bei Bewegungen der Szene. Dabei kommt es mitunter auch zur partiellen Sichtbarkeit beider Polygone.
Ausgelöst wird dies dadurch, dass

  • entweder 2 Polygone auf der selben Tiefenposition liegen und z.B. durch Rundungsfehler einmal das eine und dann wieder das andere sichtbar ist
  • oder 2 Polygone relativ nah beieinander liegen, aber im Tiefenpuffer als gleich weit entfernt eingeordnet werden, weil der Tiefenpuffer nicht genau genug arbeiten kann.
Eine Erklärung ist hierbei wohl nur bei dem zweiten Auftreten nötig:
Wenn der Tiefenpuffer 16Bit-Werte speichern kann, bedeutet dies, dass er 65536 verschiedene Tiefenabstufungen unterscheiden kann. Diese Tiefenstufen werden auf den sichtbaren Teil der Szene (dem Frustum) übertragen und durch die sogenannte Near- und Far-Clipping Plane (CP) begrenzt.


Wenn die NearCP z.B. bei 1 und die FarCP bei 1000 liegt, gibt es innerhalb der 1000 OpenGL Einheiten 65536 Abstufungen. Das sind also 65,536 Stufen pro Einheit. Wenn die FarCP aber bei 100000 liegt gibt es entsprechend nur noch 0,65536 Stufen pro Einheit. Bei einem so grob auflösenden Tiefenpuffer kann es dann sogar vorkommen, dass Polygone, die 1 Einheit weit voneinander entfernt sind, trotzdem in die selbe Tiefenstufe gelangen können. Das kann dann zu besagtem Z-Fighting führen.


Besonders problematisch ist es, der NearCP zu wenig Abstand zum Betrachter zu geben, denn der Tiefenpuffer ist meist als eine Art Fliesskommatyp realisiert. Fliesskommazahlen sind am dichtesten bei der 0 und verlieren Genauigkeit zu größeren Zahlen hin. Da die 0 im Tiefenpuffer jedoch die NearCP repräsentiert, ist die Genauigkeit dort besonders hoch. Die NearCP gibt damit quasi an, ab welchem Bereich im Blickfeld es interessant wird - wenn Gegenstände normalerweise in Entfernungen von einigen Einheiten sind, dann ist eine NearCP von 0.1 eher hinderlich.


Lösung

Z-Fighting kann durch verschieden Techniken verhindert werden:

  • Die Near-Clipping-Plane soweit hinausschieben wie möglich und die Far-Clipping-Plane so nahe wie möglich halten, damit der Z-Puffer besser aufgeteilt wird. (Hilft am meisten)
  • Die Tiefenfunktion ändern ( glDepthFunc(GL_LEQUAL) ).
  • Genauigkeit des Tiefenbuffers erhöhen (z.B. 24 oder 32 Bit statt 16 Bit, wobei moderne Karten meist maximal 24 Bit unterstützen).
  • Keine zwei Polygone an der selben Stelle rendern lassen.
  • "Polygon Offset" verwenden ( glPolygonOffset ).
 
Die hohe Optimierungsstufe(Catalyst AI) im Treiber verändert in manchen Spielen tatsächlich die Buffergröße. Dort kann es also helfen diese aus zu schalten/aus Qualität zu stellen.
Glättungsfilter wie FXAA können den Bildeindruck weniger flimmrig gestalten, beheben aber die Ursache nicht. Ansonsten gibt es natürlich noch die Möglichkeiten SGSSAA oder VSR, die kosten aber gehörig Leistung.
 
Z Fighting kennen viele von Skyrim. Dort fällt es gerne auf wenn die Schneetextur von den Bergen anfängt zu flackern in der Distanz. Ein anderes Beispiel sieht man zb bei vielen Personen in Mass Effekt 1 wo die Augen durch die Haut durch flackern.

Nur paar beispiele.
 
Zurück