8
EECS 487: Interactive Computer Graphics Lecture 28: Ray Tracing Implementation Ray Tracing Basic tasks: 1. Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For each pixel in the image plane: a. build a ray in eye coordinates b. transform to world coordinates (why?) c. figure out what the ray hits d. compute shading, e.g., by using Phong illumination model The core of any ray tracing systems, as well as its bottleneck (75% of time spent here) All ray intersection problems boil down to the mathematical process of finding roots Replaces viewing and projection transforms Image Plane and View Frustum Shirley,Funkhouser Let the screen/image plane be at the near plane (w = n) Given s in image space (i, j) and r, l, t, b, n in eye space (u,v,w), compute s in eye space: s eye Screen Pixels in Eye Coordinates u v s = pixel (i, j) pixel (0, 0) pixel (HRES, VRES) Let ll = (l, b, n) (r, t, n) s u = l + (r l ) HRES i + 0.5 ( ) s v = b + (t b) VRES j + 0.5 ( ) Assumming symmetric frustum: r = l, t = b s eye = s u s v s w 1 = l + 2r i + 0.5 HRES b + 2t j + 0.5 VRES n 1 Zwicker i j

EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

EECS487:InteractiveComputerGraphicsLecture28:•  RayTracingImplementation

RayTracingBasictasks:1.  Specifytheviewinggeometry:

eyecoordinateframe,imageplane,andviewfrustum

2.  Foreachpixelintheimageplane:a. buildarayineyecoordinatesb. transformtoworldcoordinates(why?)c. figureoutwhattherayhitsd. computeshading,e.g.,byusingPhongilluminationmodel

Thecoreofanyraytracingsystems,aswellasitsbottleneck(75%oftimespenthere)

Allrayintersectionproblemsboildowntothemathematicalprocessoffindingroots

Replacesviewingandprojectiontransforms

ImagePlaneandViewFrustum

Shirley,Funkhouser

Letthescreen/imageplanebeatthenearplane(w = n)

Givensinimagespace(i,j)andr, l, t, b, nineyespace(u,v,w),computesineyespace:seye

ScreenPixelsinEyeCoordinates

u

vs = pixel(i, j)

pixel(0, 0)

pixel(HRES, VRES)

Letll = (l, b, n)

(r, t, n)

su = l +(r − l)HRES

i + 0.5( )

sv = b +(t − b)VRES

j + 0.5( )Assummingsymmetricfrustum:

r = −l, t = −b

seye =

susvsw1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

=

l + 2r i + 0.5HRES

b + 2t j + 0.5VRESn1

⎢⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥⎥

Zwicker

i

j

Page 2: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

sworld =Meye→worldseye

=

sworld = e + l + 2r i + 0.5HRES

⎛⎝⎜

⎞⎠⎟ u + b + 2t j + 0.5

VRES⎛⎝⎜

⎞⎠⎟ v + nw

Since ll = e + lu + bv + nw

sworld = ll + 2r i + 0.5HRES

⎛⎝⎜

⎞⎠⎟ u + 2t j + 0.5

VRES⎛⎝⎜

⎞⎠⎟ v

ScreenPixelsinWorldCoordinates

1 0 0 ex0 1 0 ey0 0 1 ez0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

ux vx wx 0uy vy wy 0

uz vz wz 00 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

seye =

ux vx wx exuy vy wy eyuz vz wz ez0 0 0 1

⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥

l + 2r i + 0.5HRES

b + 2t j + 0.5VRESn1

⎢⎢⎢⎢⎢⎢⎢

⎥⎥⎥⎥⎥⎥⎥

x

y

z

u

v

w

screen

s

ll

Note:noperspectiveprojectionmatrix,raygenerationtookcareofthat!

Merrell

v

u −w

BuildingaRayinEyeCoordinates

Anchorpoint:e = (xe, ye, ze, 1)

Ray:r = (e, d)

p = r(t) = e + t d,t > 0

Direction: d = s − e = (xd, yd, zd, 0)||d|| = 1preferred,butisnotalwaysso

s:screenintersection

Hart

x

y

z worldcoordinates

Assumingsymmetricfrustum:•  focallength:d = t /tan(ϕ),ϕ = fovy/2•  aspectratio:

a = HRES/VRES = (r − l)/(t − b)�= 2r/2t � r = at �

