ray tracing i: basics
TRANSCRIPT
CS348b Lecture 2
Ray Tracing I: Basics
Today
■ pbrt overview
■ Basic algorithms
■ Ray-surface intersection
■ Efficiency
■ Floating-point error
Next lecture
■ Accelerating ray tracing of large numbers of geometric primitives
Pat Hanrahan / Matt Pharr, Spring 2021
CS348b Lecture 2
Light Rays
Three ideas about light rays
1. Light travels in straight lines (mostly)
2. Light rays do not interfere with each other if they cross (light is invisible!)
3. Light rays travel from the light sources to the eye (but the physics is invariant under path reversal - reciprocity).
Pat Hanrahan / Matt Pharr, Spring 2021
CS348b Lecture 2
Ray Tracing in Computer Graphics
Appel 1968 - Ray casting
1. Generate an image by casting one ray per pixel
2. Check for shadows by sending a ray to the light
Pat Hanrahan / Matt Pharr, Spring 2021
Ray Tracing in Computer Graphics
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
Spheres and Checkerboard T. Whitted, 1979
“An improved Illumination model for shaded display” T. Whitted, CACM 1980
Time: - VAX 11/780 (1979) 74m - PC (2006) 6s - GPU (2012) 1/30s
1. Always send ray to the light source (unless glass or mirror)
2. Recursively generate reflected rays (mirror) and transmitted rays (glass)
PBRT Overview
http://www.pbr-book.org/
Mirror, depth 1
Mirror, depth 2
Mirror, depth 3
Mirror, depth 10
Glass, depth 1
Glass, depth 2
Glass, depth 3
Glass, depth 10
Bidirectional paths
Shape Interface (Simplified)
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
classShape{public:Bounds3fObjectBound()const;Bounds3fWorldBound()const;boolIntersect(constRay&ray,Float*tHit,SurfaceInteraction*isect,booltestAlphaTexture)const;boolIntersectP(constRay&ray,booltestAlphaTexture);FloatArea()const;//…};
Surface Interaction (Simplified)
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
classSurfaceInteraction{Point3fp;Normal3fn;
Point2fuv;Vector3fdpdu,dpdv;Normal3fdndu,dndv;
struct{Normal3fn;Vector3fdpdu,dpdv;Normal3fdndu,dndv;}shading;
//…};
Ray-Surface Intersection
CS348b Lecture 2
Ray-Plane Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
Rayr(t) = o+ t
�!d
o
�!d
r(t)Want t where the ray intersects the plane
Plane
(p� p0) ·�!n = 0�!np
p0
CS348b Lecture 2
Ray-Plane Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
Ray: r(t) = o+ t�!d
Plane: (p� p0) ·�!n = 0
Substitute ray equation into plane equation:
t = � (o� p) ·�!n�!d ·�!n
(p� r(t)) ·�!n = (p� (o+ t�!d )) ·�!n = 0
CS348b Lecture 2
Finding The Closest Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
o
�!d
r(t) r(t0)
r(t1)
r(0)
CS348b Lecture 2
Optimizing Ray-Box
Pat Hanrahan / Matt Pharr, Spring 2021
t = � (o� p) ·�!n�!d ·�!n
o
�!d
r(t)
t = �ox � px�!dx
CS348b Lecture 2
What About Rays Parallel to a Plane?
Pat Hanrahan / Matt Pharr, Spring 2021
o
�!d
t = �ox � px�!dx
xy
IEEE Floating Point Standard says:
1. positive num / 0 = +Inf
negative num / 0 = -Inf
2. +Inf > all other floats
-Inf < all other floats
Math says: t = �ox � px
0= ±1
ray
plane
CS348b Lecture 2
Ray-Sphere Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
o
�!d
r(t)
Ray: r(t) = o+ t�!d
Sphere:
c
p
||p� c||2 � r2 = 0
r
(o+ t�!d � c)2 � r2 = 0
at2 + bt+ c = 0
a =�!d ·
�!d
b = 2(o� c) ·�!d
c = ((o� c) · (o� c))� r2
Ray-Triangle Intersection
CS348b Lecture 2
Ray-Triangle Intersection
1. Find ray-plane intersection point using the methods developed previously
2. Test whether the intersection point is inside the triangle
Pat Hanrahan / Matt Pharr, Spring 2021
The signed area of the parallelogram given by the vectors and is given by
CS348b Lecture 2
Review: Geometric Building-Blocks
Pat Hanrahan / Matt Pharr, Spring 2021
Half of this area is the area of the triangle determined by the 3 points
����x1 x2
y1 y2
���� = (x1y2)� (x2y1)
v1 = (x1, y1) v2 = (x2, y2)
v1
v1
v2
v2
Area of a triangle with vertices etc.
CS348b Lecture 2
Review: Geometric Building-Blocks
Pat Hanrahan / Matt Pharr, Spring 2021
p0 = (x0, y0)
1
2
����x1 � x0 x2 � x0
y1 � y0 y2 � y0
���� =1
2((x1 � x0)(y2 � y0)� (x2 � x0)(y1 � y0))
p0
<latexit sha1_base64="jaekDkXN311/Enm3BQ7wsjn4Ga4=">AAAB6nicbVBNS8NAEJ3Ur1q/qh69LBbBU0mkoseClx4r2g9oQ9lsJ+3SzSbsboQS+hO8eFDEq7/Im//GbZuDtj4YeLw3w8y8IBFcG9f9dgobm1vbO8Xd0t7+weFR+fikreNUMWyxWMSqG1CNgktsGW4EdhOFNAoEdoLJ3dzvPKHSPJaPZpqgH9GR5CFn1FjpIRm4g3LFrboLkHXi5aQCOZqD8ld/GLM0QmmYoFr3PDcxfkaV4UzgrNRPNSaUTegIe5ZKGqH2s8WpM3JhlSEJY2VLGrJQf09kNNJ6GgW2M6JmrFe9ufif10tNeOtnXCapQcmWi8JUEBOT+d9kyBUyI6aWUKa4vZWwMVWUGZtOyYbgrb68TtpXVa9Wvb6vVeqNPI4inME5XIIHN1CHBjShBQxG8Ayv8OYI58V5dz6WrQUnnzmFP3A+fwACYo2l</latexit>
p1
<latexit sha1_base64="U2MeEAxACbRrKsYfh2cEbk6cENg=">AAAB6nicbVBNS8NAEJ3Ur1q/qh69LBbBU0mkoseClx4r2g9oQ9lsJ+3SzSbsboQS+hO8eFDEq7/Im//GbZuDtj4YeLw3w8y8IBFcG9f9dgobm1vbO8Xd0t7+weFR+fikreNUMWyxWMSqG1CNgktsGW4EdhOFNAoEdoLJ3dzvPKHSPJaPZpqgH9GR5CFn1FjpIRl4g3LFrboLkHXi5aQCOZqD8ld/GLM0QmmYoFr3PDcxfkaV4UzgrNRPNSaUTegIe5ZKGqH2s8WpM3JhlSEJY2VLGrJQf09kNNJ6GgW2M6JmrFe9ufif10tNeOtnXCapQcmWi8JUEBOT+d9kyBUyI6aWUKa4vZWwMVWUGZtOyYbgrb68TtpXVa9Wvb6vVeqNPI4inME5XIIHN1CHBjShBQxG8Ayv8OYI58V5dz6WrQUnnzmFP3A+fwAD5o2m</latexit>
p2
<latexit sha1_base64="v5eo0xu26mTBC4o3rzdGWUq4PFU=">AAAB6nicbVBNS8NAEJ3Ur1q/qh69LBbBU0lKRY8FLz1WtLXQhrLZbtqlm03YnQgl9Cd48aCIV3+RN/+N2zYHbX0w8Hhvhpl5QSKFQdf9dgobm1vbO8Xd0t7+weFR+fikY+JUM95msYx1N6CGS6F4GwVK3k00p1Eg+WMwuZ37j09cGxGrB5wm3I/oSIlQMIpWuk8GtUG54lbdBcg68XJSgRytQfmrP4xZGnGFTFJjep6boJ9RjYJJPiv1U8MTyiZ0xHuWKhpx42eLU2fkwipDEsbalkKyUH9PZDQyZhoFtjOiODar3lz8z+ulGN74mVBJilyx5aIwlQRjMv+bDIXmDOXUEsq0sLcSNqaaMrTplGwI3urL66RTq3r16tVdvdJo5nEU4QzO4RI8uIYGNKEFbWAwgmd4hTdHOi/Ou/OxbC04+cwp/IHz+QMFao2n</latexit>
CS348b Lecture 2
Barycentric Coordinates
Pat Hanrahan / Matt Pharr, Spring 2021
a0(p) = Area(p1, p2, p)
a1(p) = Area(p2, p0, p)
a2(p) = Area(p0, p1, p)
bi =ai
Area(p0, p1, p2), 0 i 2
Define barycentric coordinates:
is inside the triangle ifp
pp0
p1
p2
b0 > 0, b1 > 0, b2 > 0
CS348b Lecture 2
Ray-Triangle Intersection
Points on a plane:
1. Find ray-plane intersection point
2. Test whether that point is inside the triangle
Inside iff
Pat Hanrahan / Matt Pharr, Spring 2021
p = b0p0 + b1p1 + b2p2
⇥p0 p1 p2
⇤2
4b0b1b2
3
5 =⇥p
⇤
2
4b0b1b2
3
5 =⇥p0 p1 p2
⇤�1 ⇥p
⇤
b0 > 0, b1 > 0, b2 > 0
CS348b Lecture 2
Ray Triangle Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
o+ t�!d = (1� b1 � b2)p0 + b1p1 + b2p2
[Möller and Trumbore 1997]
2
4tb1b2
3
5 =1
�!s1 ·�!e1
2
4�!s2 ·�!e2�!s1 ·�!s�!s2 ·
�!d
3
5�!e1 = �!p1 ��!p0�!e2 = �!p2 ��!p0�!s = �!o ��!p0
�!s1 =�!d ⇥�!e2
�!s2 = �!s ⇥�!e1
Where
Contemporary Bathroom Scene
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
525M triangles
12.9B ray-triangle tests
~26 tests per triangle
3.2B hits (~25% of tests)
~30 minutes with 8 threads
5m 6s in ray/triangle (17%)
Conserve Memory vs. Coherence
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
classTriangle{//…int*v;TriangleMesh*mesh;};
classTriangleMesh{Point3f*P;//…};
pbrt Triangle
classTriangle{//…Point3fP[3];};
Alternative Triangle
CS348b Lecture 2
Ray-Implicit Surface Intersection
Pat Hanrahan / Matt Pharr, Spring 2021
f(x, y, z) = 0
Implicit surface
x = ox + tdx
y = oy + tdy
z = oz + tdz
f⇤(t) = 0
Substitute ray equation
Univariate root finding
Floating-Point Error
CS348b Lecture 2
Floating-point Representation
Scientific notation
■with a fixed sized mantissa (23-bits),
■ a limited exponent range (8-bits, e-127),
■ signed bit
Pat Hanrahan / Matt Pharr, Spring 2021
±1.m⇥ 2e
2.5 = 1.25⇥ 21 = 1.01b ⇥ 21
1/3 ⇡ 1.01010101010101010101011b ⇥ 2�2
0 = ?
Floating-point Representation
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
Roundoff Error
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
Catastrophic Cancellation
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
Catastrophic Cancellation
CS348b Lecture 2 Pat Hanrahan / Matt Pharr, Spring 2021
A
B
A’
B’
A - B vs A’ - B’ …
CS348b Lecture 2
Effect of Roundoff Error
Pat Hanrahan / Matt Pharr, Spring 2021
CS348b Lecture 2
Problems This Causes
Pat Hanrahan / Matt Pharr, Spring 2021Effect of Floating-Point Roundoff Error
CS348b Lecture 2
Round-off Error Remedies
Use double (fp64) rather than float (fp32)
■ Can help, but also avoids the root problem
■ Increases memory use, reduces performance
Ignore reintersection with the last object hit
■Only works for flat objects (e.g. triangles)
■No help if model has coincident triangles
Have a tmin along ray to ignore close intersections
■What value should tmin take?
Pat Hanrahan / Matt Pharr, Spring 2021
CS348b Lecture 2
Refine Intersection Point, Bound Error
Pat Hanrahan / Matt Pharr, Spring 2021
See pbrt 3.9 for details