Bericht Bericht: Raytracing in Spielen

Ich hab da mal ne Verständnisfrage zu Punkt 5 in der Erklärung. Wenn ich da einen reflektierenden Gegenstand habe klingt die Vorgehensweise für mich logisch, aber wie funktioniert das wenn das Objekt matt ist ?
Dann müsste doch vom Schnittpunkt aus in jede Richtung ein Strahl weiterberechnet werden um sicherzustelen, dass keine Lichtwellen dort von irgendwo her auftreffen oder nicht ?
 
Du könntest einen Unschärfefilter über eine Spiegelung legen, aber wirklich diffus geht nicht. Dafür kann man Radiosity nehmen, ist aber nicht wirklich Echtzeittauglich.
 
Das heißt für Leute die Physik-Basics kennen aber keine Fachbegriffe ?
Irgendwie muss das ja gehen, z.B. die Wände bei Q3 sind ja vermutlich auch nicht reflektierend.
 
Radiosity wird auf Wikipedia ganz gut erklärt. Die Bilder geben auch ein Beispiel der Möglichkeiten.
Wenn der Gegenstand matt ist, werden nur Lichtquellen mitberechnet, nicht aber das Licht, was andere Objekte reflektieren. So funktionieren die normalen Materialen beim Raytracing.
 
Zuletzt bearbeitet:
Vielen Dank für das viele positive Feedback! Dies motiviert mich natürlich auch in diese Richtung weiter zu forschen.

Ich möchte hiermit auch auf ein paar der gestellten Fragen eingehen.


> was mich intressieren würde ist wie die Physiks Karten im Vergleich zu der Quadcore CPU
> bei solchen Berechnungen abschneiden würde

Getestet habe ich dies nicht und vermutlich wird auch niemand einen Ray-Tracer für diese Karten schreiben. Derzeit sind die Karten nur sehr gering in der Bevölkerung verteilt und eine deutliche Änderung an diesem Zustand ist zumindest derzeit nicht erkennbar. Bei den CPUs kann man dagegen davon ausgehen, dass spätestens in ein paar Jahren auch der Supermarkt-PC mit Quad-Core oder noch mehreren Cores ausgeliefert werden wird. Ansonsten bin ich überzeugt, dass ein Quad-Core bei Ray-Tracing mehr herausholen kann als die derzeitige Physik-Beschleunigerkarte.




> All diese Effekte auf RT zu portieren (wenn überhaupt effizient möglich)

Bisher habe ich noch keinen Effekt gefunden, der nur mit Rasterisierung und nicht mit Ray-Tracing möglich wäre.

Transparenz-Effekte gehen mit Ray-Tracing langsamer. Allerdings werden diese ohnehin oft nur zum Einsparen von Geometrie benutzt: beispielsweise ein Gitter, das über eine teilweise transparente Textur dargestellt wird. Hier wäre es mit Ray-Tracing effizienter das Gitter als echte Geometrie zu modellieren und auf Transparenzen zu verzichten. Dies führt dann auch im Vergleich zu dem zuvor benutzten 2D-Gitter zu einem realistischeren Eindruck der Welt.

Viele Effekte gehen mit Ray-Tracing einfacher zu implementieren. Zudem wird die Verkettung von Effekten automatisch aufgelöst. Beispiel: Eine beleuchtete, rote Glaskugel wirft einen roten Schatten an die Wand. In der Spiegelung der Glaskugel sieht man automatisch diesen roten Schatten. Das Ganze kann dann noch in einer daneben liegenden, komplett spiegelnden Kugel korrekt wieder gespiegelt werden, inklusive aller Effekte. Als Programmierer braucht man sich nicht darum zu kümmern erst den einen Effekt zu berechnen, damit dieser mit wiederum einem anderen Effekt überhaupt noch funktioniert. Dies geht automatisch mit dem Durchlaufen der Strahlen.



> Man kann allerdings an den Algorithmen nicht mehr viel optimieren