(rand tareunknown)

Then:•  sworld = ll + (2 at (i + 0.5)/HRES) u �

+ (2 t (j + 0.5)/VRES) v•  ll = e − dw − ru − tv = e − dw − atu − tv

•  dividingbyt:

ExpressedinAspectRatioandFoVy

llDIVt = eDIVt - 1/tan(phi)w – au – v for (j = 0; j < VRES; j++) { for (i = 0; i < HRES; i++) { sDIVt = llDIVt + 2au (double)(i+0.5)/HRES

+ 2v (double)(j+0.5)/VRES; color = raytrace(ray(e, sDIVt – eDIVt)); plot(i,j,color);

} }

Hart

e

-ru-tv

ll

s

HRES

VRES

(r, t, n)−au−v

−dw

Ray-ObjectIntersection

raytrace(r = (e, d))returnstheintensityoflight(e.g.,anRGBtriple)arrivingattherayanchorateintheoppositedirection(−d)

ed

ray r

raytrace(r)

color raytrace(ray r, int depth) { color c = background; if ((hit = intersect(r)) != NULL) { hit->depth = depth – 1;

// shading details simplified, // see earlier version

if (hit->depth > 0) { c = raytrace(r, hit->depth);

} } return c; }

Hart08

Page 3: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

Ray-ObjectIntersectionRay:r(t) = e + t dForeachraywemustfindthenearestintersectionpointwithallobjectsinthescene

Wecandefinethesceneusing:• surfacemodels:plane,triangle,polygon• solidmodels:sphere,cylinder

Recall:implicitsurfaces:forpointp = (x, y, z)insurface,f (p) = 0

Thenray-surfaceintersectioniswhenf (r(t)) = 0Solvefort, r(t)istheintersectionpoint

Zwicker06

Planeimplicitequation:f (p) = (p − q)•n = 0,wherenistheplanenormalandqapointintheplaneForp = r(t),theray-planeintersectionisat:

((e + td) − q)•n = 0,t = (q − e)•n/d•nEquivalently,forp = (xp, yp, zp),theimplicitplaneequationis:

Axp + Byp + Czp + D = 0• theunitnormaloftheplane:n = [A B C]T, A2 + B2 + C2 = 1• Disthedistancefromthecoordinatesystemorigin(signofDdetermineswhichsideoftheplanetheoriginisat)

Ray-planeintersectionisattsuchthat:

A(xe + txd) + B(ye + t yd) + C(ze + t zd) + D = 0

Ray-PlaneIntersection

Ray-TriangleIntersectionFindray-planeintersectionforplanedefinedbythetriangleIfintersectionexists:•  computebarycentriccoordinatesoftheintersectionpoint

•  ifbarycentriccoordinatesareallpositiveandsumto1,pointisaconvexcombinationoftheverticesofthetriangleandisinsidetriangle

•  otherwiseoutside•  (Möller&Trumborealgorithmdoesitin

1div,27muls,17adds)

Ray-BoxIntersectionsCouldintersectwith6facesindividually:O(n2)Better:boxistheintersectionof3slabsO(n)n:numberofcomparisons2Dexample(similarlyfor3D):xmin= xp+ txmin xdtxmin

= (xmin − xp)/xd

ymin= yp + tymin yd

tymin = (ymin − yp)/yd

tmin = max(txmin, tymin

)tmax = min(txmax

, tymax)

iftmin > tmax,boxismissediftmax < 0,boxisbehindeyeelser(tmin)isintersectionpoint

(xp, yp)

(xd, yd)

ymin

ymax

Page 4: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

Ray-SphereIntersectionsAsphereisdefinedbythespherecenterc=(xc, yc, zc),andradiusr

Sphereimplicitfunction:||p − c|| = r(xp − xc)2 + (yp − yc)2 + (zp − zc)2 − r2 = 0

Ray-sphereintersection:((xe + txd) − xc)2 + ((ye + tyd) − yc)2 + ((ze + tzd) − zc)2 − r2 = 0

Multiplyingoutandsimplifying:0 = (xd

2 + yd2 + zd

2) t2 + 2(xd(xe − xc) + yd(ye − yc) + zd(ze − zc)) t �+ (xe − xc)2 + (ye − yc)2 + (ze − zc)2 − r2

