Archiv verlassen und diese Seite im Standarddesign anzeigen : Downsampling beim AA
Spasstiger
2006-12-04, 19:50:55
Ich hab mal ein paar generelle Fragen, wie das Downsampling beim AntiAliasing geschieht.
Die Fragments haben ja drei Farbkanäle und einen z-Kanal (von Coverage Sampling AA mal abgesehen). Wird dann zunächst anhand des z-Werts geprüft, ob ein Fragment sichtbar ist und bei Nichtsichtbarkeit verworfen? Oder fließen immer alle Fragments in das endgültige Pixel mit ein?
Und wie werden dann die Farbwerte eines Pixels bestimmt, wird einfach über alle Fragments gemittelt? Geschieht gleiches beim z-Wert?
Es werden immer alle Fragmente gemischt. Der Z-Buffer ist nur wärend des Renderings relevant, es ist am Ende des Frames alles was noch im Framebuffer ist "sichtbar".
Das Downsampling geschah früher mittels einfacher Mittelwertbildung, inzw. verwendet man auch Gammakorrektur. Der Z-Wert ist für die Bildausgabe eh nicht relevant, der wird gar nicht angefasst.
Spasstiger
2006-12-04, 19:54:44
Der Z-Wert ist für die Bildausgabe eh nicht relevant, der wird gar nicht angefasst.
Das macht irgendwie Sinn, hab mich beim Schreiben auch gefragt, für was man den z-Wert am Ende der Renderpipeline überhaupt noch braucht. ;)
Und wenn du schon das Thema ansprichst, wie funktioniert denn eigentlich die Gammakorrektur genau?
Da fällt mir noch eine Frage ein: Gibt es Ansätze zur Bestimmung der Farbwerte, bei denen die z-Werte eine Rolle spielen? Ein weiter entferntes Fragment wird ja theoretisch weniger in endgültigen Farbwert des Pixels einfließen als ein näher am Betrachter befindliches Fragment. Oder wird außer bei der Gammakorrektur immer noch ganz simpel der Mittelwert gebildet?
Und wenn du schon das Thema ansprichst, wie funktioniert denn eigentlich die Gammakorrektur genau?
das ganze ist einfach eine funktion die nach einer vorgegebenen kurve die eingangsaten (also die framebufferdaten) für die ausgabe transformiert.
im framebuffer ist jedem farbkanal ein zahlenwert von 0-255 zugeordnet, der für die ausgabe entsprechend der eingestellten gammakurve verändert wird.
diese anpassung erfolgt immer, im normalfall aber auf pixelbasis, beim gamma-angepassten AA allerdings vor dem downsampling auf subpixelbasis (wobei meines wissens allerdings nicht die eingestellte gamma-kurve sondern eine fixe kurve mit einem gammawert von 2,2 verwendet wird)
wobei meines wissens allerdings nicht die eingestellte gamma-kurve sondern eine fixe kurve mit einem gammawert von 2,2 verwendet wird
Das ist aber nur bei ATi sicher so. Was nVIDIA macht weiß ich nicht...
Die Gammakorrektur bei der Ausgabe hat eigentlich nur wenig mit "Gamma-korrektem" Downsampling zu tun. Ersteres ist eine Anpassung an die Farbdarstellung des Ausgabegeräts, letzteres ist im Prinzip Datenkompression. Ein Framebuffer mit 8 Bit pro Kanal sollte nach Möglichkeit im sRGB-Format gespeichert werden, dabei entspricht der gespeicherte Zahlenwert nicht linear der Lichtintensität. Aufgrund unserer logarithmischen Wahrnehmung ist es nämlich besser, dunkle Farben feiner Aufzulösen als helle.
Da fällt mir noch eine Frage ein: Gibt es Ansätze zur Bestimmung der Farbwerte, bei denen die z-Werte eine Rolle spielen? Ein weiter entferntes Fragment wird ja theoretisch weniger in endgültigen Farbwert des Pixels einfließen als ein näher am Betrachter befindliches Fragment.
Das musst du mir jetzt mal genauer erklären. Es handelt sich bei den Samples um flächenlose Punkte, man kann aus den AA-Daten nicht mehr genau ermitteln wieviel von einem Polygon innerhalb eines Pixels tatsächlich sichtbar ist. Die Entfernung spielt dabei allerdings keine Rolle.
Spasstiger
2006-12-05, 00:08:22
Das musst du mir jetzt mal genauer erklären.
Lieber nicht, ich merke gerade, dass das Blödsinn war, was ich da in meinem Kopf zusammengesponnen habe. Dachte nur, dass Objekte, die weiter entfernt sind, ja dem Betrachter kleiner erscheinen. Daraus hab ich dann irgendwie geschlossen, dass weiter entfernte Fragments Teil eines scheinbar kleineren Objekts sein müssten und deshalb der Farbwert weniger stark einfließen sollte.
Aber die korrekten Größenverhältnisse sind ja bereits vor dem Fragmentrendering dank der Projektion auf eine Ebene festgelegt.
Also nicht weiter darüber nachdenken, nur manchmal habe ich wirre Ideen, die aber letztendlich total unsinnig sind.
Die Gammakorrektur bei der Ausgabe hat eigentlich nur wenig mit "Gamma-korrektem" Downsampling zu tun. Ersteres ist eine Anpassung an die Farbdarstellung des Ausgabegeräts, letzteres ist im Prinzip Datenkompression.Nur zum Verständnis: Was ist daran Datenkompression? Wo wird da gespart?
Man bräuchte eine viel feinere Auflösung wenn man keine nichtlineare Ausgabe hätte. Das meint er damit.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.