Bei den Bangkok Bäumen fällt mir aber das auf was ich oben geschrieben habe.
"Denn das flimmern ist ein Problem welches davon abhängt wieviel Detailreichtum in so einer Baumtextur steckt. (Gibt es da wenig farbliche Abwechslungen flimmert es bei identischer Auflösung etwas weniger)"
Genau das fällt mir hier auf.
Das flimmern was Ihr immer seht entsteht wenn die Baumtextur praktisch mehr Pixel hat als Ihr bei eurer Grafikkartenauflösung auf den Bildschirm zur Verfügung steht.
Ein Beispiel. Ich lassen mal alle Texturfiltertechniken außen vor.
Ein Karoschachbrett 256 x 256 Pixel schwarzes/weis als Baumtextur.
Pausiert Ihr den Flug dann rendert die Grafikkarte diese KaroTextur auf das Baumpolygon. Das ist praktisch eine 3D Platte die im Raum steht. Der Baum kann nah sein oder auch um 45° gedreht. Die Grafikkarte muss jetzt die Textur perspektivisch korrekt auf diese Platte bringen (vereinfacht gesagt der Renderprozess). Das wird berechnet. Nun kann es sein das dieser Baumfläche aber überhaupt nicht 256 x 256 Pixel auf dem Bildschirm zur Verfügung stehen.
Was nun?
In der Regel passiert folgendes. Es werden ein paar Pixel unterschlagen. Da kann es passieren das auch mal je nach Sichtposition zwei schwarze oder weisse Pixel nebeneinander liegen.
Jetzt heben wir die Pausierung auf wir bewegen uns. Jetzt wird neu gerendert. Da wo eben noch zwei schwarze Pixel nebeneinander liegen passt es jetzt wieder.
Nur das bedeutet aber auch das hier auf dem Monitor die Pixelfarbe gewechselt hat. Da wo schwarz war ist jetzt weis.
Da diese Änderungen ständig passieren sehen wir ein Texturflimmern.
Übrigends noch extremer wird das ganze wenn wir eine Textur mit einem festen Muster haben z.B eine Gittertextur. Wird die perspektivisch verzerrt, dann kann man sehr schön das Problem der Grafikkarte sehen sich zu entscheiden nehme ich ein schwarzes oder weisses Pixel. Das führt zu Moire Mustern. (nicht ganz richtig geschrieben habe jetzt gerade nicht im Kopf wie ich das Sonderzeichen reinbekomme)
Ein stark verkleinertes Bild mit so einem Muster aus meine Doku im Anhang.
Mache ist jetzt aber eine Karobitmap die nur zwei sehr ähnliche Grautöne hat, dann sind diese Farbschwankungen nicht mehr so stark. Wenn ein Pixel sich nur von schwach grau in ein etwas helleres grau wandelt dann ist diese Differenz nicht so stark. Es flimmert weniger.
Genau das sehe ich hier auf dem Screeshot. Die grünen Farbwerte liegen näher bei einander. Weniger Differenz von Pixel zu Pixel bedeutet weniger Flimmern egal wie gut eine Textur aufgelöst ist.
Dann kommt später noch das Texturfiltern dazu. Hier bei werden benachbarte Farbwerte gemittelt um aus mehrere Nachbarpixeln eines zu machen. Denn wir benötigen oft weniger Pixelinformation wenn wir ein Polygon mit einer Textur belegen.
Da kämen da noch das Thema MIP Level ins Spiel. Dieses sind innerhalb einer Textur abglegte Texturvarianten mit weniger Pixeln. Je nach Objekttechnik kann hier ein anderes MIP Level verhalten vorliegen als bei Autogen. Wenn die Bangkok Bäume also in der tiefe des Raumes früher auf niederwertige MIP Level zurückgefahren werden flimmern sie auch weniger.
Wir haben also mehrere Möglichkeiten im FS flimmern bei Bäumen zu minimieren. Da wir bei Autogen aber recht festgelegt sind, haben wir (insofern wir nicht über die Technik Graka usw. Einfluss haben) nur die Texturmöglichkeit. Das bedeutet entweder generell weniger Pixel oder aber eben dafür sorge tragen das die Farbwerte selbst näher beieinander liegen.
Ich kann mich aberbei dem Screen auch täuschen ev. ist durch die Kompression auch was verloren gegangen.
|