Bedeutung und Verwendung des Faktors in glPolygonOffset

8

Ich habe Schwierigkeiten, die Bedeutung des ersten Parameters in glPolygonOffset function zu verstehen.

%Vor%

In der offiziellen Dokumentation steht dieser Faktor

  

Gibt einen Skalierungsfaktor an, der zum Erstellen eines variablen Tiefenoffsets für jedes Polygon verwendet wird.

und das

  

Der Tiefenwert jedes Fragments wird versetzt, nachdem es aus den Tiefenwerten der entsprechenden Scheitelpunkte interpoliert wurde. Der Wert des Offsets ist Faktor × DZ + r × Einheiten, wobei DZ ein Maß für die Änderung der Tiefe relativ zum Bildschirmbereich des Polygons ist und r der kleinste Wert ist, der garantiert einen auflösbaren Offset für ein gegebenes ergibt Implementierung.

Ich verstehe was r und unit sind. Was ich nicht verstehe ist, was DZ ist, dh was ist gemeint mit der "Messung der Änderung der Tiefenwerte auf den Bildschirmbereich des Polygons" und warum müsste ich Faktor auf etwas anderes als 0 setzen.

Wenn ich möchte, dass mein Drahtgitter versetzt ist, muss ich nur ein paar Einheiten zum Tiefenwert hinzufügen / substatieren, nicht wahr? Was ist die Bedeutung, Zweck und Verwendungsbeispiel des Faktors Parameter (und der DZ im Dokument erwähnt)?

    
Armen Tsirunyan 17.11.2012, 13:47
quelle

1 Antwort

8

Ich muss hier einige Ignoranz zugeben, aber ich fand diesen Artikel , der es erklärt. Sie sagen:

  

Um ein schönes Rendering des hervorgehobenen Objekts ohne visuelle Artefakte zu erzielen, können Sie entweder ein positives Offset zum festen Objekt hinzufügen (von Ihnen wegschieben) oder ein negatives Offset zum Drahtgitter (ziehen Sie es zu sich). Die große Frage ist: "Wie viel Offset ist genug?" Leider hängt der erforderliche Versatz von verschiedenen Faktoren ab, einschließlich der Tiefensteigung jedes Polygons und der Breite der Linien im Drahtgitter.

Sie erklären dann die Tiefensteigung auf diese Weise:

  

Die Tiefensteigung ist die Änderung der z (Tiefe) -Werte dividiert durch die Änderung der x- oder y-Koordinaten, wenn Sie ein Polygon durchlaufen. Die Tiefenwerte sind in Fensterkoordinaten, fest im Bereich [0, 1]. Verwenden Sie diese Formel, um die maximale Tiefensteigung eines Polygons (m in der Offset-Gleichung) zu schätzen: m = max {| delV / delS |, | delV / delT |}. (wo del eine partielle Ableitung ist)

Daraus folgern sie:

  

Bei Polygonen, die parallel zu den nahen und fernen Clipping-Ebenen sind, ist die Tiefensteigung Null. [...] Für Polygone, die in einem großen Winkel zu den Clipping-Ebenen stehen, kann die Tiefensteigung signifikant größer als Null sein, und ein größerer Offset kann erforderlich sein. Kleine, von null verschiedene Werte für Faktor wie 0,75 oder 1,0 reichen wahrscheinlich aus, um unterschiedliche Tiefenwerte zu erzeugen und die unangenehmen visuellen Artefakte zu beseitigen.

    
user1118321 17.11.2012, 15:21
quelle