August 13, 2009

Raytracer, Refraction und Antialiasing

Heute hab ich einen weiteren Schritt gewagt: Refraction!
Das konnte ich ebenfalls nach dem Tutorial von Jacco Bikker (http://www NULL.flipcode NULL.com/archives/Raytracing_Topics_Techniques-Part_3_Refractions_and_Beers_Law NULL.shtml) bauen, ging ganz einfach! Es musste nur ein weiterer Strahl, der durch die Refraktion gekrümmt wird, weiter verfolgt werden.

Zusätzlich hab ich versucht nach dem gleichen Tutorial das Antialiasing zu implementieren. Hier sieht man einen 4×4 Edge-Antialiasing (nur Primärstrahlen)

4x4 Edge-Antialiasing (nur Primärstrahen, Edge-Erkennung vertikal und horizontal)

4x4 Edge-Antialiasing (nur Primärstrahen, Edge-Erkennung vertikal und horizontal)

Hier sieht man einen 4×4 Full-Antialiasing

Raytracing, Refraction und Antialiasing (4x4 vollständig = 16 x größere Auflösung)

Raytracing, Refraction und Antialiasing (4x4 vollständig = 16 x größere Auflösung)

Es wurde die gleiche Szene, wie bei Jacco Bikker verwendet, weil sie richtig gut gewählt ist, find ich. (Und es zwang mich dazu, mein Koordinatensystem an das von Jacco anzupassen. (ist jetzt somit nicht mehr festgecodet, sondern über die 4 Variablen minX/maxX und minY/maxY festgelegt))

Ergänzung: Im zweiten Bild hab ich durch das Umformen einer Abfrage des Edge-Antialiasing Mechanismen quasi alle Pixel als Ecken deklariert. Auf diese Art und Weise wurden alle Pixeln durch das Antialiasing verfeinert.
Leider wurde die Farbe der Lichtquelle überschrieben, deshalb ist die Lichtquelle, die man auf dem Bild direkt sehen kann, schwarz.
Doch die Spiegelungen zeigen immer noch eine weiße Lichtquelle an!
Das Liegt daran, dass nur die primären Strahlen mit Antialiasing verfeinert werden.

Die Schatten und die Reflektionen im obigen Bild sind deshalb pixelig, weil nur Kanten zwischen unterschiedlichen Primitiven erkannt werden. Dies ist ja beim Schatten oder einer Reflektion nicht der Fall, weil man an beiden Seiten einer Ecke (innen und außen) immer noch auf die selbe Primitive trifft. (-> Hier kann man das Raytracen weiter optimieren, damit man auch solche Stellen erkennt)

Email, RSS Follow (http://www NULL.specificfeeds NULL.com/follow)
(https://twitter NULL.com/share)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>