Doch kann man. Speziell an den Algorithmen zum Durchlaufen der Beschleunigungsstruktur (BSP-Baum). Auch im Bereich der notwendigen Strahlen bei mehreren Lichtquellen ist noch einiges heraus zu holen.





> Wenn der Programmieraufwand wirklich so viel geringer ist, dann dürfte die Entwicklungszeit von Engines ins Spielen doch drastich abnehmen, oder? Bräuchte man denn dann auch demennsprechend weniger Programmierer?

Entweder weniger Programmierer oder man würde einfach die dazu gewonnene Zeit in weitere Special-Effects stecken. Die Erstellung des Contents braucht natürlich nach wie vor viel Zeit. Wenn auch etwas weniger, da man z.B. als Mapper keine manuellen Blockierungsklötze mehr setzen muss, um die Sichtbarkeit einzuschränken.
Zitat aus meiner Diplomarbeit:
===
Zusätzlich muss der Level-Designer zur Optimierung der Performance Portale für die Sichtbarkeit (so genannte „Vis-Portale“) setzen. Diese werden von der „Quake 4“-Engine auf Sichtbarkeit abgetestet, und nur bei einem positiven Ergebnis wird der dahinter liegende Bereich gezeichnet. In dem Level „Waste Processing Facility“ gibt es 110 solcher Portale, in allen „Quake 4“ beiliegenden Maps sind es insgesamt etwa 3.200, die alle manuell gesetzt werden mussten.
===



> Warum braucht man für die Ausbuchtungen in der Wand 5k Polygone? Würde es nicht genauso ausschauen wenn man für die platte Front große Dreiecke nimmt?

Klar kann man das. Man kommt in einer optimierten Fassung dieser Wand mit etwa gleichem sichtbaren Detailgrad auf ca. 450 Dreiecke. Darum geht es aber nicht, wenn ich den Einfluss der Dreiecke auf die Framerate messe. Ein professioneller 3D-Künstler könnte die 5.000 Dreiecke benutzen und beispielsweise noch mehr sichtbare Details wie echte Einschusslöcher mit Vertiefungen einbauen.





> Wie dreist ihr mein Gothic3 Schatten GIF geklaut habt

Danke für die Datei. Prima Zusammenfassung der Gothic 3 Grafikprobleme. Leider hatte ich auf der Seite damals keine Kontaktadresse gefunden :-).





> habe nen fehler gefunden... das letzte bild ist aber von quake 3

Das Spielermodell ist von Q3. Den Wasser-Shader habe ich aber im Rahmen meiner Diplomarbeit mit Q4RT erstellt, als ich noch keinen Support für die .md5-Dateien implementiert hatte.




> Bloß dass bis du Raytracing nützen kannst, die Rechenleistung eh schon so hoch ist, dass du eh schon fast alles machen kannst - auch ohne Raytracing.

Nur gerade dann wirst du Ray-Tracing nehmen, eben weil es das Leben leichter macht!



> Das Ganze hörten wir 2004 mit Q3 Raytraced auch schon - was ist passiert - nichts aber auch gar nichts für Spieler greifbares.

Hat auch niemand behauptet, dass das bis heute für Spieler greifbar sein wird.
Von der Hardwareseite hat sich logischerweise vieles getan. Auch im Bereich der Algorithmen gibt es deutliche Fortschritte. In Q3RT kamen meistens nur 1-2 dynamischen Lichtquellen zum Einsatz. In Q4RT haben die Maps an die 400 dynamischen Lichtquellen mit akzeptablen Kosten. Weitere Features stehen in der Liste auf q4rt.de.





> wie funktioniert das wenn das Objekt matt ist?

Das ist der Fall bei dem roten Dreieck in der Erklärung zum Algorithmus. Es wird einfach ein Farbwert im Shader berechnet, der beispielsweise aus einer Textur kommt.


Danke für das viele Feedback!

Best regards,
Daniel Pohl
 
Wie sieht es eigentlich mit einer Demo von Q3RT für uns Heimanwender aus?
Oder mit der Verfügbarkeit der OpenRT Bibliothek?

Ich würde nämlich gerne mal Q3 in deiner angepassten Variante anspielen und wenns in einer Auflösung von 256x256 ist... :D

