Raytracing, the future of realtime computer graphics? von Miroslav Knejp
Übesicht Erste Eindrücke Rasterization, die Quadratur des Dreiecks Erster Einsatz in Spielen Das grundlegende Prinzip Vor- und Nachteile Raytracing, die Simulation der Realität Die Entstehungsgeschichte Wie funktioniert es? Hardwareumsetzung Ein Blick in die Sterne Hybridverfahren Der SaarCOR Pionier
Videos in Spielen
Final Fantasy
Herr der Ringe
Der Erstvergleich
Übesicht Erste Eindrücke Rasterization, die Quadratur des Dreiecks Erster Einsatz in Spielen Das grundlegende Prinzip Vor- und Nachteile Raytracing, ein physikalisches Modell Die Entstehungsgeschichte Wie funktioniert es? Hardwareumsetzung Ein Blick in die Sterne Hybridverfahren Der SaarCOR Pionier
Rasterization 1996: Quake ist das erste Spiel mit Rasterization und Polygonen Fast komplett von John Carmack allein geschrieben Michael Abrash für Optimierungen einbezogen Erste Anwendung von Lightmaps Anfangs reiner Software Rasterizer Später Support für Renditions‘s Vérité 1000 Grafikchip GLQuake für Windows 95 Demonstrierte die Fähigkeiten der 3dfx „Voodo“ Chipsätze Inzwischen glauben viele, dies wäre der Auslöser für die Gründung neuer Unternehmen und die revolutionäre Entwicklung der Grafikkarten gewesen.
Scanline Algorithmus Anfangs nur die Eckpunte bekannt Berechne die Kantenvektoren und die Umkehrung der Steigung 1/m. Die Kanten gehen von oben nach unten Wähle Kanten ausgehend vom höchsten Punkt Zeichne alle Punkte zwischen den x Werten der Kantenanfänge Veschiebe die Kanten um 1 nach unten und addiere 1/m auf die x Werte Zeichne alle Punkte zwischen den neuen x Werten Wiederhole bis keine Kanten mehr da
Vor- & Nachteile Einfacher Algorithmus mit minimalem Rechenaufwand Äußerst effektive Hardwareumsetzungen Keinerlei forgeschrittene Effekte Schattenwurf (Stencil-Buffer Maske) Reflexionen (Stencil-Buffer Maske) Refraktionen (nur mit Shadern) Runde Flächen nur mit vielen Polygonen möglich Beluchtungsmodell wird meist auf mehr Bildpunkte angewandt als nötig
Übesicht Erste Eindrücke Rasterization, die Quadratur des Dreiecks Erster Einsatz in Spielen Das grundlegende Prinzip Vor- und Nachteile Raytracing, ein physikalisches Modell Die Entstehungsgeschichte Wie funktioniert es? Hardwareumsetzung Ein Blick in die Sterne Hybridverfahren Der SaarCOR Pionier
Historisches 1966 Mathematical Application Group Inc. (MAGI) für Strahlungsdarstellung mit ray casting 1968 Arthur Apple nimmt in betracht ray casting für Grafikdarstellung zu benutzen 1972 wird MAGI wird zu Animatinsstudio Erstellte damals 3-D Animationen für TV, Bildungskanal und TRON 1979 Turner Whitted erweitert ray casting um weitere, rekursiv erstelte, Strahlen und schafft damit den Durchbruch der Computergrafik und nennt das Verfahren ray tracing
Das Grundprinzip
Der Raytracing Algorithmus
Reflexionen
Transparenz
Vorteile Pixelgenaue Beleuchtung, ziemlich realistische Lichtverhältnise Beleuchtungsmodell wird nur auf sichtbaren Objektpunkten ausgewertet Realistische Schatten, Reflexionen und Refraktionen sind eingebaute Effekte und benötigen keine Tricks oder Shader Shader sind weiterhin einsetzbar Mit guten Sortieralgorithmen ist die Komplexität der Szene fast irrelevant (k-D Bäume) Runde Flächen durch Gleichungen oder Interpolation erreichbar Hypertextures
Nachteile Schnittpunktberechnungen zwischen Gerade und Dreieck langsam Geradengleichung: X = O + µ * D Unterschiedlich je nach Schnittobjekt (Ebenen, Kugeln, Dreiecke, NURBS etc.) Ohne einen effizienten Sortieralgorithmus der Geometrie kaum machbar, da sonst O(n) für jeden Strahl, mit n = Anzahl Objekte in der Szene! Führt zu Aliasing Weiche Schatten sind teuer Trotz statischer Szene müssen alle Licht- und Schattenberechnungen für jeden Blickpunkt durchgeführt werden Globales Diffuses Licht wird nicht berücksichtigt
k-D Bäume k-dimensionale Raumeinteilungsbäume Jede Aufzweigung unterteilt den Raum entlang einer der Hautpachsen Die Vergleichsachse wird bei jedem Tiefenschritt cyklisch gewechselt Jeder Knoten enthält genau ein Element; Speicherverbrauch O(n) Konstruktion in O(n log n) Orthogonale Bereichssuche: Finde alle Knoten, deren Position in einem bestimmten Suchbereich liegt O(n1-1/k) Interaktives Beispiel
Hardwareumsetzung Zur Zeit keine echten Raytracer Grafikkarten vorhanden Rekursionen lassen sich schwierig mit hoher Effizienz umsetzen Rasterizer: Jedes Dreieck wird einzeln berechnet und dann verworfen Raytracer: Gesamte Gemoetrie muss während des Vorgangs gespeichert werden Maximale Parallelität, da Strahlen voneinander unabhängig
Übesicht Erste Eindrücke Rasterization, die Quadratur des Dreiecks Erster Einsatz in Spielen Das grundlegende Prinzip Vor- und Nachteile Raytracing, ein physikalisches Modell Die Entstehungsgeschichte Wie funktioniert es? Hardwareumsetzung Ein Blick in die Sterne Hybridverfahren Der SaarCOR Pionier
Hybridverfahren Ersetze die Schnittpunktberechnung durch Rasterizer Anstatt der Farbe wird Position des Schnittpunkts und ein Zeiger auf das Dreieck gespeichert Damit wird die erste Stufe deutlich beschleunigt Ist nur für mittel gefüllte Szenen brauchbar wegen der Rasterizer Nachteile Schattenberechnung, Transparenz und Spiegelung müssen wieder vom Raytracer Algorithmus übernommen werden Hoher Geschwindigkeitsschub bei wenig Spiegelungen und Lichtbrechungen
Der SaarCOR Echtzeit Raytracing Chip der Universität Saarbrücken Wurde am Lehrstuhl für Computergrafik unter Prof. Phillip Slusallek entwickelt SIGGRAPH 2005 wurde er erstmals im Cell-Processor von IBM demonstriert Der erste und einzige Raytracing Chip OpenRT: Eine Software Grafik API, die stark an die von OpenGL angelehnt ist und die Grundlage für den Chip war Kann riesige Datenmengen in Echtzeit darstellen Automobilindustrie setzt das Echtzeit-Raytraicing Verfahren bereits in der Planungsphase ein, um Fehler vor der Produktion zu finden RPU: Programmable Ray Processing Unit www.saarcor.de
SaarCOR Technisches Realisiert auf einem FPGA Chip FPGA = Field Programmable Gate Array, besteht aus sehr vielen programmierbaren Elementen (= Gates), deutlich langsamer als festverdrahtete Logik 90 MHz Grundtakt 6 x 4 MB SD-RAM 2 RAM Riegel für Framebuffer, 1 Riegel für Shader und 3 Riegel für k-D Baum und Dreiecke 300 MB/s Speicherbandbreite von Raytracer und Shader genutzt 135 MB/s zum Zeichnen einer 1024x768 Szene auf dem Bildschirm PCI Anschluss Festverdrahtete Logik könnte noch schnellere Taktungen und mehr Speicher/Bandbreite erreichen
SaarCOR Performance OpenRT: 2,66 GHz Pentium 4 | 512 x 384 Auflösung Scene triangles objects SaarCOR OpenRT RPU Scene6 806 1 44,6 fps 20,8 fps 12,9 fps Office 34 312 35,9 fps 10,4 fps 14,6 fps Quake3 39 424 24,6 fps 11,1 fps 12,5 fps Quake3-p 52 790 17 19,6 fps 7,9 fps 9,7 fps UT2003 52 479 18,6 fps 8,0 fps 7,5 fps Conference 282 805 54 16,2 fps 8,1 fps 5,5 fps Castle 20 891 8 17,5 fps 9,2 fps 2,8 fps Terrain 10 469 866 264 11,6 fps 3,5 fps 2,2 fps SunCOR 187 145 136 5 622 23,5 fps 4,0 fps OpenRT: 2,66 GHz Pentium 4 | 512 x 384 Auflösung SaarCOR/RPU: 66 MHz | Texturen, Shading & Filter
nVidia 8800 GTX 3D Mark03 25 494 022 Triangles 84,69 fps Deutlich höhere Transistorzahlen als complette Quad-Core CPUs GPU-Takt: 575 MHz Speichertakt: 1800 MHz 128 Shader Einheiten (1,35 GHz) 768 MB GDDR3 RAM 30 GB/s Anbindung (könnte über 100 Raytracing Einheiten versorgen) Der bis heute schnellste veröffentlichte Raytracer auf GPUs schaffte 300k bis 4M Strahlen pro Sekunde ohne Geometry Shader (ATI Radeon 9700PRO) Der FPGA Prototyp schafft 3M bis 12M Strahlen pro Sekunde mit deutlich geringeren Energie- und Bandbreitenanforderung Fazit: Ein festverdrahteter SaarCOR, der um eine oder zwei Größenordnungen erweitert wird, würde bereits die Fähigkeiten normaler Grafikkarten übertreffen.
Der SaarCOR
Danke für die Aufmerksamkeit Echt oder künstlich? Danke für die Aufmerksamkeit Q & A