02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt author gabriel zachmann created date...

14
5/14/07 1 C G C C G C Computer-Graphik II Beschleunigung des Ray-Tracing G. Zachmann Clausthal University, Germany cg.in.tu-clausthal.de G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 2 C G C C G C Kosten des Ray-Tracing cost ≈ height * width * num primitives * intersection cost * size of recursive ray tree * num shadow rays * num supersamples * num glossy rays * num temporal samples * num focal samples * . . . Kann man das verringern?

Upload: others

Post on 05-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

1

Clausthal

CGC

CGC

Computer-Graphik IIBeschleunigungdes Ray-Tracing

G. ZachmannClausthal University, Germanycg.in.tu-clausthal.de

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 2

CGC

CGCKosten des Ray-Tracing

cost ≈ height * width *

num primitives *

intersection cost *

size of recursive ray tree *

num shadow rays *

num supersamples *

num glossy rays *

num temporal samples *

num focal samples *

. . .

Kann man das verringern?

Page 2: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

2

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 3

CGC

CGCBeschleunigungstechniken

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 4

CGC

CGCDer Light Buffer

Beobachtung: bei der Verfolgung von Schattenstrahlen reicht es,irgendeinen Schnittpunkt mit einem opaken Objekt zu "nden

Idee: speichere bei jeder Lichtquelle und für jede Raumrichtungeine Liste von Polygonen, die in dieser Richtung liegen

Datenstruktur desLight Buffer:"Richtungswürfel"

Entweder als Preprocessing(scan conversion auf dieWürfelseiten), oder"on demand" (eintragenin Zelle falls Occludergefunden)

Page 3: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

3

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 5

CGC

CGCBeam und Cone Tracing

Allgemeine Idee: versuche Beschleunigung durch Verschießen mehrerer oder"dickerer" Strahlen auf einmal

Beam Tracing: Ein Strahlbündel mit Pyramide genau darstellen

Neue Beams an den Ober#ächen (Polygone)erzeugen

Cone Tracing: Ungefähre Approximation eines Strahlbündels

mit Kegeln

Wenn notwendig, in kleinere Kegel unterteilen

Probleme:

Ausschnitt der Strahlen?

Gute Approximation?

Wie berechnet man Schnitte mit Flächen?

Nicht wirklich praktikabel, viel zu teuer!

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 6

CGC

CGCBeam Tracing

Page 4: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

4

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 7

CGC

CGC

Grundidee: spare Kosten durch Vorberechnungen mit der Szeneund Filterung der Strahlen zur Laufzeit

Verfehlt der Strahl das Bounding Volume, so kann man auf denSchnitt mit der Teilszene verzichten

Bounding Volumes (BVs)

Bounding Volume (BV)

BV geschnitten,

Objekt nicht getroffen

BV geschnitten,Objekt geschnitten

BV nicht getroffen,

Objekt nicht getroffen

"false positive"

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 8

CGC

CGC

Erstellung des Gitters:

Bestimme BBox der Szene

Bestimme gute Gitter- Au#ösung

Für jede Zelle entlang einesStrahls:

Enthält die Zelle einen Schnitt?

Ja: liefere Schnitt zurück

Nein: fortfahren

Regelmäßiges Gitter

Page 5: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

5

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 9

CGC

CGC

Primitive in Gitter einfügen:

Benutze Objekt-BBox

I.a. mehrfacheEinfügung in versch.Zellen

Jede Zelle enthältListe mit Zeigernauf Objekte

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 10

CGC

CGCDie Mailbox-Technik

Nach der Unterteilung des 3D-Raums können die Objekte inmehreren Voxeln liegen und müssen dann in jedem von diesenVoxeln referenziert werden

1. Problem: Schnitt muß nicht der näheste sein (r.u.)

Lösung: wenn Schnittparameter t nicht im Innen der Zellestrecke ist,dann weitermachen (es kann etwas näheres geben)

