News PowerVR GR6500: ImgTec demonstriert Ray Tracing auf Mobile-GPU

nlr

Redakteur
Teammitglied
Registriert
Sep. 2005
Beiträge
10.313
  • Gefällt mir
Reaktionen: andi_sco
Sowas ist schon hart!
... Ray Tracing!...
Das sieht sowas von Übertrieben genial aus!
Kannte mal eine Demo da wurde glaub Wolfenstein 3D in Ray Tracing gebaut... Hammer!

Oder auch so ein GTA in Ray Tracing art! da gabs mal was!... Das sah absolut krass aus!

ImgTec sollte wirklich mal eine Desktop GPU-Architektur Raushauen mit 180W Verbrauch!
VIA könnte das ja Lizensieren...
oder Matrox ;)
Matrox Millennium Reloaded!

das wär mal was!
 
Zuletzt bearbeitet:
cruse schrieb:
das war vor 20 jahren mal interessant

Darum wird auch kein einziger Animationsfilm auf renderfarmen mit raytracing berechnet wo ein frame stunden brauch... das geht ja heute alles in Echtzeit ;)

Die Firma ist doch "der" Kandidat für eine übernahme von nvidia. Da können sie das gleich machen damals bei aigia (physx). Firma aufkaufen, Technik in die gpu integrieren, only und somit den fortschritt um jahre ausbremsen. Ich will nicht wissen woo wir mit Physik in Games heute schon wären wenn agia ihre Technik an alle lizensiert hätte....

Offen wir mal das icht das gleiche mit raytracing passiert
 
Zuletzt bearbeitet:
Kurz gefragt: macht das mehr als Schattenberechnung und Oberflächenreflexion?
 
Gerade auch anhand der verlinkten Artikel kann man herrlich nachvollziehen, wie Echtzeit-Raytracing über die Jahre gestorben ist. Es ist tot.

-Die Leistungsfähigkeit beruht vor allem auf hierarchischen Sortierungen. Dynamische Objekte -> keine Echtzeit-Sortierung möglich -> Hallo FPS-Keller. Eine aktuell repräsentative Szene ohne Sortierung bekommt ein durchschnittlicher Spiele-PC nicht einmal auf 320x200 Pixeln flüssig dargestellt.

-Die Anforderungen skalieren 1:1 mit der Auflösung. Läuft auf 720p? Gute Nacht auf UHD. (Rasterisiertes Rendern skaliert da doch etwas besser (in etwa UHD/FHD 1/3 vs 1/4) )

-RR hat enorm aufgeholt, gerade im RT-Vorzeige-Bereich Licht & Schatten gab es enorme Fortschritte in den letzten Jahren. Klar, RT wird qualitativ immer überlegen sein, aber Kinnladen-Klapper wie vor 10 Jahren ist es schon längst nicht mehr.
 
na endlich. auf raytracing spezialisierte hardware ist schon lange überfällig. aber solange AMD oder nvidea sich der sache nicht annehmen wird das höchstens was wie die physX karten.
 
Bild 1
Bild 2
Bild 3
Bild 4

... Das ist zwar Real Time Path-Tracing
aber wenn DAS mal ein GTA 12 oder ähnliches wird... ... dann haben wirs geschafft!
und bei solchen Bildern von " Kinnladen-Klapper wie vor 10 Jahren ist es schon längst nicht mehr. " zu sprechen ist zwar Okay, aber dennoch ist es Wahnsinn WIE Raytracing für uns sein "könnte" ...
 
@Ganjaware
Raytracing ist eine Methode aus einer dreidimensionalen Definition einer Szene ein zweidimensionales Bild zu erzeugen. Mit Szene meine ich zum Beispiel Lichtquellen, Dreiecken und Materialien, die die Reflexions- und Transmissionseigenschaften der Dreiecke definieren

Rasterisierung ist ein anderes sogenanntes "Rendering"-Verfahren. Dort wird im Prinzip einfach nur bestimmt, welches Dreieck in welchem Pixel zu sehen ist, und dann in Abhängigkeit der Position auf diesem Dreieck das Pixel anders eingefärbt (das ist die Aufgabe des Pixel Shaders). (Vertex-, Geometrie- und Tesselation-Shader ignoriere ich hier einfach mal.:D)
Mittlerweile ist das Programm zur Berechnung der Farbe in dem Pixel deutlich komplexer als früher. (Am Anfang ordnete man jedem Dreieck eine Farbe zu und färbte das Pixel dann entsprechend ein.)

