Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzahl der Polygone beim Raytracing nicht so wichtig? Stimmt das? Warum?
Hallo,
ich habe mal gehört, daß es beim Raytracing keine große Rolle spielt,
wenn eine 3d Szene aus vielen Polygonen besteht.
Stimmt das?
Ich kann mir das irgendwie nicht vorstellen.
Wenn ja, warum soll das so sein?
Und wie ist es beim Raytracing mit dem Culling,
braucht man das auch hier, oder wird es beim Raytracing überflüssig?
Hallo,
ich habe mal gehört, daß es beim Raytracing keine große Rolle spielt,
wenn eine 3d Szene aus vielen Polygonen besteht.
Nur vom Speicherverbrauch her
Stimmt das?
ja
Ich kann mir das irgendwie nicht vorstellen.
Wenn ja, warum soll das so sein?
Logarithmische Laufzeit.
Und wie ist es beim Raytracing mit dem Culling,
braucht man das auch hier, oder wird es beim Raytracing überflüssig?
Raytracing impliziert, dass nur auf das zugegriffen wird was auch wahrscheinlich nötig ist zur Berechnung.
Deswegen ändert ist die Performance auch relativ wenig abhängig von der Polygonzahl, sondern eher von der Auflösung.
Wobei ich sagen muss, dass Echtzeitraytracing mit 3200x1200 ziemlich geil abgeht ;D
marco42
2004-10-26, 11:14:06
Hallo,
ich habe mal gehört, daß es beim Raytracing keine große Rolle spielt,
wenn eine 3d Szene aus vielen Polygonen besteht.
Stimmt das?
Ich kann mir das irgendwie nicht vorstellen.
Wenn ja, warum soll das so sein?
Und wie ist es beim Raytracing mit dem Culling,
braucht man das auch hier, oder wird es beim Raytracing überflüssig?
du cullst nicht, dann wuerdest du ja nicht mehr die spiegelung der scene hinter dir sehen. :-)
Beim raytraing werden schnittberechnungen ausgefuehrt und zwar fuer jedes primitiv. Ein primitiv kann zB ein polygon sein. du kannst das aber durch intelligent algorithmen wie boundingboxen, k-dCOP's und octrees verbessern. du testest also erstmal grob, was dein starhl so schneidet. du siehst es haengt sehr wohl von der anzahl der polygone ab. wenn du dann noch distributed raytracing(gegen das Aliasing) machst, dann wird es ganz langsam.
du siehst es haengt sehr wohl von der anzahl der polygone ab.
Wenn man nach ner Verzehnfachung der Polygone 20% Verlust hat, heult auch keine rum. Er sagte ja auch weniger wichtig, was wohl vollkommen zutreffend ist bei nem ordentlichen Raytracer.
wenn du dann noch distributed raytracing(gegen das Aliasing) machst, dann wird es ganz langsam.
Distributed Raytracing != Antialising. Zumal man z.B. Supersampling auch prima adaptiv machen kann bei RT, was wieder schön schnell ist.
Adaptive Erkennung kann zb so aussehen:
http://graphics.cs.uni-sb.de/~morfiel/oasen/gallery/048%20A-SS.jpg
Volle Glättung aber nur ein Bruchteil (die roten Bereiche) wird höher gesamplet... Performanceverlust Pi mal Daumen wie MSAA bei normalen Grafikkarten.
PS.: Die Landschaft ist übrigens ein gutes Beispiel für einen produduralen Shader ;)
Shink
2004-10-27, 11:50:30
Distributed Raytracing ist natürlich lahmer; aber wenn man es für einen Effekt (z.B. Supersampling FSAA) verwendet, bekommt man (von der Geschwindigkeit her gesehen) "gratis" andere Effekte wie z.B. Soft Shadowing, Temporal AA, Depth of Field, Motion Blur etc.
Distributed Raytracing ist natürlich lahmer; aber wenn man es für einen Effekt (z.B. Supersampling FSAA) verwendet, bekommt man (von der Geschwindigkeit her gesehen) "gratis" andere Effekte wie z.B. Soft Shadowing, Temporal AA, Depth of Field, Motion Blur etc.
Ich hab zwar ja das Originalpaper zu Distributed Raytracing gelesen, aber da stand nirgends was von Antialiasing drin.
Ausserdem kostenlos gibts die anderen Effekte nicht.
Die Samplingzahlen sind für die anderen Effekte viel zu niedrig (wo gibts eigentlich was über temporal AA für Raytracing??). Primitives Depth of Field braucht mindestens 25 Samples damit es anfängt brauchbar auszusehen. Motionblur kriegt man durch Interleaved Sampling auch kaum billiger und Softshadowing brauch auch einige mehr an Samples.
Die imo einzig sinnvolle Ansatz ist alles mögliche adaptiv zu machen und damit wesentlich sparsamer mit Resourcen umzugehen.
Hier mal noch ein Bild zu Softshadows mit 16! Samples.
http://graphics.cs.uni-sb.de/~chrvog/images/galileo32inter2.jpg
Eindeutig zu wenig...
Hier ein Bild von Glossy Reflections (gehört auch zu den Distributed RT Effekten). Ab 50-60 Samples fings an brauchbar auszusehen...
http://graphics.cs.uni-sb.de/~chrvog/rc/images/richtigglossy.jpg
Fazit: Mit Bruteforce (aka normalem Distributed RT) wird man bei so Effekten nicht weit kommen bei Echtzeitdarstellung. Was allerdings nicht heisst, dass man da nicht andere schnelle Lösungen finden kann.
Shink
2004-10-27, 12:54:44
Wo finde ich das Originalpaper?
Soweit ich weiß (und ich geb zu, ich hab nur wenig mit RT am Hut) wähle ich bei Distributed RT, wenn ich Temporal AA und FSAA will, eine zufällige Strahlposition innerhalb des Pixelbereiches zu einer zufälligen Zeit des Intervalls, das ich mit diesem Frame darstellen will. Wenn ich das x Mal mache und den Durchschnitt darüber berechne, hab ich x-Faches SS-FSAA und x-Faches Temporal AA. Das selbe ist natürlich auch bei DOF, Shadowing etc einsetzbar.
Das bedeutet, wenn ich 30 Samples für einen der Effekte benötige, dauert das natürlich 30 Mal so lang, dafür hab ich dann auch 30 Samples für die anderen Effekte.
Für Echtzeit-RT eignet sich das zur Zeit natürlich nicht, aber wer weiß...
Also es ist schon richtig das Raytracing logarithmisch skaliert mit der Polygonmenge.
D.h. irgendwann kommt es zum break-even-point zwischen Rasterizern und Raytracern und ab dann ist Raytracing ziemlich viel schneller.
Zur Zeit ist das aber noch nicht der Fall. Aber Raytracing ist die Zukunft, vor allem vereinfacht es viele Dinge unglaublich.
Das Problem ist das sich irgendwie niemand traut geignete HW dafür zu bauen, ich könnte mir vorstellen das ein 400Mhz/220 Mio Transistoren Raytracer ziemlich schnell wäre.
du siehst es haengt sehr wohl von der anzahl der polygone ab.
Ja, aber nicht linear :)
Und log(x) steigt zieeeeemlich langsam.
Shink
2004-10-27, 13:23:58
Zum Thema Hardware-Raytracer:
Guckst du http://www.saarcor.de/
Die haben einen Prototypen mit 90 MHz, der bei Raytracing 4 mal so schnell wie ein P4 mit 3 GHz sein soll. Das ist zwar eigentlich nicht viel, aber da sich RT perfekt parallelisieren läßt, kann da noch was drin sein.
Man kann auch mit Pixelshadern Raytracing machen; hab aber keine Ahnung, wie schnell so etwas ist. Vielleicht ist ja auch das die Zukunft.
Wo finde ich das Originalpaper?
In den "Proceeding of SIGGRAPH 84 " ;)
Da du wahrscheinlich keinen Zugriff drauf hast, gibts hier (http://graphics.cs.uni-sb.de/Courses/ws0304/cg/RC0304/Download/Papers/Cook_SIGGRAPH84.pdf) einen leider etwas zu gross gerateten Scan als PDF.
Soweit ich weiß (und ich geb zu, ich hab nur wenig mit RT am Hut) wähle ich bei Distributed RT, wenn ich Temporal AA und FSAA will, eine zufällige Strahlposition innerhalb des Pixelbereiches zu einer zufälligen Zeit des Intervalls, das ich mit diesem Frame darstellen will. Wenn ich das x Mal mache und den Durchschnitt darüber berechne, hab ich x-Faches SS-FSAA und x-Faches Temporal AA.
Das wäre wenn ich dich richtig verstehe, SS gemischt mit Motionblur.
Motionblur verlangt nur Samples zu unterschiedlichen Zeitpunkten. Ob SS da eigentlich noch was bei der Bildqualität bringt, weiss ich nicht. Wahrscheinlich ists sinnvoller die Samples für mehr Zeitpunkte zu verwenden.
Es gibt auch eine Lösung, die das objektabhängig in einen Shader verlagert (könnte man zb nur für bewegte Objekte nutzen).
Motion Blur kann man wirklich als temporal Antialiasing bezeichnen. Dacht aber eben irgendwie nur an den ATI-Begriff mit wechselnden Masken. Sorry deswegen :)
Das bedeutet, wenn ich 30 Samples für einen der Effekte benötige, dauert das natürlich 30 Mal so lang, dafür hab ich dann auch 30 Samples für die anderen Effekte.
Theoretisch.
Praktisch wirds weniger, da die benötigten Daten schon im Cache liegen dürften und man das mit SSE als enges Strahlenbündel schön ausnutzen kann.
RT Hardware würde auch Cachemässig davon profitieren.
Guckst du http://www.saarcor.de/
Hasen töten macht Spass :D
Man kann auch mit Pixelshadern Raytracing machen; hab aber keine Ahnung, wie schnell so etwas ist. Vielleicht ist ja auch das die Zukunft.
Es gibt da ein Paper auf das sich zB. NV immer bezieht. Allerdings wurde als Beschleunigerstruktur ein einfaches Grid verwandt. Nicht grad etwas was von einem schnellen Raytracer erwartet... Einfachen Szenen sind damit toll. Komplexe Szenen wären der Untergang.
Dann gabs noch eine Diplomarbeit, die es mit KD-Tree versucht hat. Das Ergebnis war dann doch etwas ... extrem enttäuschend. Allerdings war das noch mit SM 2irgendwas. Mit SM 3 könnte man da wohl mehr rausholen. Allerdings imo auch nicht annähernd soviel wie man bräuchte um damit was Tolles vorzeigen zu können.
Shink
2004-10-29, 12:13:11
RLZ: Studierst Du an der Saarland Uni?
Ob SS da eigentlich noch was bei der Bildqualität bringt, weiss ich nicht. Wahrscheinlich ists sinnvoller die Samples für mehr Zeitpunkte zu verwenden.
Naja, das wär dann auch teurer, da ich ja für SS nicht mehr passes brauche. Und wenn sich teile des Bildes nicht verändern, bringt mir Motion Blur auch nicht viel.
Motion Blur kann man wirklich als temporal Antialiasing bezeichnen. Dacht aber eben irgendwie nur an den ATI-Begriff mit wechselnden Masken. Sorry deswegen :)
Stimmt, hab gar nicht daran gedacht, dass es temporal AA auch als von ATI definierten Begriff gibt.
Theoretisch.
Praktisch wirds weniger, da die benötigten Daten schon im Cache liegen dürften und man das mit SSE als enges Strahlenbündel schön ausnutzen kann.
RT Hardware würde auch Cachemässig davon profitieren.
Somit stimmt meine Aussage, dass es bei der Verwendung von Distributed RT für einen Effekt die anderen (von der Zeit her) "gratis" gibt, ja doch; oder?
Hasen töten macht Spass :D
???
Mit SM 3 könnte man da wohl mehr rausholen. Allerdings imo auch nicht annähernd soviel wie man bräuchte um damit was Tolles vorzeigen zu können.
Naja, mit SM3 ist ja wohl hoffentlich noch lang nicht das Ende der Entwicklung erreicht...
RLZ: Studierst Du an der Saarland Uni?
Könnte sein ;)
Naja, das wär dann auch teurer, da ich ja für SS nicht mehr passes brauche. Und wenn sich teile des Bildes nicht verändern, bringt mir Motion Blur auch nicht viel.
Wenn sich nicht viel bewegt und du zu unterschiedlichen Zeitpunkten an verschiedenen Stellen samplest hast du im Grenzfall wieder normales SS. Falls sich viel bewegt hast du besseres Motionblur.
Somit stimmt meine Aussage, dass es bei der Verwendung von Distributed RT für einen Effekt die anderen (von der Zeit her) "gratis" gibt, ja doch; oder?
Billiger ist nicht gratis. Ausserdem nur bei BruteForce.
Sobald man adaptiv arbeitet kann man diesen Effekt auch nicht mehr nutzen.
Ein anderer Fall:
4x SS
Ich schiesse für jeden auftrefenden Primärstrahl einen Shadowray auf
die selbe Lichtquelle. Schiesse ich dagegen für jeden Primärstrahl auf eine andere Lichtquelle (als Approximation einer Flächenlichtquelle) habe ich dann doch nen FPS-Verlust von teilweise 50%.
Für eine Lichtquelle lässt sich der Cache halt besser ausnutzen.
???
*insider* :biggrin:
Naja, mit SM3 ist ja wohl hoffentlich noch lang nicht das Ende der Entwicklung erreicht...
Is davon auszugehen ;)
gruntzmaker
2004-11-10, 19:56:29
Hallo,
hier scheint ja richtig Know How vertreten zu sein, und wisst ihr was, das Thema Raytracing wurde in einem Chat zwischen Prof. Slussalek (Saarland-Uni) und David Kirk (Nvidia) sehr kontrovers diskutiert (wenns euch interessiert, die GameStar hat das Interview durchgeführt und die beiden sollen sich am Ende ganz schön gezofft haben^^)
Also stimmt es, dass Raytracing bereits jetzt schon mit 2-3 fps bei Quake 3 läuft (System war allerdings mit ner Gf68u ausgestattet)?
Wenn einer von euch an besagter Uni studiert müsste er es wissen :D
Naja müsste mein Wissen diesbezüglich verstärken, ich bin leider nicht sehr bewandert auf dem Gebiet, aber ihr denkt wohl auch dass Rasterization gegenüber Raytracing mehr oder weniger hingetrickst ist (Rasterization= schön aber unpräzise)?
So long Gruntz
Demirug
2004-11-10, 20:53:14
Sicherlich kann man mit guter Vorsortierung die Anzahl der Strahlprüfungen reduzieren. Allerdings sollte man bei den zunehmenden Hang zu verformbaren Welten auch den Zeitfaktor für das verändern der Vorsortierung berücksichtigen.
Das ganze ist übrigens auch ein Problem bei den bisherigen Versuchen einen Grafikchip als Raytracer zu benutzen. Solange die Welt statisch ist kommt man noch ganz gut hin aber wenn man was ändern will: "Gute Nacht".
hier scheint ja richtig Know How vertreten zu sein, und wisst ihr was, das Thema Raytracing wurde in einem Chat zwischen Prof. Slussalek (Saarland-Uni) und David Kirk (Nvidia) sehr kontrovers diskutiert (wenns euch interessiert, die GameStar hat das Interview durchgeführt und die beiden sollen sich am Ende ganz schön gezofft haben^^)
Zum Thema Gamestar sag ich garnichts mehr. Sonst gibts eh nur Ärger ;)
In allem was sie geschrieben oder in den Videos gesagt haben war in fast jedem Satz ein Fehler drin.
Zum Streitgespräch: Die beiden werden bestimmt nicht richtig zoffen.
Nur müssen beide ihre Standpunkte in Öffentlichkeit vertreten. Deswegen kann bei so einem Streitgespräch nichts rauskommen.
Wo käme NV denn hin, wenn sie sagen Raytracing ist besser, aber wir werden nix bauen.
Umgekehrt kann Prof. Slussalek nicht sagen, dass die Forschung unnötig ist, weil Rasterizer besser sind.
Bei solchen Streitgesprächen muss man immer dran denken, dass die Wahrheit wahrscheinlich irgendwo dazwischen liegt.
Also stimmt es, dass Raytracing bereits jetzt schon mit 2-3 fps bei Quake 3 läuft (System war allerdings mit ner Gf68u ausgestattet)?
Damals gabs noch keine NV40. Da es eh nur reines Softwarerendering war spielt die Grafikkarte auch gar keine Rolle. Es war halt ein Rechner im Softwarerendering.
Wenn einer von euch an besagter Uni studiert müsste er es wissen :D
Der Informatikbereich an der Saarbrücker Uni ist verdammt gross (http://frweb.cs.uni-sb.de/04.Forschung/01.Arbeitsgruppen/). Da kommen viele mit dem Lehrstuhl von Prof. Slussalek nie in Berührung.
Aber selbst wenn jemand was weiss, darf er nichts sagen, was eh nicht schon bekannt ist.
Naja müsste mein Wissen diesbezüglich verstärken, ich bin leider nicht sehr bewandert auf dem Gebiet, aber ihr denkt wohl auch dass Rasterization gegenüber Raytracing mehr oder weniger hingetrickst ist (Rasterization= schön aber unpräzise)?
Beides ist getrickst. Wobei beide Verfahren ihre Vor- und Nachteile haben.
Mit Raytracing ists aber wesentlich einfacher realistische Ergebnisse zu erzielen.
Das ganze ist übrigens auch ein Problem bei den bisherigen Versuchen einen Grafikchip als Raytracer zu benutzen. Solange die Welt statisch ist kommt man noch ganz gut hin aber wenn man was ändern will: "Gute Nacht".
Das Hauptproblem liegt ganz wo anders. Man schaue sich nur mal einen Traversierungsalgo für nen KD-Tree an. Ein riesiger Batzen Fallunterscheidungen. Da ist schon Gameover für die heutigen Grafikkarten.
Zudem hat man immer noch keinen vernünftigen Stack für rekursive Algorithmen. Das muss man sich dann irgendwie anders zurechtbiegen, was schlicht nicht praktikabel ist.
Was die Animation angeht... Es gibt 3 Paper über Animationen für Raytracingsysteme. 2 sind fast gleich und 1 unbrauchbar. Wieviele gibts über Animationssysteme für Rasterizer?
Aber da tut sich langsam auch was. :biggrin:
Ausserdem muss die Welt nicht komplett statisch sein. Da kann man schon sehr sehr viel machen, wie man bei dem Q3RT gesehen hat. In Zukunft seh ich mit Animationen keinerlei Probleme mehr.
gruntzmaker
2004-11-11, 10:12:46
Naja hast vergessen zu erwähnen, dass Shaderization genau dann Probleme bereitet, wenn man versucht immer mehr Effekte auf dessen Basis zu machen.
Zum Thema Gamestar sag ich garnichts mehr. Sonst gibts eh nur Ärger
In allem was sie geschrieben oder in den Videos gesagt haben war in fast jedem Satz ein Fehler drin.
Zum Streitgespräch: Die beiden werden bestimmt nicht richtig zoffen.
Nur müssen beide ihre Standpunkte in Öffentlichkeit vertreten. Deswegen kann bei so einem Streitgespräch nichts rauskommen.
Wo käme NV denn hin, wenn sie sagen Raytracing ist besser, aber wir werden nix bauen.
Umgekehrt kann Prof. Slussalek nicht sagen, dass die Forschung unnötig ist, weil Rasterizer besser sind.
Bei solchen Streitgesprächen muss man immer dran denken, dass die Wahrheit wahrscheinlich irgendwo dazwischen liegt.
Jaja die GameStar :D, aber ich wage zu bezweifeln, dass die PCGH und andere Mags auf dem Niveau das 100%korrekt dargetsellt hätten.
ZUm Thema Nvidia: Die hatten schon die Absicht Raytracing einzubauen, allerdings läuft das nach dem Schema ab, dass sich die Ingenieure bei den Technologieen nie einig sind, das war schon beim Tile based Rendering nicht anders, dann richtet man sich meist sowieso an die Konkurenten und machts dann jahrelang mit traditioneller Technik.
Heutzutage allerdings würde ich mir mehr Innovation bei den Grafikchips wünschen, da die Preise sehr hoch sind und dadurch keine Firma jetzt behaupten kann, dass sie im Falle eines Mißerfolgs, das nicht durch Standard Karten wieder ausbügeln können.
Nochmal zum THema Raytracing: Wenn du jetzt sagst das beide Techniken hingetrickst sind, was ist dann wesentlich besser ?
Splines, Nurbs, solche Dinge etwa?
Naja hast vergessen zu erwähnen, dass Shaderization genau dann Probleme bereitet, wenn man versucht immer mehr Effekte auf dessen Basis zu machen.
Was ist denn Shaderization?
ZUm Thema Nvidia: Die hatten schon die Absicht Raytracing einzubauen, allerdings läuft das nach dem Schema ab, dass sich die Ingenieure bei den Technologieen nie einig sind, das war schon beim Tile based Rendering nicht anders, dann richtet man sich meist sowieso an die Konkurenten und machts dann jahrelang mit traditioneller Technik.
Wo hast du die Info her ? :|
Nochmal zum THema Raytracing: Wenn du jetzt sagst das beide Techniken hingetrickst sind, was ist dann wesentlich besser ?
Splines, Nurbs, solche Dinge etwa?
Nurbs sind übrigends auch Splines.
Zudem sinds nur eine Repräsentationformen der Geometrie, die man bei Raytracing und Rasterisierung verwenden kann.
Weder Raytracing noch Rasterizing stellen die wirkliche Übertragung von Licht dar und verwenden nur vereinfachte Modelle. Das genauste, was mir bisher untergekommen ist, war dass jemand die Bildberechnung auf Quantenebene durchführen wollte. Aber selbst dies wäre keine exakte Abbildung der Natur, vorallem, da man hinterher wieder eine endliche Auflösung benutzen muss.
Shink
2004-11-12, 11:17:26
Da unsere Augen ebenfalls nur eine beschränkte Auflösung haben und das Gehirn sehr starke Kompressionsverfahren verwendet, ist alles andere als Hintricksen bei Spielen/Filmen mehr als sinnlos.
Da unsere Augen ebenfalls nur eine beschränkte Auflösung haben und das Gehirn sehr starke Kompressionsverfahren verwendet, ist alles andere als Hintricksen bei Spielen/Filmen mehr als sinnlos.
IMHO nein,
da das "Hintricksen" viel Zeit kostet. Wenn du zB. mit Raytracing den gleichen Effekt mit 1/10 - 1/100 Entwicklungsaufwand ( zB. Schatten in Spielen ) erreichen kannst dann lohnt es sich IMHO schon nicht zu tricksen
Bei Filmen ist es sogar noch schlimmer, da Menschen sehr empfindlich auf bestimmte Fehler/Tricks reagieren so dass man hier dann wirklich viel Aufwand reinstecken muss damit es glaubhaft aussieht.
Mir fällt dazu zB. die neue "Aktion Mensch"(???) Werbung ein. Da werden Häuser auf Tiefladern gezeigt. Alles CGI wie man sehr schön sieht weil sich die Macher einfach nicht genügend angestrengt haben die Schatten richtig zu berechnen. Vor allem die letzte Einstellung zeigt den Effekt sehr gut. Um diese Werbung für's Kino glaubhaft genug zu machen müsste man sehr viel Aufwand reinstecken um die ganzen Tricks zu verstecken. Außer natürlich dir reicht die Qualität von vor 5-10 Jahren auch in den neuesten Filmen.
Damals gabs noch keine NV40. Da es eh nur reines Softwarerendering war spielt die Grafikkarte auch gar keine Rolle. Es war halt ein Rechner im Softwarerendering.
Auch NV40 könnte man beim Raytracing nur zur First-Hit-Detection einsetzen und dafür wäre NV40 nicht viel schneller als NV20.
Man muss Raytracing komplett im Pixelshader machen und dafür ist die Inputanzahl auch bei PixelShader 3.0 (12) viel zu gering.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.