2. Problem: wie vermeidet man, dass der Strahl 3x gegen das Objgetestet wird? (l.u.)

Page 6: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

6

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 11

CGC

CGC

Lösung: jedem Objekt in der Szene wird eine Mailbox und jedemStrahl eine eindeutige Strahl-ID zugeordnet

Einfach im Konstruktor der Strahl-Klasse einen Zähler hochzählen

Nach jedem Schnittpunkttest wird die Strahl-ID in die Mailbox desObjekts gespeichert

Vor jedem neuen Schnittpunkttest wird die Strahl-ID des aktuellenStrahls mit der Strahl-ID in der Mailbox des Objektes verglichen:

die IDs sind gleich → das Ergebnis des Schnittpunkttests kann ohneweitere Berechnungen aus der Mailbox ausgelesen werden;

sonst → führe neue Schnittpunktberechnung durch und speichere dasErgebnis in der Mailbox (mit Strahl-ID)

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 12

CGC

CGCOptimierungen der Mailbox-Technik

Probleme der naiven Methode:

Schreiben der Mailbox im Dreieck zerstört Cache

Man kann nicht mehrere Strahlen parallel testen

Lösung: speichere Mailbox getrennt von den Dreiecksdaten

Kleine Hash-Table zu jedem Strahl, die die Dreiecks-IDs enthält

- Nur wenige Dreiecke werden von jedem Strahl berührt

- Hashtable kann hauptsächlich im Level-1-Cache bleiben

Einfache Hashing-Funktion reicht

Paralleles Testen mehrere Strahlen auf versch Prozessoren trivial

Dahinter steckt das alte Problem: soll man"Array of Structs" (AoS) oder "Struct of Arrays" (SoA)

implementieren?

Page 7: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

7

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 13

CGC

CGCTraversierung eines 3D-Gitters

Einfache Idee: verwende 2 synchronisierte DDA's → 3D-DDA

Wie im 2D gibt es eine "driving axis"

Im 3D gibt es aber zwei "passive axes"

driving axis

passive axis 1

passive axis 2

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 14

CGC

CGCBesserer Gitter-Traversierungs-Algo

Schneide Strahl mitBbox der Szene

Achtung:Strahlursprung kanninnerhalb der Bboxsein!

Bestimme erste Zelle

Page 8: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

8

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 15

CGC

CGC

gydty = gy / dy

dtx = gx / dx

gx

dx

dy

d

Gibt es ein Muster für die Zellenübergänge?

Ja, horizontale und vertikale Übergänge haben regelmäßigenAbstand

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 16

CGC

CGCDer Algorithmus

dtx

dty

Cell (i, j)

tmin

tnext_x

tnext_y

Cell (i+1, j)

(dx, dy)

if tnext_x < tnext_y :

i += sx tmin = tnext_x tnext_x += dtxelse:

j += sy tmin = tnext_y tnext_y += dty

Page 9: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

9

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 17

CGC

CGC

Hash-Funktion

h(i,j,k)

Hash-Tabelle

Speicherung

Viele leere Zellen → stelle Gitter durch eine Hashtabelle dar

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 18

CGC

CGC

Dicht besetztes Gitter → verwende Blocking (aka "memory bricking") Teile Gitter auf in Blocks, speichere jeden Block in zusammenhängenden

Speicherbereich, so daß 1 Block = 1 L1-Cache-Zeile

Fasse Blocks zu "Macro-Blocks" zusammen, so daß 1 Macro-Block komplettin den L2-Cache passt

1 2 34 5 67 8 9

1 2 3 4 5 6 7 8 9

II

III IV

Page 10: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

10

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 19

CGC

CGCOptimale Zahl der Voxel

Zu viele Zellen → langsame Traversierung, großerSpeicherverbrauch (schlechte Cache-Ausnutzung)

Zu wenig Zellen→ zu viele Primitive in einem Zellen

Gute Daumenregel: Seitenlänge der Zellen so groß wie diedurchschnittliche Seitenlänge der Dreiecke (Objekte)

