Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im...

38
Raytracing Beschleunigungsverfahren

Transcript of Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im...

Page 1: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Raytracing

Beschleunigungsverfahren

Page 2: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Naives/brute forceRaytracing

Universität Frankfurt

Komplexität:

mxn Auflösung des Bildesp Anzahl der Primitives

O (mxnxp)

nur für die Primärstrahlen

Page 3: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

RaytracingBeschleunigungsverfahren

Universität Frankfurt

• Bild-Kohärenz (image coherence)

•Objekt-Kohärenz (object coherence)

•Strahlkohärenz (ray coherence)

Page 4: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenznach Bronsvoort et al. I

Universität Frankfurt

• Aufteilung des Bildes in Quadrate mit Kantenlänge 2n

• Exakte Berechnung des Pixels in linken unteren Ecke

• Zuweisung dieses Farbwert an alle Pixel des Quadrats

• Aufteilung in 4 Subquadrate

• Berechnung der Pixelwerte nach angegebenem Verfahren

Page 5: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenznach Bronsvoort et al. II

Universität Frankfurt

AB

A

B

B

AC

C

C

x3 x2

x1 x4

Page 6: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenznach Bronsvoort et al. III

Universität Frankfurt

- die Werte von X1 bleiben unverändert,

- falls die Werte eines der mit A bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linkeuntere Ecke von X2 neu berechnet und dieser Wert allen Pixeln von X2 zugewiesen,

- falls die Werte eines der mit B bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linke untereEcke von X3 neu berechnet und dieser Wert allen Pixeln von X3 zugewiesen,

- falls die Werte eines der mit C bezeichneten Quadrate um mehr als eineneinstellbaren Schwellwert von den Werten von X1 abweicht, wird die linke untereEcke von X4 neu berechnet und dieser Wert allen Pixeln von X4 zugewiesen.

Page 7: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenznach Bronsvoort et al. IV

Universität Frankfurt

- Verfahren schreitet von links nach rechts und von unten nach oben fort.

- Verfahren endet, wenn vorgegebene Pixelquadratgröße erreicht ist.

- Bei Anfangsgröße von 8x8 Pixeln ist eine Einsparung von bis zu 80 %erreichbar.

- Feine Details werden ignoriert.

- Wegen Bildqualität, Einsatz nur im Previewing angebracht.

Page 8: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenzitem buffer I

Universität Frankfurt

1.) Szene wird in die Rendering-Pipeline des Polygon-Renderings eingespeist.Berechnung nur bis zu einer “groben Auflösung”.

2.) Aufstellung der Liste (item buffer) von Objekten, die im “Pixel” sichtbar sind.

3.) Raytracing nur mit den Objekten, die im item buffer aufgezählt sind.

Page 9: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Bildkohärenzitem buffer II

Universität Frankfurt

• polygon-basiertes Verfahren.

• in der Mehrzahl der Fälle besteht der item buffer nur aus sehr wenigenObjekten.

• Beschleunigung abhängig vom Verhältnis Primär- zu Sekundärstrahlen.

• Es wird von Beschleunigungen von 10% bis zu 30% berichtet [WEG84].

Page 10: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Objekt-Kohärenz

Universität Frankfurt

Verfahren:

• Hüll-Körper (bounding volumes) und Hüll-Körper-Hierarchien

• Unterteilung des Objektraums (spatial subdivision)

Page 11: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Hüllkörper I

Universität Frankfurt

Älteste Beschleunigungsmethode

Idee:

• Schneide Strahl mit Hülle.• Wenn Test positiv, schneide gegen komplexen Inhalt.

Page 12: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Hüllkörper II

Universität Frankfurt

Forderung:

• Hüllkörper muss Objekt vollständig umschließen.

• Hüllkörper muss Objekt möglichst eng umschließen.

• Schnittberechnung für die Hülle muss weniger aufwendig sein als fürihren Inhalt.

Page 13: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Einfache Hüllkörper

Universität Frankfurt

Page 14: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Komplexe Hüllkörper

Universität Frankfurt

Page 15: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

HüllkörperKostenabschätzung

Universität Frankfurt

T gesamter Aufwand für Schnittberechnung

B Berechnungsaufwand für Schnitt mit Hüllkörper

I Berechnungsaufwand Schnitt gegen Inneres

