Bei der Raytracing- / Pfadverfolgung besteht eine der einfachsten Möglichkeiten zum Antialiasing des Bildes darin, die Pixelwerte zu überabtasten und die Ergebnisse zu mitteln. IE. Anstatt jedes Sample durch die Mitte des Pixels zu schießen, versetzen Sie die Samples um einen gewissen Betrag.
Bei der Suche im Internet habe ich zwei unterschiedliche Methoden gefunden:
- Generieren Sie Proben nach Belieben und wägen Sie das Ergebnis mit einem Filter ab
- Ein Beispiel ist PBRT
- Generieren Sie die Samples mit einer Verteilung, die der Form eines Filters entspricht
- Zwei Beispiele sind smallpt und Benedikt Bitterli ‚s Tungsten Renderer
Generieren und wiegen
Der grundlegende Prozess ist:
- Erstellen Sie Stichproben, wie Sie möchten (zufällige, geschichtete Sequenzen mit geringer Diskrepanz usw.).
- Versetzen Sie den Kamerastrahl mit zwei Samples (x und y)
- Rendern Sie die Szene mit dem Strahl
- Berechnen Sie mit Hilfe einer Filterfunktion ein Gewicht und den Abstand des Samples zur Pixelmitte. Zum Beispiel Box-Filter, Zelt-Filter, Gauß-Filter usw.)
- Wenden Sie das Gewicht auf die Farbe aus dem Render an
In Form eines Filters generieren
Die Grundvoraussetzung ist die Verwendung von Inverse Transformation Sampling , um Samples zu erstellen, die entsprechend der Form eines Filters verteilt sind. Zum Beispiel wäre ein Histogramm eines Samples, das in der Form eines Gaußschen verteilt ist:
Dies kann entweder exakt erfolgen oder durch Binden der Funktion in ein diskretes pdf / cdf. smallpt verwendet die exakte Inverse cdf eines Zeltfilters. Beispiele für Binning-Methoden finden Sie hier
Fragen
Was sind die Vor- und Nachteile jeder Methode? Und warum sollten Sie eins übereinander verwenden? Ich kann mir ein paar Dinge vorstellen:
Generieren und Wiegen scheint die robusteste Methode zu sein, die eine beliebige Kombination einer beliebigen Probenahmemethode mit einem beliebigen Filter ermöglicht. Sie müssen jedoch die Gewichte im ImageBuffer nachverfolgen und anschließend eine endgültige Auflösung vornehmen.
Das Generieren in Form eines Filters unterstützt nur positive Filterformen (z. B. keine Mitchell-, Catmull-Rom- oder Lanczos-Filter), da Sie keine negativen PDF-Dateien haben können. Wie oben erwähnt, ist die Implementierung jedoch einfacher, da Sie keine Gewichte nachverfolgen müssen.
Letztendlich kann man sich Methode 2 jedoch als eine Vereinfachung von Methode 1 vorstellen, da sie im Wesentlichen eine implizite Box-Filter-Gewichtung verwendet.