0 = At2 + Bt + C

Ifdisnormalized,A = xd2 + yd

2 + zd2 = 1

Thesolutionsfortcanbefoundusingthequadraticequation: t = −B ± B2 − 4C

2

cr

ed

p

Ray-SphereIntersectionsB2 − 4Cisthediscriminant

Threepossibilities:1.  B2 − 4C < 0

•  norealroots,spherewasmissed,nointersection�alwayscheckthediscriminantfirst

2.  B2 − 4C = 0•  onerealroot,ray“grazes”thesphere,t0 = t1 = −B/2

3.  B2 − 4C > 0•  tworealroots

a.  t0 < 0, t1 > 0�negativevaluesoftindicatethattheraystartedinthesphere�onlypositiverootsarevalid

b.  0 < t0 < t1 thesmallerrootisclosertotheray’sstartingpoint,e �savetimebycomputingthesmallrootfirst

case1 case2 case3a case3b

t1

t0

t1t0

Merrell08

t = −B ± B2 − 4C2

Computationtimeperray-spheretest:•  17additions/subtractions•  17multiplies•  1squareroot

Computingnormal:thenormalnatanintersectionpointponasphereisthesameasthecoordinatesofpinthesphere’sframeofreference:

Ray-SphereIntersections

n p

c

r

n = p − cp − c

=p − cr

=xp − xc

ryp − ycr

zp − zcr

⎝⎜

⎠⎟

T

Merrell08

Asphereisdefinedbythespherecenterc=(xc, yc, zc),andradius:r

Sphereimplicitfunction:||p − c|| = r(p − c)•(p − c) − r2 = 0

Ray-sphereintersection:((e + td) − c)•((e + td) − c) − r2 = 0

Multiplyingoutandsimplifying:0 = (d•d) t2 + 2((e − c)•d) t + (e − c)•(e − c) − r 2

0 = t 2 + Bt + C

ifdisnormalized,||d|| = 1

Acceptance/rejectiontests:•  (e − c)•d > 0?•  (e − c)•(e − c) − r2 < 0?

Ray-SphereIntersections

cr

c

ed

ed

p

Page 5: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

Let l = c − e, l2 = l•lif (l2 < r 2) eisinsideofsphere

tca = l • d //dnormalized,projectionoflondif (tca < 0andeisoutsideofsphere)�

raypointingawayfromsphere,nointersection

d2 = l2 − tca2

if (d2 > r 2) raymissessphere

thc = √(r 2 − d2)if(e is outside sphere)�

intersectionisatt0 = tca − thc else

intersectionisat t1 = tca + thc//tocomputepwithunnormalizedd,//normalizedfirst:uset/||d||

Worstcasecomputationreducedby4multsand1add

Ray-SphereIntersections−Geometric

d

ce

tcathc

lp0

p1d

Funkhouser09

r

EllipsoidIntersectionWehaveanoptimizedray-spheretest•  butwewanttoraytraceanellipsoid…

LetMbea4×4transformationmatrixthatdistortsasphere(f())intoanellipsoidForponellipsoid,f (M−1p) = 0f (M−1r(t))= f (M−1(e + t d))

= f (M−1e + t M−1d)

Intersectionpointmustbeinworldcoordinates•  tisthesameinbothcases

p = e + t dDon’tforgettotransformthenormal:

nellipsoid = (M−1)Tnsphere

f (M−1p) = 0

e

d

M−1e

M−1d

p

M−1p

M−1M

Hart

e

d

e d

e d de

IntersectionIngeneral,foranobjectthatistobetransformedbymatrixM,rayintersectionmaybeeasierdoneonoriginalobject,beforethetransformation