Kennt man die nicht (oder ist zu teuer zu berechnen): wähleSeitenlänge =

Weitere Daumenregel: möglichst würfelförmige Voxel erzeugen

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 20

CGC

CGCRekursives Gitter [1989]

Problem: reguläres Gitter passt sich nicht gut unterschiedlichenlokalen Dichten an ("teapot in a stadium")

Idee: Erzeuge zunächst nur grobes Gitter Unterteile "dichte" Zellen wieder

durch ein (grobes) Gitter

Abbruchkriterium: weniger als n Objektein Zelle oder max. Tiefe erreicht

Ergibt n3-Wege-Baum Evtl. Problem der ef"zienten Speicherung

Zusätzliches Feature:Unterteilung "on demand" Erzeuge zunächst nur 1-2 Levels

Falls Strahl zur Laufzeit Zelle trifft, die Abbruchkriterium nicht erfüllt,erzeuge dann weitere Levels

Nested Grids

Page 11: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

11

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 21

CGC

CGCHierarchical Uniform Grid [1994]

Problem: Anpassung der Zellengröße an die Objektgröße, wennviele unterschiedliche Größen dabei sind

Idee:

Gruppiere Objekte nach Größe → Cluster

Gruppiere Objekte innerhalb jedes Clusters nach Entfernung →kleinere Cluster

Baue Gitter für jedes dieser Cluster

Konstruiere Hierarchie über diese elementaren Gitter

Beispiel:

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 22

CGC

CGCVergleich einiger hierarchischer Gitter (Aufbau)

0.161.040.4HUG

1.985.060.39Rekursiv

0.41.130.39Uniform - D = 20.0

0.260.380.19Uniform - D = 1.0

mountgearsballs

Quelle: Vlastimil Havran, Ray Tracing News vol. 12 no. 1, June 1999, http://www.acm.org/tog/resources/RTNews/html

Page 12: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

12

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 23

CGC

CGC

0.45

0.39

0.98

0.35

rings

0.480.240.53HUG

0.280.471.55Rekursiv

0.330.340.65Uniform - D = 20.0

0.220.130.3Uniform - D = 1.0

treetetrateapot

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 24

CGC

CGCLaufzeit

62.31242.134.0HUG

30.28214.936.73Rekursiv

25.15192.338.52Uniform - D = 20.0

28.99201.0244.7Uniform - D = 1.0

FassungGetriebeKugeln

Page 13: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

13

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 25

CGC

CGC

167.7

116.3

113.9

83.7

129.8

Ringe

18.388.7143.04Anpassungsfähig

33.487.2225.61HUG

33.917.2322.67Rekursiv

781.33.8618.6Uniform - D = 20.0

1517.05.5428.68Uniform - D = 1.0

BaumTetraTeekanne

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 26

CGC

CGCProximity Clouds [1994]

Gedankenexperiment:

Annahme: wir stehen auf dem Strahl an Punkt P, und wissen, daß sichin einer Kugel um P mit Radius r kein Objekt be"ndet

Dann können wir direkt zum Punkt

weiterspringen

Annahme: diesen "clearance" Radiuswissen wir in jedem Pukt des Raumes

Dann kann man von Punkt zu Punkt springen

d

P

X

Page 14: 02 raytracing accel - uni-bremen.de...02_raytracing_accel.ppt Author Gabriel Zachmann Created Date 5/14/2007 3:05:48 PM

5/14/07

14

G. Zachmann Computer-Graphik 2 - SS 07 Ray-Tracing Acceleration 27

CGC

CGC

Das funktioniert genau so mit jederanderen Metrik

Problem: man kann nicht in jedem Punktdiese Info speichern

Idee: diskretisiere

Speichere für jede Gitterzelle, wieviele(leere) Zellen man überspringen kann,unabhängig von der Strahlrichtung

Beispiel:

3

1 1 112 2 223 3 3

344433

1 11