PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied zwischen Rasterisation (Scanline etc) & Raytracing für N00bs


Roi Danton
2008-04-17, 13:39:23
Was sind denn die Unterschiede zwischen Raytracing (RT) und dem bei Grafikkarten verwendeten Rasterisation (RS)? Bei beiden sind Vektordaten der Ausgangspunkt und ein Rasterbild das Ziel.
RT: Das Rasterbild wird erzeugt, indem Strahlen für jeden Pixel der Bildebene diese durchschneiden und den Farbwert anhand der getroffenen Geometrie (+ihre Shader/Licht/GI/bla) annimmt. Bei RS wird es wie gemacht... ?
RS: Nur mit Vektordaten ausgefüllte Bildbereiche werden gerastert, hingegen werden bei RT für jeden Pixel der Bildebene Strahlen bemüht (ist ja vorher noch nicht klar, was "dahinter" ist).
... ?Da mich das nur spontan interessiert (ohne das Wissen anzuwenden), habe ich keine Motivation == Zeit, größere Artikel zum Scanline durchzulesen (also bitte keine Links zu weiterführenden Artikeln). Vielleicht gibts hier aber jemanden, der sein bereits vorhandenes Wissen in wenigen Stichpunkten weitergeben will? =)

Coda
2008-04-17, 13:49:03
Raytracing: Erzeuge pro Pixel einen Strahl und überprüfe die Szene auf den Schnittpunkt mit ihm der die geringste Entfernung zur Kamera hat.

Rasterisierung: Zeichne ein Dreieck nach dem anderen auf den Bildschirm in völlig beliebiger Ordnung und Sorge mit dem Z-Buffer dafür dass am Ende immer pro Pixel das Fragment übrig bleibt das die geringste Entfernung zur Kamera hat.

Spasstiger
2008-04-17, 15:47:27
Bei der Rasterisierung geht man afaik für jedes Dreieck alle Abtastpunkte (Fragments) durch, prüft die Bedeckung (Coverage) und rechnet dann gegebenenfalls den Farbwert aus oder setzt einen Eintrag im MSAA-Buffer (falls MSAA verwendet wird). D.h. der Rechenaufwand steigt prinzipiell linear mit der Anzahl an Dreiecken. In der Praxis ist es etwas komplizierter, weil man viel daran setzt, den Aufwand möglichst gering zu halten und sich unnötige Berechnungen zu ersparen. Der tatsächliche Rechenaufwand dürfte sich irgendwo zwischen einer linearen und einer logarithmischen Abhängigkeit von der Anzahl der Dreiecke bewegen.

Bei Raytracing entfällt das "Dreieck für Dreieck", aber man muss natürlich immer noch das Dreieck finden, auf das der Strahl letzlich fällt. Durch die Verwendung von Baumstrukturen ist der Rechenaufwand bei dieser Suche logarithmisch.

Coda
2008-04-17, 16:10:36
Das mit der Rechenzeit würde ich bei einer einfachen Betrachtung weglassen. Das ist nur verwirrend, weil es nicht der Realität entspricht.

Roi Danton
2008-04-17, 19:35:00
Okay, danke für die knappen & grundlegend verständlichen Antworten (also ich hoffe, ich habs grundlegend verstanden ;) )!
Also RS: Abtastpunkte (Fragments) der Primitiven (wie auch immer berechnet) -> z-buffer (Scanline wohl eher nicht) -> Farbberechnung anhand der Shader/Beleuchtung -> 3D-Projektion
?

Deshalb ist die Leistung von RS also so stark abhängig von der Anzahl der Polygone & deshalb ist es wohl mit Raytracing einfacher, eine "physikalisch nachvollziehbarere" Optik hinzukriegen, da das Strahlenmodell eher der geometrischen Optik entspricht.

Aquaschaf
2008-04-17, 20:25:59
Deshalb ist die Leistung von RS also so stark abhängig von der Anzahl der Polygone & deshalb ist es wohl mit Raytracing einfacher, eine "physikalisch nachvollziehbarere" Optik hinzukriegen, da das Strahlenmodell eher der geometrischen Optik entspricht.

Die Leistung bei RT skaliert auch mit der Zahl der Polygone. Praktisch gesehen unterscheiden sich RS und RT da nicht so sehr, weil die Zahl der Polygone sowieso durch LOD begrenzt werden muss. Sonst hat man unglaubliches Aliasing.

Nun, für "korrektere" indirekte Effekte muss man Raytracing betreiben. Subsurface Scattering oder Reflektionen/Refraktionen wären Beispiele dafür. Aber es gibt eben einen Haufen von Tricks um Sachen vorzutäuschen die zwar nicht so korrekt sind aber schnell und gut aussehen. Was natürlich auch Grenzen hat.