Was ist Raytracing?

Seit Nvidias 2018-Ankündigung seiner RTX-Grafikkarten der 20er-Serie ist sein Killer-Feature „Raytracing“ ein beliebter Begriff in Videospielkreisen. Es kann jedoch schwierig sein zu verstehen, was Raytracing ist, wie es funktioniert und warum es besser aussieht als frühere Techniken.

Was ist Raytracing und wie funktioniert es?

In der realen Welt, wenn Sie etwas sehen, sehen Sie ein Photon von einer Lichtquelle. Auf dem Weg zu Ihnen wurde dieses Photon möglicherweise von einer oder mehreren Oberflächen reflektiert. Jede Reflexion verändert die Eigenschaften des Lichts, das Ihre Augen erreicht.

Die Sonne strahlt eine breite Palette von Lichtfarben aus, jede Oberfläche absorbiert einen Teil des Lichts und reflektiert einen anderen. Was wir als grüne Fläche sehen, wie zum Beispiel ein Blatt, sieht so aus, weil es hauptsächlich grünes Licht reflektiert. Wenn das vom Blatt reflektierte Licht auf eine andere Oberfläche trifft, z. B. eine weiße Wand, dann sieht diese Oberfläche etwas anders aus, als wenn reinweißes Licht darauf scheint. Jede Reflexion beeinflusst jede zukünftige Oberfläche, mit der das Licht interagiert, und ändert ihre Intensität und die sichtbare Farbe.

Raytracing ist eine grafische Technik, die denselben Prinzipien folgt. Lichtstrahlen werden projiziert, die Eigenschaften des reflektierten und gebrochenen Lichts, wie beispielsweise die Farbe, berechnet und der Strahl wandert weiter.

In der realen Welt sendet jede Lichtquelle wie eine Glühbirne oder die Sonne Photonen in alle Richtungen aus, von denen die allermeisten niemals Ihre Augen erreichen. Dies zu simulieren wäre ein wahnsinnig intensiver Prozess, der ein meist verschwendetes Ergebnis produziert. Um den Arbeitsaufwand zu reduzieren, arbeitet Raytracing umgekehrt und projiziert Strahlen von der Kamera. Jeder Strahl darf eine bestimmte Strecke ohne Reflexion zurücklegen oder eine bestimmte Anzahl von Malen reflektiert werden, bevor die Berechnungen durchgeführt und der Pixelwert festgelegt wird.

Zum Beispiel wird ein Strahl aus der Perspektive des Betrachters geworfen, wenn er auf eine weiße Wand trifft, generiert ein Algorithmus rekursiv a reflektierter Strahl, der dann durch eine blaue Glasscheibe läuft, schließlich trifft der reflektierte Strahl auf eine weiße Lichtquelle und ist absorbiert. Das blaue Glas absorbiert alles außer blaues Licht, das ein blaues Licht auf die Wand wirft, was dazu führt, dass die Pixel blau gefärbt sind.

Warum sieht Raytracing so viel besser aus?

Die Standardmethode zum Rendern von Szenen in Echtzeit umfasst die Verwendung vorberechneter Lightmaps und der Beleuchtung der gesamten Szene. Einige Spiele verwenden eine begrenzte volumetrische Beleuchtung, um sich bewegende Lichtquellen einzubeziehen und dynamische Schatten zuzulassen. Diese Technik wird jedoch sparsam verwendet, da sie ziemlich prozessorintensiv ist.

Raytracing kann ein fotorealistisches Ergebnis erzielen, wenn in der Spielentwicklungsphase zusätzliche Arbeit geleistet wird. Wenn alle Oberflächen Details wie Reflexionsvermögen, Transparenz und die Lichtbrechung enthalten, kann das Gesamtergebnis natürlicher erscheinen. Während dieser Ansatz offensichtlich mehr Arbeit in der Phase des Spieldesigns erfordert, lässt er das Ergebnis erscheinen fotorealistisch mit Licht, das so reagiert, wie es sollte, wenn es von Beton, Metall, Holz und Glas reflektiert wird usw.

Raytracing ermöglicht es, als Teil des Rendering-Prozesses genaue Reflexionen und Schatten zu werfen. Bei herkömmlichen Rendering-Methoden sind diese beiden Effekte völlig optional und können zu erheblichen Leistungseinbußen führen.

Raytracing selbst kommt mit einem massiven Performance-Hit. Bis Nvidias RTX-Grafikkarten mit Hardwarebeschleunigung für Raytracing angekündigt wurden, dachte man dass die erforderliche Rechenleistung für die Durchführung von Raytracing in Echtzeit in Software mehr als ein Jahrzehnt beträgt ein Weg. Selbst mit der Hardwarebeschleunigung führt Raytracing immer noch zu einer erheblichen Leistungseinbuße, da es immer noch der langsamste Teil beim Rendern eines Frames ist.