opengl projects triangles onto the ... - stanford...
TRANSCRIPT
![Page 1: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/1.jpg)
1/33
![Page 2: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/2.jpg)
2/33
Ray Tracing• OpenGL projects triangles onto the image plane and rasterizes
them to determine which pixels they cover• Scanline rendering is a per triangle operation
• Ray Tracing instead works as a per pixel operation• For each pixel, a ray is created to represent the light coming
inwards from the world that hits that pixel• That ray is traced backwards out of the camera into the world to
find out where the light came from– and thus determine what color to shade that pixel
![Page 3: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/3.jpg)
3/33
Parallelization• Ray tracing is inherently parallel, since the rays for one pixel are
independent of the rays for other pixels• Can take advantage of modern parallel CPU/GPU/Clusters to
significantly accelerate a ray tracer– Threading (e.g., Pthread, OpenMP) distributes rays among cores– Message Passing Interface (MPI) distributes rays among processors across
different machines– OptiX/CUDA distributes rays on the GPU
• Memory coherency helps when distributing rays to various threads/processors– Assign the spatially neighboring rays (on the image plane) to the same
core/processor– These rays tend to intersect with the same objects in the scene, and thus
need access to the same memory
![Page 4: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/4.jpg)
4/33
Real Time Ray-Tracing• Typically not used in games
– Could be used in games, but typically considered too expensive
• However, GPUs are very good at tasks that are easily parallelizable• For example, NVIDIA Optix real time ray tracer…
![Page 5: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/5.jpg)
5/33
Basic Ray Tracing
![Page 6: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/6.jpg)
6/33
Ray Tracing• Generate an image by backwards tracing the path of light
through pixels on the image plane• Simulate the interaction of light with objects
![Page 7: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/7.jpg)
7/33
Aperture and Image Plane
Start with an eye pupil or aperture (a focal point), along with an image plane with pixels
![Page 8: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/8.jpg)
8/33
• Ray equation:
• Eye pupil located at t=0• Pixel center located at t=1
Constructing Rays
( ) ( )[0, )
R t E t P Et
= + −∈ +∞
![Page 9: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/9.jpg)
9/33
Object Intersection
Shoot the ray from the eye through the pixel, and find the first object it hits
![Page 10: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/10.jpg)
10/33
Shadow Ray
Shoot a shadow ray toward the light,and see if the intersection point is shadowed
![Page 11: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/11.jpg)
11/33
Shading
If the light is visible from the intersection point, compute the shading using the light source
![Page 12: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/12.jpg)
12/33
Shading the Intersection Point• Similar to the OpenGL shading model• The shading on each intersection point is the sum of contributions
from all light sources– Cast rays from the intersection point to all light sources
• Light types:– Ambient light, point light, directional light, spot light, area light,
volume light, etc.• Material properties:
– Diffusion, specular, shininess, emission, etc.• Shading models:
– Diffusive shading, Phong shading, BRDFs, etc.
![Page 13: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/13.jpg)
13/33
Pixel Color
Use the results of the shading to record a color for that pixel
![Page 14: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/14.jpg)
14/33
PseudocodeImage Raytrace (Eye eye, Scene scene, int width, int height){
Image image = new Image (width, height) ;for (int i = 0 ; i < height ; i++)
for (int j = 0 ; j < width ; j++){
Ray ray = RayThruPixel (eye, i, j) ;Intersection hit = Intersect (ray, scene) ;image[i][j] = FindColor (hit) ;
}return image ;
}
![Page 15: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/15.jpg)
15/33
Lights
![Page 16: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/16.jpg)
16/33
Light Types
Point Light Directional Light Spot Light
Area Light from a light tubeArea Light Volume light
![Page 17: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/17.jpg)
17/33
Area Lights– Treat the area light like a bunch of point lights– Shoot a number of rays from the intersection point to
different points on the area light– Take the average of the results– Creates soft shadows
![Page 18: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/18.jpg)
18/33
Question 1• If I break an area light into 100 point lights,
how do I set the strength of each point light?
![Page 19: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/19.jpg)
19/33
Shadows
![Page 20: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/20.jpg)
20/33
• Detect shadows by casting rays to the light source
• Test for occluder intersection– No occluder intersection, shade normally (e.g. Phong, BRDF)– Yes occluder intersection, skip light (don’t skip ambient)
Shadow Rays
)1,[)()(
ε∈−+=
tSLtStR
![Page 21: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/21.jpg)
21/33
Incorrect self-shadowing Correct
Spurious Self-Occlusion
![Page 22: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/22.jpg)
22/33
Spurious Self-Occlusion• Add ε to the starting point of shadow rays to avoid accidental
re-intersection with the original surface:– This can often fail for grazing shadow rays near the objects silhouette
• Better to offset the intersection point in the normal direction from the surface– The direction of the shadow ray shot from the perturbed point to the light
may be slightly different from the direction of the original shadow ray
• May also need to avoid placing the new starting point too close to or inside other nearby objects!
The perturbed point may still be inside the object
offset in the ray directionoffset in the normal direction
)1,[ε∈t
![Page 23: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/23.jpg)
23/33
Question 2• Why not just ignore the object completely
when casting a shadow ray?
![Page 24: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/24.jpg)
24/33
Ray-Object Intersections
![Page 25: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/25.jpg)
25/33
Ray-Object Intersections
• Given a ray R(t)=A+tD, find the first intersection with any object where t ≥ tmin and t ≤ tmax
• The object geometry can be a polygon mesh, an implicit surface, a parametric surface, etc.
• Doesn’t have to be decomposed into triangles (as was required by OpenGL)
• Goal: write intersection code for all kinds of different geometries
![Page 26: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/26.jpg)
26/33
Ray-Sphere Intersections
![Page 27: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/27.jpg)
27/33
Ray-Sphere Intersection• Ray equation:• Implicit equation for a sphere:• Combine them together:• Quadratic equation in t :
• With discriminant:
tDAtR +=)(22)( rCX =−
22)( rCtDA =−+
13/32
0)()(2 222 =−−+•−+ rCADtCAt
222 )(4])[(4 rCADCA +−−•−=∆
![Page 28: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/28.jpg)
28/33
Ray-Sphere Intersection
0>∆ 0=∆ 0<∆
For the case with two solutions, choose the first intersection (smaller t)
![Page 29: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/29.jpg)
29/33
Ray-Sphere Intersection
• Intersection Point:
• Intersection Normal: P
DtAP int+=
CPCPN
−−
=
![Page 30: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/30.jpg)
30/33
Implicit Surfaces
![Page 31: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/31.jpg)
31/33
Ray Implicit Surface Intersection
The Ray-Sphere intersection was an example of this!
![Page 32: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/32.jpg)
32/33
Ray-Plane Intersections
![Page 33: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/33.jpg)
33/33
Ray-Plane Intersection• Ray equation:• Implicit equation for a plane:• Combine them together and solve for t to find the point of
intersection:
tDAtR +=)(0=+++ dczbyax
0)()()( =++++++ dtzzctyybtxxa DADADA
Just another implicit surface intersection!
![Page 34: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/34.jpg)
34/33
Ray-Triangle Intersections
![Page 35: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/35.jpg)
35/33
Ray-Triangle Intersection• First, find the ray-plane intersection with the plane containing the
triangle • Then, project the 3 triangle vertices and the ray-plane intersection
point to a truly 2D plane• Finally, run the point-inside-triangle test in 2D as we did for
rasterization in Week 2
![Page 36: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/36.jpg)
36/33
Or avoiding projection…• Compute the normal direction n orthogonal to edge e, and pointing
towards the edge’s opposite vertex in the plane of the triangle:
• Given an endpoint P1 of e, test whether to see if the intersection point is “inside” that edge
1 21 22
2
•= −
e en e ee
0)( 1 ≥•− nPP
![Page 37: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/37.jpg)
37/33
Recall Barycentric Coordinates…
![Page 38: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/38.jpg)
38/33
Ray-Triangle Intersection
• Ray equation:• Parametric equation for triangle:
• Combine:
tDAtR +=)(
)()( 13121 PPPPPX −+−+= βα
)()( 13121 PPPPPtDA −+−+=+ βα
A
D1P
2P
3P
![Page 39: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/39.jpg)
39/33
Ray-Triangle Intersection
3 equations with 3 unknowns…
)()( 13121 PPPPPtDA −+−+=+ βα
−+−+=+−+−+=+−+−+=+
)()()()(
)()(
13121
13121
13121
zzzzztzzyyyyytyy
xxxxxtxx
DA
DA
DA
βαβαβα
),,(),,,(),,,( 333322221111 zyxPzyxPzyxP ===
![Page 40: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/40.jpg)
40/33
Ray-Triangle Intersection
Matrix form:
Satisfying
−−−
=
−−−−−−−−−
1
1
1
1312
1312
1312
zzyyxx
tzzzzzyyyyyxxxxx
A
A
A
D
D
D
βα
−≤≤≤≤≤≤
αβα
1010maxmin ttt
![Page 41: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/41.jpg)
41/33
• Cramer’s rule…
• The 4 unique matrices have some common columns, so the number of operations can be reduced by reusing numbers when computing determinants
Ray-Triangle Intersection
D
D
D
DA
DA
DA
zzzzzyyyyyxxxxxzzzzzyyyyyxxxxx
−−−−−−−−−−−−−−−−−−
=
1312
1312
1312
131
131
131
α
D
D
D
DA
DA
DA
zzzzzyyyyyxxxxxzzzzzyyyyyxxxxx
−−−−−−−−−−−−−−−−−−
=
1312
1312
1312
112
112
112
β
D
D
D
A
A
A
zzzzzyyyyyxxxxx
zzzzzzyyyyyyxxxxxx
t
−−−−−−−−−−−−−−−−−−
=
1312
1312
1312
11312
11312
11312
![Page 42: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/42.jpg)
42/33
Pseudocodebool RayTriangle (Ray R, Vec3 V1, Vec3 V2, Vec3 V3, Interval [tmin, tmax]){
compute t;if(t < tmin or t > tmax) return false;compute α;if(α < 0 or α > 1) return false;compute β;if(β < 0 or β > 1- α) return false;return true;
}
// Notice the conditions for early termination.// Recall: for the 2D point inside triangle test, one can return early as well when testing the 3 edges
![Page 43: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/43.jpg)
43/33
Question 3• Why might we need more than one way of
computing ray-triangle intersections?
![Page 44: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/44.jpg)
44/33
Triangle Normals
![Page 45: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/45.jpg)
45/33
Normals• Barycentric interpolation
– As usual interpolate from the 3 normals at the triangle’s vertices:
• Bump mapping, normal mapping, displacement mapping– all done similarly as in openGL (textures too…)
321)1( NNNN βαβα ++−−=
![Page 46: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/46.jpg)
46/33
Transformed Objects
![Page 47: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/47.jpg)
47/33
Ray Tracing Transformed Objects• A triangle is still a triangle after transformation• But a sphere can become an ellipsoid:
• Write another intersection routine?• Better yet, can reuse ray-sphere intersection
code….
![Page 48: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/48.jpg)
48/33
Ray Tracing Transformed Objects• Intersect the untransformed object in object space with
the inverse-transformed ray (put into object space)
• Transform the results back into world coordinates
NMNM Tpp −=′= and Be careful with the normal!
![Page 49: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/49.jpg)
49/33
Final Project
![Page 50: OpenGL projects triangles onto the ... - Stanford …web.stanford.edu/class/cs148/pdf/class_11_ray_tracing.pdf · 2/33 Ray Tracing • OpenGL projects triangles onto the image plane](https://reader031.vdocuments.net/reader031/viewer/2022022605/5b6d28ac7f8b9a3b388c9a19/html5/thumbnails/50.jpg)
50/33
Question 4• Brainstorm some on your final project…