Interessant ist, dass Q3RT aus 2004 stammt, es doch auf heutigen Rechnern zumindest doch auf geringen auflösungen laufen sollte?

Mir wäre ein Spiel aus 2000 - 2004 Raytraced lieber, als eins aus der Neuzeit, da man ältere Spielen wohl eher zum laufen bekommt auf "normalen Home-PC's"
--> von daher ist es nicht besser erstmal RT-Spiele-Engines auf Basis älterer Spiele ausgereift (lauffähig auf "normalen Home-PC's") zu entwickeln, und dann die Erfahrungen und Technik an neuere Hardware/Software anpassen?

Ich freue mich jedenfalls für meine Urenkel, wenn sie diese Technik irgendwann mal nutzen können... :lol:

Gruß
Robert


PS: Schöner Artikel, schöne Aussichten, und viel Glück!
 
Sehr lesenswerter Artikel!

Ich wünsche Daniel auf jeden Fall viel Erfolg für seinen beruflichen Werdegang & freue mich auf die ersten Games mit beschriebener Bombastgrafik!
 
Zuletzt bearbeitet:
Also ich dfind das enorm geil - Ich hab schon mit 11 jahren angefangen zu Raytracen und war damals schon begeistert von dieser technologie! Ich kann mir durchaus vorstellen das diese technologie den durchbruch innerhalb der nächsten 5 jahre beginnt. Parallelprozessoren kommen ja gross in mode - und auch bei grafikprozessoren macht man in dieser hinsicht viele viele fortschritte. Der bau eines RT-Chips sollte also bald kein allzugrosser aufwand sein - und wenn sich eine spielefirma dazu entschliesst nicht nur openGL und direcr3D zu implementieren sondern auch den anscheinend denkbar einfachen zusatz OpenRT (ist ja sytaxtechnisch fasdt ident zu openGL) dann glaube ich kann diese entwicklung sehr schnell vonstatten gehn. Wäre ich ein Chiphersteller würde ich dahingehend INTENSIVST forschen - denn die vorzüge sind enorm!

mike;
 
"Intel präsentiert Prozessor mit 80 Rechenkernen", welche Schlagzeile unter diesem Aspekt betrachtet! Massiv-parallele Floatingpoint-Leistung im Teraflopbereich bei vertraeglichen 62W Verbrauch. Aufgrund seiner geringen Komplexitaet nicht fuer heutige 3D-Beschleunigung geeignet, aber Raytracing sollte machbar sein. Wird Intel etwa die "Grafikkarte der Zukunft" bringen, welche Echtzeit-Raytracing bietet? Ist halt die Frage, welche Ops der Chip kann.
 
nein. raytracing braucht schlicht zu viel datendurchsatz und dazu ist die cpu falsch designed für raytracing oder 3d-grafik im allgemeinen.
 
Interessant den Spiegel Artikel zu lesen ("...1024 Intel-Server monatelang beschäftigt...") und es mit heutigen Spielen zu vergleichen.

Besonders das Spiel Quake:
Selbst ein Highend-Rechner im Münchener Intel-Testlabor, ausgestattet mit dem neuesten Vierkern-Prozessor, brachte gerade mal knapp 17 Bilder pro Sekunde zustande - zu wenig für ruckelfreies Spielen. Und das, obwohl die Bildschirmauflösung auf magere 256 mal 256 Bildpunkte beschränkt wurde

Und heute werden in 3840x2160 sogar 60 FPS erreicht.
 
Highspeed Opi schrieb:
Interessant den Spiegel Artikel zu lesen ("...1024 Intel-Server monatelang beschäftigt...") und es mit heutigen Spielen zu vergleichen.

Besonders das Spiel Quake:


Und heute werden in 3840x2160 sogar 60 FPS erreicht.
Aber die ganze sichtbare Szene wird von RTX Karten in doch nicht per Raytracing berechnet.
 
Artikel von 2007! Hat am Ende doch lange gedauert, bis RT einigermaßen bezahlbar wurde.
 
Zurück
Oben