• applyM−1torayandintersectobjectsintheirlocal(objectcoordinates

Shirley02

Instancing

Objectstoredinuntransformedstatealongwiththetransformationmatrix

Thetransformationoftheobjectisdelayeduntilinstantiation/renderingtime

Bonus:re-useobjectswithoutreplicatingtheminmemory!

Shirley02

Page 6: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

CaveatforInstantiationwithScalingIfMincludesscaling,don’tre-normalized:you’llgettherighttwheninversetransformingintersection(M−1td)•  ifyoure-normalized,tOS ≠ tWSandmustberescaledafterinversetransform

•  ifyoudon’tre-normalized,tOS = tWS �intersectionfound!•  butdon’trelyontOSbeingtruedistanceduringintersectionroutines

ObjectSpaceWorldSpace

tWS tOS

ObjectSpaceWorldSpace

tWS tOS

Durand08 Akenine-Möller03

RulesofThumbforIntersectionTesting

Performacceptanceandrejectiontest•  trythemearlyontomakeafastexit

Postponeexpensivecalculationsifpossible

Usedimensionreduction•  e.g.,3 1Dtestsinsteadofonecomplex3Dtest,or2Dinsteadof3D

Sharecomputationsbetweenobjectsifpossible

Useinstancing,delaytransformation

AcceleratingIntersectionTestsFindthefirst-hitobject

Simplestlinearapproach:O(Npixels*Mobjects)Accelerationtechniques(sublinearinMobjects):usespatialdatastructuretoreducethenumberoftestsneeded• spatialsubdivision:spacepartitioning• objectsubdivision:hierarchicalboundingvolumes

Probablythesinglemostimportantefficiencyimprovement• othersincludeshadowcaching:startshadowintersectionsearchwiththelastobjectintersected

SpatialSubdivisionDivideupspaceandrecordwhatobjectsareineachcell•  storeobjectsina3Darray•  traceraythroughvoxelarray

Forexample:uniformgrid,quadtree/octree,BSPtree,kd-tree(mostpopular,k-dimensional,axis-alignedBSP)

quad Hanrahan09,Curless08

Page 7: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

HierarchicalBoundingVolumesArrangesceneintoatree•  internalnodesconsistofprimitiveswithverysimpleintersectiontests(boxesorspheres)

•  eachinternalnode’svolumecontainallobjectsinsubtree•  leafnodescontaintheoriginalgeometry

r1

r2r3

Curless08,Hart08

PrecisionProblemsNumericalinaccuracymaycauseintersectiontobebelowsurface�causingsurfacetoincorrectly

shadowitself

Movealittlealongsurfacenormalbeforeshootingshadowray,ormovealittlealongshadowraytocomputeintersection

O’Brien08,Shirley02,James07

PrecisionProblemsAlsowhencomputingreflectionrayAndwhencomputingintersectionwithedgesintrianglemeshes�mustreportintersection

Durand08

TransmissionRayExitCaveats

TocomputeFresnelreflectancecoefficientwhenexitinganobject,remembertoinvertthenormalandtransmissionraySimilarlyforthecomputationoftherefractedrayexitingtheobjectIncomputingray-objectintersectionattheexitpoint,besuretotranslatebyεintherightdirection

Page 8: EECS 487: Interactive Computer Graphicssugih/courses/eecs487/...Ray Tracing Basic tasks: 1.Specify the viewing geometry: eye coordinate frame, image plane, and view frustum 2. For

RayTracingvs.PipelinedRasterization

RayTracing• ray-centric• needstostoresceneinmemory

• (mostly)randomaccesstoscene

PipelinedRasterization• trianglecentric• needstostoreimage(anddepth)inmemory

• (mostly)randomaccesstoframebuffer

Whichrequireslessmemory?Sceneorframebuffer?framebuffer

Whichimageiseasiesttoaccessrandomly?framebufferduetoregularsampling

Durand

InteractiveRayTracing

Advantagesofraytracing:•  canhandleverycomplexscenesrelativelyeasily

•  sublinearcomplexitywithacceleration(hierarchicalbbox),neednotprocessalltrianglesinscene

•  providecomplexmaterialsandshadingforfree•  easy(butexpensive)toaddglobalillumination,specularities,etc.

Butraytracingishistoricallyslowbecause•  hardtoaccessdatainmemory-coherentway,cannottakeadvantageofincrementalcomputation

•  requiresmanysamplesforcomplexlightingandmaterials

Ramamoorthi

InteractiveRaytracingLeveragepowerofmodernCPUs:developcache-aware,parallelimplementations

ModernGPUshavegeneralstreamingarchitecture:canmapvariouselementsofraytracingkernelslikeeyerays,intersectiontests,etc.intovertexorfragmentprograms

Searchyoutubefor“nvidiaOptiX”and“realtimeraytracing”

Ramamoorthi08

hothardware.com/News/NVIDIA-Shows-Interactive-Ray-Tracing-on-GPUs/