horner002
2009-03-11, 14:39:23
Hallo,
ich schreibe gerade einen kleinen Raytracer und habe zwei Fragen bzgl. des Antialiasings.
1: Anstatt für jedes Pixel Antialiasing zu berechnen berechne ich die Farbdifferenz zu seinem linken und oberen Nachbarn und lege anhand dieser Farbdifferenz fest, ob und wie viele Subpixel zum Einsatz kommen. Da ich keine Texturem benutze sollten die einzigen hohen Frequenzen im Bild an Schatten- und Objektkanten auftreten, und die werden auch gut erfasst.
Zwar kann ich immer noch dünne Strukturen verlieren, die genau zwischen zwei Pixelmitten verlaufen, aber das lässt sich wohl nicht vermeiden, wenn ich nicht schon von vornherein supersample.
Ich habe mir mal mit Photoshop den Unterschied zwischen einem voll mit Supersampling und einem mit meiner Methode gerendertem Bild berechnet, bis auf wenige Pixel ist keiner vorhanden.
Reicht diese Methode aus oder gibt es Fälle, an die ich nicht gedacht habe, wo sie vollständig versagt?
2: Die Subpixel ordne ich links/rechts bzw. oben/unten von meiner schon berechneten Pixelmitte an. Dabei kommt immer eine ungerade Anzahl zum Einsatz, also 3x3, 5x5, 7x7.
Für den 3x3-Fall würde das dann so aussehen:
*** * Subpixel
*o* o Pixelmitte
***
Gibt es einen trifftigen Grund, warum in jedem mir bekannten Programm statt dessen immer Modi wie 4x4, 8x8 eingesetzt werden?
ich schreibe gerade einen kleinen Raytracer und habe zwei Fragen bzgl. des Antialiasings.
1: Anstatt für jedes Pixel Antialiasing zu berechnen berechne ich die Farbdifferenz zu seinem linken und oberen Nachbarn und lege anhand dieser Farbdifferenz fest, ob und wie viele Subpixel zum Einsatz kommen. Da ich keine Texturem benutze sollten die einzigen hohen Frequenzen im Bild an Schatten- und Objektkanten auftreten, und die werden auch gut erfasst.
Zwar kann ich immer noch dünne Strukturen verlieren, die genau zwischen zwei Pixelmitten verlaufen, aber das lässt sich wohl nicht vermeiden, wenn ich nicht schon von vornherein supersample.
Ich habe mir mal mit Photoshop den Unterschied zwischen einem voll mit Supersampling und einem mit meiner Methode gerendertem Bild berechnet, bis auf wenige Pixel ist keiner vorhanden.
Reicht diese Methode aus oder gibt es Fälle, an die ich nicht gedacht habe, wo sie vollständig versagt?
2: Die Subpixel ordne ich links/rechts bzw. oben/unten von meiner schon berechneten Pixelmitte an. Dabei kommt immer eine ungerade Anzahl zum Einsatz, also 3x3, 5x5, 7x7.
Für den 3x3-Fall würde das dann so aussehen:
*** * Subpixel
*o* o Pixelmitte
***
Gibt es einen trifftigen Grund, warum in jedem mir bekannten Programm statt dessen immer Modi wie 4x4, 8x8 eingesetzt werden?