Rendering: Spatial Acceleration Structures
Bernhard Kerbl
Research Division of Computer Graphics Institute of Visual Computing & Human-Centered Technology TU Wien, Austria
With slides based on material by Jaakko Lehtinen, used with permission
Rendering: Spatial Acceleration Structures Bernhard Kerbl Research - - PowerPoint PPT Presentation
Rendering: Spatial Acceleration Structures Bernhard Kerbl Research Division of Computer Graphics Institute of Visual Computing & Human-Centered Technology TU Wien, Austria With slides based on material by Jaakko Lehtinen, used with
With slides based on material by Jaakko Lehtinen, used with permission
Rendering – Spatial Acceleration Structures 2
Source: Wojciech Mula, Wikipedia “Painter's algorithm”
Rendering – Spatial Acceleration Structures 3
void render(Camera cam) { for(Pixel& pix : pixels) { pix.Color = background; Intersection closest; closest.Distance = INFINITY; Ray ray = rayThroughPixel(cam, pix); for (Triangle& tri : triangles) { Intersection sect = findClosestIntersection(ray, tri); if(sect.Distance < closest.Distance) { closest = sect; } } if(closest.Distance != INFINITY) { pix.Color = computeColor(closest); } } }
void render(Camera cam) { for(Pixel& pix : pixels) { pix.Color = background; Intersection closest; closest.Distance = INFINITY; Ray ray = rayThroughPixel(cam, pix); for (Triangle& tri : triangles) { Intersection sect = findClosestIntersection(ray, tri); if(sect.Distance < closest.Distance) { closest = sect; } } if(closest.Distance != INFINITY) { pix.Color = computeColor(closest); } } }
Rendering – Spatial Acceleration Structures 4
Source: renderstuff.com/
Rendering – Spatial Acceleration Structures 5
Source: Parcly Taxel, Wikipedia “Supersampling”
Rendering – Spatial Acceleration Structures 6
void render(Camera cam) { for(Pixel& pix : pixels) { pix.Color = background; Intersection closest; closest.Distance = INFINITY; Ray ray = rayThroughPixel(cam, pix); for (Triangle& tri : triangles) { Intersection sect = findClosestIntersection(ray, tri); if(sect.Distance < closest.Distance) { closest = sect; } } if(closest.Distance != INFINITY) { pix.Color = computeColor(closest); } } }
Source: renderstuff.com/
7
pix.Color = background; Intersection closest; closest.Distance = INFINITY; for(int s = 0; s < NUM_SAMPLES; s++) { SampleInfo sInfo = drawSample(); Ray ray = rayThroughSample(cam, sInfo.Location); for (Triangle& tri : triangles) { Intersection sect = findClosestIntersection(ray, tri); if(sect.Distance < closest.Distance) { closest = sect; } } if(closest.Distance != INFINITY) { RGBColor sample = computeColor(closest); pix.Color += filter(sInfo.Filter, RGBWColor(sample, 1)); } } pix.Color /= pixColor.w;
Rendering – Spatial Acceleration Structures
pix.Color = background; Intersection closest; closest.Distance = INFINITY; for(int s = 0; s < NUM_SAMPLES; s++) { SampleInfo sInfo = drawSample(); Ray ray = rayThroughSample(cam, sInfo.Location); for (Triangle& tri : triangles) { Intersection sect = findClosestIntersection(ray, tri); if(sect.Distance < closest.Distance) { closest = sect; } } if(closest.Distance != INFINITY) { RGBColor sample = computeColor(closest); pix.Color += filter(sInfo.Filter, RGBWColor(sample, 1)); } } pix.Color /= pixColor.w;
8
Rendering – Spatial Acceleration Structures
9 Rendering – Spatial Acceleration Structures
void render(Camera cam) { for(Pixel& pix : pixels) { … for (Triangle& tri : triangles) { … } … } }
10 Rendering – Spatial Acceleration Structures
void render(Camera cam) { for(Pixel& pix : pixels) 𝑂 { … for (Triangle& tri : triangles) 𝑁 { … } … } }
Rendering – Spatial Acceleration Structures 11
Rendering – Spatial Acceleration Structures 12
Amazon Lumberyard “Bistro” 3,780,244 triangles 1200x675 pixels 3 trillion ray/triangle intersection tests? At 10M per second, one shot will take ~4 days. Good luck with your movie!
Picture provide through Creative Commons CC-BY.4.0
Rendering – Spatial Acceleration Structures 13
Rendering – Spatial Acceleration Structures 14
Rendering – Spatial Acceleration Structures 15
Rendering – Spatial Acceleration Structures 16
Rendering – Spatial Acceleration Structures 17
Rendering – Spatial Acceleration Structures 18
19 Rendering – Spatial Acceleration Structures
20 Rendering – Spatial Acceleration Structures
21 Rendering – Spatial Acceleration Structures
22 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 23
24 Rendering – Spatial Acceleration Structures
25 Rendering – Spatial Acceleration Structures
26 Rendering – Spatial Acceleration Structures
27 Rendering – Spatial Acceleration Structures
. 3 4 1 2
28 Rendering – Spatial Acceleration Structures
. 3 4 1 2 3 4 1 2
29 Rendering – Spatial Acceleration Structures
. 3 4 1 2 3 4 1 2
30 Rendering – Spatial Acceleration Structures
. 3 4 1 2 3 4 1 2 3 4 1 2
31 Rendering – Spatial Acceleration Structures
. 3 4 1 2 3 4 1 2 3 4 1 2
32 Rendering – Spatial Acceleration Structures
33 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 34
35 Rendering – Spatial Acceleration Structures
36 Rendering – Spatial Acceleration Structures
.
A B
37 Rendering – Spatial Acceleration Structures
.
A B
C D
E F
38 Rendering – Spatial Acceleration Structures
.
A B C D E F
G H
39 Rendering – Spatial Acceleration Structures
40 Rendering – Spatial Acceleration Structures
41 Rendering – Spatial Acceleration Structures
42 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 43
Rendering – Spatial Acceleration Structures 44
Rendering – Spatial Acceleration Structures 45
Rendering – Spatial Acceleration Structures 46
Rendering – Spatial Acceleration Structures 47
Rendering – Spatial Acceleration Structures 48
49 Rendering – Spatial Acceleration Structures
51
Source: Schreiberx, Wikipedia “Bounding Volume Hierarchy”
Rendering – Spatial Acceleration Structures
52 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 53
Rendering – Spatial Acceleration Structures 54
Rendering – Spatial Acceleration Structures 55
Rendering – Spatial Acceleration Structures 56
Rendering – Spatial Acceleration Structures 57
. B A
Rendering – Spatial Acceleration Structures 58
. B A
D C F E
Rendering – Spatial Acceleration Structures 59
. B A D C F E H G
Rendering – Spatial Acceleration Structures 60
Rendering – Spatial Acceleration Structures 61
Algorithms exist (e.g. “separating axis theorem”), but usually very slow!
Rendering – Spatial Acceleration Structures 62
Rendering – Spatial Acceleration Structures 63
Rendering – Spatial Acceleration Structures 64
Rendering – Spatial Acceleration Structures 65
Rendering – Spatial Acceleration Structures 66
Rendering – Spatial Acceleration Structures 67
Rendering – Spatial Acceleration Structures 68
Rendering – Spatial Acceleration Structures 69
Rendering – Spatial Acceleration Structures 70
Rendering – Spatial Acceleration Structures 71
Rendering – Spatial Acceleration Structures 72
Rendering – Spatial Acceleration Structures 73
Rendering – Spatial Acceleration Structures 74
Rendering – Spatial Acceleration Structures 75
Rendering – Spatial Acceleration Structures 76
Rendering – Spatial Acceleration Structures 77
Rendering – Spatial Acceleration Structures 78
Rendering – Spatial Acceleration Structures 79
Rendering – Spatial Acceleration Structures 80
81 Rendering – Spatial Acceleration Structures
82 Rendering – Spatial Acceleration Structures
83 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 84
Rendering – Spatial Acceleration Structures 85 Check out the paper this comparison came from https://users.aalto.fi/~ailat1/publications/karras2013hpg_paper.pdf
Rendering – Spatial Acceleration Structures 86 Check out the paper this comparison came from https://users.aalto.fi/~ailat1/publications/karras2013hpg_paper.pdf
Rendering – Spatial Acceleration Structures 87 Check out the paper this comparison came from https://users.aalto.fi/~ailat1/publications/karras2013hpg_paper.pdf
Rendering – Spatial Acceleration Structures 88
Rendering – Spatial Acceleration Structures
89
Rendering – Spatial Acceleration Structures
90
Rendering – Spatial Acceleration Structures
91
Rendering – Spatial Acceleration Structures
92
93 Rendering – Spatial Acceleration Structures
Rendering – Spatial Acceleration Structures 94
Rendering – Spatial Acceleration Structures 95
Rendering – Spatial Acceleration Structures 96