Raytracing hingegen verfolgt die Ausbreitung von Licht als Strahlen von der Kamera zur Lichtquelle. Je nachdem, welche Materialen unter welchem Winkel auf diesem Weg getroffen wurden, kommt unterschiedlich viel Licht einer bestimmten Farbe in der Kamera an.

Raytracing ist ein deutlich realistischeres Modell, um zu simulieren, wie eine Kamera ein Bild aufnimmt.

Ich hoffe das beantwortet deine Frage halbwegs verständlich.:)


Ein Vorteil des Raytracings ist, dass es keine große Suppe von Hacks ist:
Moderne Rasterisierungsengines sind eine Riesensammlung von Schummeleien, die alle ihre Spezialfälle haben, in denen diese dann sichtbar werden.

Beispiel: Die Unreal Engine 4 simuliert Spiegelungen auf Objekten mit einer Mischung aus Relection Captures und Screen-Space-Reflections. Das kann richtig gut aussehen. (https://www.youtube.com/watch?v=B3ZNf6-SDZA)
ABER: Diese Szene verwendet als Lichtquelle nicht nur die Spots an der Decke und die Sonne, sondern auch noch 4 Lampen die am Fenster platziert sind, um die richtige Beleuchtung zu erzeugen.

Indirekte Beleuchtung (das Sofa spiegelt sich in der Vase, beleuchtet die Umgebung rot schimmernd etc.) werden über spezielle unsichtbare Objekte (Reflection Captures) realisiert, die vom Level-Designer mit einer Abwägung zwischen Performance und Optik sowie etwas Können gesetzt werden müssen.


In einem Raytracer definiere ich einfach die Sonne und die Deckenlampen und der Rest kommt von selbst.

Wenn ich jetzt eine simple spiegelnde Oberfläche in diese Szene setze (habe ich selbst probiert), dann wird plötzlich offensichtlich, dass diese Spiegelungen eigtl. grausam falsch sind. Dann muss man beginnen, mit virtuellen Kameras, speziellen Render-Targets und so weiter einen Spiegel hinzutricksen.

Ansonsten gilt aber auch, dass der Übergang fließend ist. Die indirekte Beleuchtung wird in dieser Szene mit Raytracing(!) offline berechnet. Aber das Egebnis ist dann halt nur eine Approximation.

@paulinus
Es stimmt, dass die logarithmische Skalierung (Geschwindigkeit proportional zu log(Anzahl an Dreiecken)) meistens bei Raytracing durch hierarchische Strukturen wie QBVH-Bäume erzeugt wird. Aber das ist nicht der einzige Ansatz.

Mora et al haben vor ein paar Jahren das Konzept des Divide and Conquer Raytracings vorgestellt, das (analog zu zum Beispiel Quicksort) die Dreiecke und Lichtstrahlen sortiert und damit ohne explizite Baumstruktur auskommt. Im Bestfall kann das auch logarithmisch skalieren. In ihren Tests war es als Single-Core-Implementierung (nach ihren Benchmarks) wettbewerbsfähig. Mittlerweile gab es auch Verbesserungen und eine Implementierung auf GPUs. In einem production ready Raytracer habe ich den Algorithmus bisher nicht gesehen, aber das wäre ein Ansatz, der auch für dynamische Szenen funktioniert.

Aber bisher ist ja Echtzeit selbst mit statischer Geometrie eine harte Nummer. :(
 
Entweder es werden spezielle Chips geschaffen, welche für Raytracing optimiert sind (so wie Aegia es damals mit speziellen Karten für Physikberechnungen (genauer PhysX) versucht hat (PPU)), oder wir müssen daraf warten, dass GPU Hersteller wie AMD, Nvidia und/oder Intel ihre GPUs anpassen.

Ich gehe aber davon aus, dass dies nicht in den nächsten zwei bis vier Jahren stattfinden wird, da der Bedarf seitens der Spieleentwickler (noch) nicht existiert. Mit aktuellen Kniffen und Tricks erreicht man in Spielen fast gleichwertige Effekte wie bei Raytracing, ohne dafür den gesamten technischen Unterbau zu verändern.
 
Danke für den schönen Beitrag ALU33. Mal ein schöner grober Überblick, wie das so funktioniert.
 
Ein Vorteil des Raytracings ist, dass es keine große Suppe von Hacks ist:
Moderne Rasterisierungsengines sind eine Riesensammlung von Schummeleien, die alle ihre Spezialfälle haben, in denen diese dann sichtbar werden.

Ich finde man sollte berücksichtigen, dass Raytracing ebenso wie Rasterisierung umständlich bzw. unelegant zu programmieren ist. Analog wie man bei der Rasterisierung Shaderprogramme für die Koordinatensystemtransformationen und für die Einfärbung der Pixel benötigt, benötigt man eben beim Raytracing eben Programme für die Schnittpunktberechnung, die Farb/Materialberechnung und die Strahlenerstellung.

Ebenso eignen sich die verschiedenen Raytracing-Verfahren mal mehr oder weniger gut um einen bestimmten Effekt oder eine gegebene Szene zu simulieren - oft kombiniert man dann eben mehrere Verfahren oder eben Hacks - gerade wenn es schnell sein soll. Die Wolfenstein RT demo von Intel hat zum Beispiel für Tiefenunschärfe und für globale Beleuchtung einfache Tiefenbufferhacks (aka SSAO) ähnlich wie die Rasterisierung bei modernen 3D Spielen verwendet. Ist das Raytracing-Verfahren für den Effekt bzw die Szene ungeeignet kommt es genauso wie bei der Rasterisierung zu Bildfehlern, die sich zum Beispiel bei Monte-Carlo-Simulationen oft durch ein Rauschen äußern.
 
-Ps-Y-cO- schrieb:
Bild 1
Bild 2
Bild 3
Bild 4

... Das ist zwar Real Time Path-Tracing
aber wenn DAS mal ein GTA 12 oder ähnliches wird... ... dann haben wirs geschafft!
und bei solchen Bildern von " Kinnladen-Klapper wie vor 10 Jahren ist es schon längst nicht mehr. " zu sprechen ist zwar Okay, aber dennoch ist es Wahnsinn WIE Raytracing für uns sein "könnte" ...


Sieht aus wie GTA5 mit Mods, also nix besonderes
 
@mightyplow
Gerne. :)


Nai schrieb:
Analog wie man bei der Rasterisierung Shaderprogramme für die Koordinatensystemtransformationen und für die Einfärbung der Pixel benötigt, benötigt man eben beim Raytracing eben Programme für die Schnittpunktberechnung, die Farb/Materialberechnung und die Strahlenerstellung.

Das stimmt, allerdings sind die Shader-Programme meist deutlich universeller (und häufig auch einfacher), da sie beim "reinen" Raytracing (also ohne Tricks) ein physikalisches Verhalten annähern. Der Spiegel ist da sicherlich das Extrembeispiel pro Raytracing: Einfallswinkel gleich Ausfallswinkel und fertig ist der Shader.
Bei komplexen Fällen wie Nebel oder ähnlichem wird es natürlich schwieriger, aber im Prinzip muss man immer "nur" (:D) ein mathematisches Modell für das gewünschte physikalische System finden. Die woanders verwendeten Algorithmen spielen beim Raytracing deutlich weniger in das Design der Materialien hinein.

Nai schrieb:
Ist das Raytracing-Verfahren für den Effekt bzw die Szene ungeeignet kommt es genauso wie bei der Rasterisierung zu Bildfehlern, die sich zum Beispiel bei Monte-Carlo-Simulationen oft durch ein Rauschen äußern.

Hier muss man jetzt zwischen verschiedenen Klassen von Raytracing unterscheiden.
Sogenannte "biased" Raytracing-Algorithmen erzeugen wirklich "Bildfehler" aufgrund von Tricks, um weniger Rechenleistung zu benötigen.

Aber selbst der einfachste unbiased Raytracing-Algorithmus (Pathtracing) erzeugt, wenn man nur lange genug rechnet, ein "perfektes" Bild. (Irgendwelche Näherungen zur physikalischen Realität sind natürlich immer vorhanden, aber den meisten fällt zum Beispiel das Fehlen von Polarisation oder Beugung (Interferenz, etc.) in Alltagsszenen nicht auf.)

Gerade in komplizierten Szenen ist Pathtracing nicht optimal in Bezug auf die Geschwindigkeit, weshalb es am Anfang das Monte-Carlo-typische Rauschen gibt. Dieses Rauschen wird aber mit mehr Rechenleistung (oder mehr Zeit :p) immer weniger.
Und wenn man dann ausgefeilte Sampling-Strategien (Metropolis, Sobol,...) und vielleicht auch bidirektionales Pathtracing oder so implementiert, wird es natürlich für den Programmierer immer komplizierter.

Aber als Künstler, der einfach nur ein Bild (oder einen Film) erzeugen will, muss man sich um diese Details nicht mehr kümmern. Und das finde ich so toll am Raytracing.
Auch wenn leider insbesondere die unbiased Algorithmen noch sehr mit Echtzeit-Rendering zu kämpfen haben. :(
 
scootiewolff schrieb:
Sieht aus wie GTA5 mit Mods, also nix besonderes

In deinem und meinem Leben nicht!
GTA 5 wird mit Mod's NIEMALS so aussehen!
 
Was verhindert den Einsatz von Raytraycing auf GPUs? Die Shader sind doch sehr gut bei Problemen der lineare Algebra und die Ausbreitung von Strahlen kann mit Matrizen berechnet werden. Nach meinem laienhaften Verständnis sollte das doch relativ einfach zu implementieren sein
 
Es "funktioniert" schon. Aber beim Raytracing geht immer ein Großteil der Rechenzeit für die Strahlenverfolgung, also die Schnittpunktberechnung zwischen Strahl-Dreieck und die Traversierung der räumlichen (space partitioning oder BVH) Datenstruktur drauf. Die eigentliche Schattierungsarbeit macht nur einen kleinen Teil der Laufzeit aus. Aber GPUs können bei der Strahlenverfolgung ihre Rechenleistung nur schlecht ausnutzen, weil die Strahlenverfolgung eben nur wenig datenparallel ist und zudem auf GPUs die Latenzen oder die Speicherbandbreite die Performance reduzieren. Auch ist die Funktionalität der Strahlenverfolgung bei den allermeisten Raytracing Anwendungen identisch. Deshalb hilft der GPU ihre freie Programmierbarkeit bei der Strahlenverfolgung nur wenig. Aus dem Grund ist es insgesamt sehr verlockend die Strahlenverfolgung als Fixed-Function-Spezialhardware in die GPU einzubauen um dadurch das Raytracing stark zu beschleunigen.


Bei komplexen Fällen wie Nebel oder ähnlichem wird es natürlich schwieriger, aber im Prinzip muss man immer "nur" () ein mathematisches Modell für das gewünschte physikalische System finden. Die woanders verwendeten Algorithmen spielen beim Raytracing deutlich weniger in das Design der Materialien hinein.

Aber als Künstler, der einfach nur ein Bild (oder einen Film) erzeugen will, muss man sich um diese Details nicht mehr kümmern. Und das finde ich so toll am Raytracing.
Auch wenn leider insbesondere die unbiased Algorithmen noch sehr mit Echtzeit-Rendering zu kämpfen haben.

Das geht so lange gut, so lange ich es mir als Programmierer oder als Künstler erlauben kann nicht zu hacken, gerade bei Echtzeitanwendungen ist soetwas eigentlich nur selten der Fall. Zum Beispiel braucht man beim Nebel auf einmal Volumenrendering-Ansätze. Wenn man in das Volumenrendering dann noch Schattenwurf oder globale Beleuchtung einbaut wird das ohne Hacks sehr schnell sehr langsam. Oder alternativ wenn ich einen Sternehimmel durch sehr helle oder sehr weit entfernte Kugeln simulieren will braucht ein Raytracer sehr viele Samples bis er die Kugeln gefunden und ihre Helligkeit im Bild korrekt ermittelt hat. Auch bei Filmen setzt man deshalb afaik oft nicht nur auf Raytracing sondern meist auf eine Kombination von Techniken inklusive Rasterisierung
 
Zuletzt bearbeitet:
Zurück
Oben