PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Online vs. Offline Rendering


ollix
2006-01-24, 12:15:15
Hi,

Mich würde interessieren, was aktuell die größten Unterschiede zwischen Online und Offline Rendering sind. Seit der Einführung von programmierbaren Shadern in die Grafikkarte hat das Onlinerendering in der Hinsicht "aufgeholt" verglichen mit z.B. Renderman-Shadern. Mich würde aber interessieren, wo heute noch die Hauptunterschiede liegen. Wie ich das verstanden habe, kann man beim Online-Rendering nicht so ohne weiteres mit einem Pixel/Fragment, die Farbe eines anderen an anderer Stelle beeinflussen. D.h. ich sehe nur mein aktuelles Element - wenn ich das umgehen will, muß ich eben Hilfsmittel wie RenderToTexture einsetzen, ist das beim offline Rendering anders? Habe ich theoretisch Zugriff auf die gesamte Szene? Dazu eben noch Einschränkungen in der Rendergenauigkeit, während ich beim Offline Rendering mit genügend Resourcen theoretisch mit beliebiger Genauigkeit rendern könnte? Was fehlt denn jetzt z.B. dem Online Rendering (neben Sachen wie Füllrate/Bandbreite) um so schöne Sachen zu implementieren, wie man sie vom Offline-Rendering kennt (Global Illumination, Photon Mapping, echtes Subsurface Scattering, etc.). Ich weiß zwar, daß es auch Echtzeit Raytracing auf Grafikkarten gibt, wobei dies ja auch mehr "getrickst" ist, oder; bzw. die Grafikkarten eigentlich nicht für diese Rendermodelle 'gebaut' sind? Aber was fehlt dafür konkret?

RLZ
2006-01-24, 13:04:04
Seit der Einführung von programmierbaren Shadern in die Grafikkarte hat das Onlinerendering in der Hinsicht "aufgeholt" verglichen mit z.B. Renderman-Shadern.
Aufgeholt, aber nicht eingeholt. In Rendermanshadern kann man lustig mit Strahlen herumschiessen. Würde auf normalen Grafikkarten zwar theoretisch auch gehen, aber läuft dann wieder auf RTRT raus und ist damit nicht praktikabel.
Wie ich das verstanden habe, kann man beim Online-Rendering nicht so ohne weiteres mit einem Pixel/Fragment, die Farbe eines anderen an anderer Stelle beeinflussen. D.h. ich sehe nur mein aktuelles Element - wenn ich das umgehen will, muß ich eben Hilfsmittel wie RenderToTexture einsetzen, ist das beim offline Rendering anders?
Das Problem entsteht durch die parallele Berechnung der Pixel. Bei Offlinerendering ist dies normalerweise auch der Fall. Allerdings kann man in bestimmten Fällen den Algorithmus so anpassen, wie man ihn braucht. Zugriffe auf Nachbarpixel werden aber i.A. nur zur Beschleunigung oder Postprocessing-Effekte benötigt.
Habe ich theoretisch Zugriff auf die gesamte Szene?
Hier wäre zu klären was du unter gesamte Szene verstehst.
Dazu eben noch Einschränkungen in der Rendergenauigkeit, während ich beim Offline Rendering mit genügend Resourcen theoretisch mit beliebiger Genauigkeit rendern könnte?
Stimmt.
Was fehlt denn jetzt z.B. dem Online Rendering (neben Sachen wie Füllrate/Bandbreite) um so schöne Sachen zu implementieren, wie man sie vom Offline-Rendering kennt (Global Illumination, Photon Mapping, echtes Subsurface Scattering, etc.).
Es imo fehlt schonmal: Irgendeine GI-Lösung, echte Reflektion und Refraktion und schliesslich echtes Motionblur.
Subsurface Scattering halte ich in der momentanen Ausführung schon für sehr brauchbar.
Ich weiß zwar, daß es auch Echtzeit Raytracing auf Grafikkarten gibt, wobei dies ja auch mehr "getrickst" ist, oder; bzw. die Grafikkarten eigentlich nicht für diese Rendermodelle 'gebaut' sind? Aber was fehlt dafür konkret?
Getrickst wird da garnichts. ;)
Den Karten fehlt eine Intersectorunit (als Äquivalent zum Rasterisierer). Langsam entwickeln sich die Karten in die Richtung, dass man die normalen Shader auch dafür sinnvoll nutzen kann. Selbst die RTUT von Sven Woop nutzt die selben Recheneinheiten für Intersection und Shading.
Raytracing wird die Rasterisierung auch mittelfristig nicht ersetzen können.