>binaervarianz >projekte >CocoaRay
Kapitel 1: Technischer Hintergrund

Raytracing beschreibt ein Renderverfahren zur Darstellung einer dreidimensionalen Szene auf einer zweidimensionalen, gerasterten Fläche, also beispielsweise einem Monitor oder erstmal generell einem 2D-Bild in einem Fenster. Obwohl die Technik sehr alt ist, wird sie nicht in modernen Grafikkarten zur Bildgenerierung eingesetzt, da sie sehr rechenaufwändig ist. Trotzdem hat diese Technik ihren Reiz. Obwohl die initiale Darstellung von Objekten komplizierter ist, sind viele zusätzliche Funktionen dann einfacher zu implementieren. Zum Beispiel die Schattierung, Spiegelung, Brechung und Überdeckung. Das führt dazu, dass ab einer gewissen Komplexitaet der Szene das Raytracingverfahren im Bezug auf Rechenaufwand andere Techniken wieder einholt. Aus diesem Grund forscht z.B. Intel gerade an hardwareunterstütztem Raytracing um irgendwann einmal heutige Grafikkarten zu ersetzen.

Wie funktioniert das aber nun? Das Prinzip ist simpel: Wir haben einen Punkt im Raum, der unsere Kamera oder unser Auge darstellt. Vor diesem schwebt eine rechteckige Fläche aus vielen kleinen Rasterpunkten. Diese stellt unseren Bildschirm dar. Dahinter befinden sich die Objekte der zu rendernden Szene. Was wir nun tun müssen ist:

  1. Einen Lichtstrahl vom Kamerapunkt durch den ersten Pixel des Bildschirms schicken.
  2. Sehen, ob er ein Objekt trifft, wenn nicht wird dieser Pixel schwarz (oder weiß).
  3. Trifft er ein Objekt, fragen wir das Objekt, welche Farbe es hat und füllen den Pixel mit dieser Farbe.
  4. Wir wiederholen das alles für alle Pixel.

Das gibt schon mal ein einfaches Bild unserer Szene. Da wir den Auftreffpunkt des Lichtstrahls kennen, können wir weitere Sachen berechnen:

  • Mit einem Lichtstrahl vom Auftreffpunkt zur Lichtquelle bestimmen wir, ob ein anderes Objekt im Weg ist (Schatten), und wie weit die Lichtquelle entfernt ist (Helligkeit).
  • Lassen wir den ursprünglichen Lichtstrahl reflektieren und sehen, welches Objekt er als nächstes trifft, berechnen wir Spiegelung.
  • Lassen wir den ursprünglichen Lichtstrahl das Objekt durchdringen und sehen, welches Objekt er als nächstes trifft, erhalten wir Brechung.

Raytracing Concept

>binaervarianz >projekte >CocoaRay