b Anzahl Strahlen für Test mit Hüllkörper

i Anzahl Strahlen, die gegen Inneres getestet werden (i≤b)

T=b*B + i*I

Page 16: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Hüllkörper-Hierarchien I

Universität Frankfurt

Idee:

- Fasse zusammliegende Körper bzw. ihre Hüllenzusammen und umschließe sie mit einem Hüllkörper.

- Fasse díe resultierenden Hüllkörper wieder zusammen.

- Baumstruktur

Page 17: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Hüllkörper-Hierarchien II

Universität Frankfurt

Forderungen:

- Nur Objekte, die nah beieinanderliegen, sollen zusammengefaßt werden.

- Die Oberfläche der Hülle eines jeden Knotens der Hierarchie soll minimal sein. Denn die Oberfläche eines Hüllkörpers ist ein Maß für Wahrscheinlichkeit, daß ervon einem Strahl getroffen wird.

- Die Summe der Oberflächen aller Knoten soll minimal sein.

- Je näher die Knoten an der Wurzel liegen, um so sorgfältiger müssen siekonstruiert werden. Wird ein Knoten, der weit oben in der Hierarchie liegt, nichtvom Strahl getroffen, kann ein tiefer Teilbaum vom weiteren Test ausgeschlossenwerden.

- Die Zeit, die zum Aufbau der Hierarchie benötigt, muß geringer sein, als die Zeit, die man beim späteren Rendering-Prozeß wieder einspart.

Page 18: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Hüllkörper-Hierarchien III

Universität Frankfurt

Wahl der Hierarchie:

• Modellierungs-Hierarchie

• CSG-Baum

• Median-Cut-Verfahren

Page 19: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Priority-Queue I

Universität Frankfurt

procedure p_queue_traversal(Strahl, P-Queue)begin

while heap nicht leer do beginEntnimm Kandidaten aus der P-Queue

if Kandidat ein Primitive-Objekt then break;

else for jeden Sohn des Kandidaten do begin

Berechne Schnittpunkt mit Strahl;Ordne Objekt gemäß Distanz vom Strahlursprungzum Schnittpunkt in die P-Queue ein;

end for;end while;

end

Page 20: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Priority-Queue II

Universität Frankfurt

Achtung:

Page 21: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Priority-Queue III Ergebnisse

Universität Frankfurt

Page 22: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Raumteilungs-Verfahren

Universität Frankfurt

Idee der Hüllkörper-Hierarchie:

• schnelle Aussortierung aller Objekte, die nicht getroffenwerden.

Idee der Raum-Teilungsverfahren:

• Berechne Schnittpunkt nur noch mit nächstem Objekt.

• Durchsuche dazu Teilraum, der den Strahl möglichsteng umschließt.

• Zerlege dazu in Raum der Szene in disjunkte Voxel(volume elements).

Page 23: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Nicht-reguläre Raumteilung

Universität Frankfurt

Bearbeitete Voxel

Getestete Objekte

Page 24: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Octree-Verfahren Inach Glassner

Universität Frankfurt

441 42

43 44

45

46

48

1 2

3 4

56

8

Page 25: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Octree-Verfahren II

Universität Frankfurt

Information im Knoten:

• Ausmaß des Quader

• Koordinaten des Mittelpunktes

• Flag, ob Knoten Blatt ist.

• Zeiger auf 1. Kind (Kinder werden in verketteter Liste abgespeichert)oder auf Liste von Objekten.

Speicherung der Knoten mittels Hash-Funktion:

h=(Knoten-Nummer div 10) mod Hash-Tabellen-Länge

Page 26: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Octree-Verfahren III

Universität Frankfurt

P P`

P`

P P

