Dieser Raytracing-Renderer ist eine selbst programmierte Renderengine, die mithilfe von Raytracing bestimmte Objekte in einer dreidimensionalen Welt darstellen kann. Nachdem ein Bild in einer gewissen Auflösung generiert wurde, rendert sich dasselbe Bild erneut in doppelter Auflösung. Je länger man wartet, desto hochauflösender wird das Bild.
In dieser Engine ist es momentan nur möglich, Kugeln darzustellen und deren Schatten zu berechnen. Ebenfalls kann nur eine Lichtquelle verwendet werden.
Um den Raytracer zu verwenden, müssen keine Eingaben getätigt werden. Es funktioniert auf jedem Gerät, sofern der Bildschirm über eine Auflösung von mindestens 1920x1080 Pixeln verfügt.
Raytracer startenIm zweiten Lehrjahr entdeckte ich mein Interesse an Raytracing und der fotorealistischen Darstellung einer virtuellen Umgebung. Kurz darauf begann ich, eine eigene Raytracing-Engine zu schreiben.
Hierbei traten einige Probleme auf: Einerseits war die Performance sehr schlecht, da ich es in JavaScript ohne Hardwarebeschleunigung, GPU-Unterstützung oder Multithreading programmierte, und andererseits weiss ich nicht, welche Formeln für die Ausrichtung der einzelnen Strahlen verwendet werden müssen.
Um die Richtung der Strahlen zu berechnen, muss der Winkel vom Zentrum der Kamera bis zu dem Pixel ermittelt werden, welches momentan verarbeitet wird. Bedauerlicherweise kenne ich die Formel hierzu nicht, weswegen nur das Zentrum des Bildes präzise berechnet wird. Je nach Betrachtungswinkel werden die Objekte verzerrt.
Das Performanceproblem konnte ich inzwischen teilweise lösen, indem ich GPU.js verwendete. Hiermit können komplexe Berechnungen von der Grafikkarte durchgeführt werden. GPU.js hat wiederum zu anderen Problemen geführt, die ich bis heute nicht beheben konnte, weswegen kein entsprechendes Beispiel vorhanden ist.