P`

Page 27: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Octree-Verfahren IV

Universität Frankfurt

procedure findnode ( x, y, z)begin

node := 1;while node_subdivided do

if x > node_center_x thenif y > node_center_y then

if z > node_center_z thennode := node * 10 + 6;

elsenode := node * 10 + 2;

elseif z > node_center_z then

node := node * 10 + 8;else

node := node * 10 + 4;else

if y > node_center_y thenif z > node_center_z then

node := node * 10 + 5;else

node := node * 10 + 1;else

if z > node_center_z thennode := node * 10 + 7;

elsenode := node * 10 + 3;

end whileend

Page 28: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Octree-Verfahren VErgebnis

Universität Frankfurt

1. Zeit zur Generierung der Octree-Struktur ist gering im Vergleich zur Renderingzeit.

2. Beschleunigungsfaktoren zwischen 4 bis 30 im Vergleich zur brute-force-Methode

Page 29: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Reguläre Raumaufteilung

Universität Frankfurt

Bearbeitete Voxel

Getestete Objekte

Page 30: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Reguläre Raumaufteilungnach Fujimoto et al.

Universität Frankfurt

1. Die Aufteilung der Voxel ist völlig unabhängig von der Struktur der Szene.

2. Die Voxel, die ein Strahl durchläuft können durch einfache, inkrementelle Verfahren sehr effizient aufgezählt werden.

Page 31: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Voxel-Traversierung I

Universität Frankfurt

Voxel (i,j)

tx i

txi+1 (i,j)

= te

Voxel (i+1,j)

(i+1,j)

tyj

ty j+1

= ta

= te(i,j)

Page 32: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Voxel-Traversierung II

Universität Frankfurt

txi+1 - txi = ∆tx = const.tyj+1 - tyj = ∆ty = const.tzk+1 - tzk = ∆tz = const.

[te, ta] = [txi, txi + ∆ tx] ∩[tyj, tyj + ∆ ty] ∩ [tzk, tzk + ∆ tz]

te = max (txi, tyj, tzk) < min (txi + ∆ tx, tyj + ∆ ty, tzk + ∆ tz) = ta

Page 33: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Voxel-Traversierung III

Universität Frankfurt

beginif tx < ty then

if tx < tz thenbegintx := tx + ∆tx;vx := vx + sign (ux);end

elsebegintz := tz + ∆ tz;vz := vz + sign (uz);end

elseif ty < tz then

beginty := ty + ∆ ty;vy := vy + sign (uy);

endelse

begintz := tz + ∆ tz;vz := vz + sign (uz);end

end;

Page 34: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Raumaufteilung2 Caveat

Universität Frankfurt

AB

C

1 2 3 4 5

�Mailbox-Verfahren

Page 35: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Voxel-TraversierungErgebnisse I

Universität Frankfurt

Turm bestehend aus 12 CSG-Primitiven,Well bestehend aus 78 CSG-Primitiven,Pinwheel bestehend aus 26 CSG-Primitiven,64 Türme bestehend aus 768 CSG-Primitiven

126,1597,6565,5651,1534,3326,18<0,0164 Türme

156,9895,6350,0523,098,481,71<0,01Turm

106,6865,6138,1720,388,583,01<0,01Well

37,9124,2812,977,523,261,13<0,01Pinwheel

44,8925,8913,665,831,840,25<0,01Kugel

302520151051

Anzahl der Voxel pro AchseSzene

Initialisierungszeiten (in sec.)

Page 36: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Voxel-TraversierungErgebnisse II

Universität Frankfurt

Turm bestehend aus 12 CSG-Primitiven,Well bestehend aus 78 CSG-Primitiven,Pinwheel bestehend aus 26 CSG-Primitiven,64 Türme bestehend aus 768 CSG-Primitiven

Rendering-Zeiten (in sec.)

418,81435,48462,48516,57600,52908,207200-10800

64 Türme

517,39531,06551,58555,33579,76694,51Turm

515,83497,49495,25548,76587,89712,00Well

391,44385,15378,23373,82376,54430,23Pinwheel

427,56419,11416,08409,96418,60417,85384,17Kugel

302520151051

Anzahl der Voxel pro AchseSzene

Page 37: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Ray Coherence

Universität Frankfurt

Idee:

Benachbarte Strahlen treffen mit großer Wahrscheinlichkeit dieselben Objekte.

Identifiziere die Orte (Objekte), an denen Strahlen ausgesandt werden.

Dann sortiere Kandidaten für den Schnitt mit Bezug auf die auftretenden Strahl-Richtungen.

Page 38: Raytracing Beschleunigungsverfahren - uni-frankfurt.de...Raytracing nur mit den Objekten, die im item buffer aufgezählt sind. Bildkohärenz item buffer II Universität Frankfurt •

Direction Cube

Universität Frankfurt

z

y

x