cs 551 645 introductory computer graphics
Download
Skip this Video
Download Presentation
CS 551 / 645: Introductory Computer Graphics

Loading in 2 Seconds...

play fullscreen
1 / 61

CS 551 / 645: Introductory Computer Graphics - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

CS 551 / 645: Introductory Computer Graphics. Ray Tracing. Administrivia. Assignment 5: Intel okay. Realism. What is not realistic about the following images?. Realism?. Realism?. Realism?. Realism?. Realism?. Crude light-surface interaction model. Strictly local illumination model.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' CS 551 / 645: Introductory Computer Graphics' - maxine


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
cs 551 645 introductory computer graphics

CS 551 / 645: Introductory Computer Graphics

Ray Tracing

David Luebke 7/30/2014

administrivia
Administrivia
  • Assignment 5: Intel okay

David Luebke 7/30/2014

realism
Realism
  • What is not realistic about the following images?

David Luebke 7/30/2014

realism1
Realism?

David Luebke 7/30/2014

realism2
Realism?

David Luebke 7/30/2014

realism3
Realism?

David Luebke 7/30/2014

realism4
Realism?

David Luebke 7/30/2014

realism5
Realism?

David Luebke 7/30/2014

realism6

Crude light-surface interaction model

Strictly local illumination model

Realism…
  • A big part of realism is realistic lighting
  • Is Phong’s lighting model realistic?
    • Empirical specular term
    • “Ambient” term
    • No shadows
    • No surface interreflection

David Luebke 7/30/2014

global illumination
Global Illumination
  • Realistic lighting is global, not local
    • Surfaces shadow each other
    • Surfaces illuminate each other
  • Two long-time approaches
    • Ray-tracing: simulate light-ray optics
    • Radiosity: simulate physics of light transfer

David Luebke 7/30/2014

ray tracing overview
Ray Tracing Overview
  • To determine visible surfaces at each pixel:
    • Cast a ray from the eyepoint through the center of the pixel
    • Intersect the ray with all objects in the scene
    • Whatever it hits first is the visible object
  • This is called ray casting

David Luebke 7/30/2014

ray casting
Ray Casting
  • An example:

Eyepoint

Screen

Scene

David Luebke 7/30/2014

recursive ray tracing
Recursive Ray Tracing
  • Obvious extension:
    • Spawn additional rays off reflective surfaces
    • Spawn transmitted rays through transparent surfaces
  • Leads to recursive ray tracing

Secondary Rays

Primary Ray

David Luebke 7/30/2014

recursive ray tracing1
Recursive Ray Tracing
  • Slightly less obvious extension:
    • Trace a ray from point of intersection to light source
    • If ray hits anything before light source, object is in shadow
    • These are called shadow rays

David Luebke 7/30/2014

ray tracing overview1
Ray Tracing Overview
  • Ray tracing is simple
    • No clipping, perspective projection matrices, scan conversion of polygons
  • Ray tracing is powerful
    • Hidden surface problem
    • Shadow computation
    • Reflection/refraction
  • Ray tracing is slow
    • Complexity proportional to # of pixels
    • Typical screen ~ 1,000,000 pixels
    • Typical scene « 1,000,000 polygons

David Luebke 7/30/2014

recursive ray tracing2
Recursive Ray Tracing

David Luebke 7/30/2014

recursive ray tracing3
Recursive Ray Tracing

Pixel

ImagePlane

David Luebke 7/30/2014

recursive ray tracing4
Recursive Ray Tracing

“Direct” Ray To Eye

David Luebke 7/30/2014

recursive ray tracing5
Recursive Ray Tracing

“Indirect” Ray To Eye

David Luebke 7/30/2014

recursive ray tracing6
Recursive Ray Tracing
  • Physically, we’re interested in path of light rays from light source to eye.
  • In practice, we trace rays backwards from eye to source (Why?)

David Luebke 7/30/2014

recursive ray tracing7
Recursive Ray Tracing
  • Physically, we’re interested in path of light rays from light source to eye.
  • In practice, we trace rays backwards from eye to source (Why?)
    • Computational efficiency: we want the finite subset of rays that leave source, bounce around, and pass through eye
    • Can’t predict where a ray will go, so start with rays we know reach eye

David Luebke 7/30/2014

basic algorithm
Basic Algorithm
  • Function TraceRay()Recursively trace ray Rand return resulting color C
    • ifRintersects any objects then
      • Find nearest object O
      • Find local color contribution
      • Spawn reflected and transmitted rays, using TraceRay() to find resulting colors
      • Combine colors; return result
    • else
      • return background color

David Luebke 7/30/2014

basic algorithm code
Basic Algorithm: Code

Object allObs[];

Color image[];

RayTraceScene()

allObs = initObjects();

for (Yall rows in image)

for (X all pixels in row)

Ray R = calcPrimaryRay(X,Y);

image[X,Y] = TraceRay(R);display(image);

David Luebke 7/30/2014

basic algorithm code1
Basic Algorithm: Code

Color TraceRay(Ray R)

ifrayHitsObjects(R) then

Color localC, reflectC, refractC;

Object O = findNearestObject(R);

localC = shade(O,R);

Ray reflectedRay = calcReflect(O,R)

Ray refractedRay = calcRefract(O,R)

reflectC = TraceRay(reflectedRay);

refractC = TraceRay(refractedRay);

return localC  reflectC refractC

else returnbackgroundColor

David Luebke 7/30/2014

refining the basic algorithm
Refining theBasic Algorithm

Color TraceRay(Ray R)

ifrayHitsObjects(R) then

Color localC, reflectC, refractC;

Object O = findNearestObject(R);

localC = shade(O,R);

Ray reflectedRay = calcReflect(O,R)

Ray refractedRay = calcRefract(O,R)

reflectC = TraceRay(reflectedRay);

refractC = TraceRay(refractedRay);

return localC  reflectC refractC

else returnbackgroundColor

David Luebke 7/30/2014

ray object intersection
Ray-Object Intersection
  • Given a ray and a list of objects, what objects (if any) intersect the ray?
  • Query: Does ray R intersect object O?
    • How to represent ray?
    • What kind of object?
      • Sphere
      • Polygon
      • Box
      • General quadric

David Luebke 7/30/2014

representing rays
Representing Rays
  • How might we represent rays?
  • We represent a ray parametrically:
    • A starting point O
    • A direction vector D
    • A scalar t

R = O+ tD

O

t < 0

t = 1

t > 1

D

David Luebke 7/30/2014

ray sphere intersection
Ray-Sphere Intersection
  • Ray R = O + tD

x = Ox + t Dx

y = Oy + t Dy

z = Oz + t Dz

  • Sphere at (l, m, n) of radius r is:

(x - l)2 + (y - m)2 + (z - n)2 = r 2

  • Substitute for x,y,z and solve for t…

David Luebke 7/30/2014

ray sphere intersection1
Ray-Sphere Intersection
  • Works out as a quadratic equation:

at2 + bt + c = 0

where

a = Dx2 + Dy2 + Dz2

b =2Dx(Ox - l) + 2Dy(Oy - m) + 2Dz(Oz - n)

c = l2 + m2 + n2 + Ox2 + Oy2 + Oz2 - 2(l Ox + m Oy + n Oz + r2)

David Luebke 7/30/2014

ray sphere intersection2
Ray-Sphere Intersection
  • If solving for t gives no real roots: ray does not intersect sphere
  • If solving gives 1 real root r, ray grazes sphere where t = r
  • If solving gives 2 real roots (r1, r2), ray intersects sphere at t = r1& t = r2
    • Ignore negative values
    • Smallest value is first intersection

David Luebke 7/30/2014

ray sphere intersection3
Ray-Sphere Intersection
  • Find intersection point Pi = (xi, yi, zi) by plugging t back into ray equation
  • Find normal at intersection point by subtracting sphere center from Pi and normalizing:
  • When will we need the normal? When not?

David Luebke 7/30/2014

ray polygon intersection
Ray-Polygon Intersection
  • Polygons are the most common model representation
    • Can render in hardware
    • Lowest common denominator
  • Basic approach:
    • Find plane equation of polygon
    • Find point of intersection between ray and plane
    • Does polygon contain intersection point?

David Luebke 7/30/2014

ray polygon intersection1

d

Ray-Polygon Intersection
  • Find plane equation of polygon:ax + by + cz + d = 0
  • Remember how?

N = [a, b, c]

d = N  P1

y

N

P2

P1

x

David Luebke 7/30/2014

ray polygon intersection2
Ray-Polygon Intersection
  • Find intersection of ray and plane:

t = -(aOx + bOy + cOz + d) / (aDx + bDy + cDz)

  • Does polygon contain intersection point Pi ?
    • One simple algorithm:
      • Draw line from Pi to each polygon vertex
      • Measure angles between lines (how?)
      • If sum of angles between lines is 360°, polygon contains Pi
    • Slow — better algorithms available

David Luebke 7/30/2014

ray box intersection
Ray-Box Intersection
  • Often want to find whether a ray hits an axis-aligned box (Why?)
  • One way:
    • Intersect ray with pairs of parallel planes that form box
    • If intervals of intersection overlap, the ray intersects the volume.

David Luebke 7/30/2014

shadow rays
Shadow Rays
  • Simple idea:
    • Where a ray intersects a surface, send a shadow ray to each light source
    • If the shadow ray hits any surface before the light source, ignore light
  • Q: how much extra work is involved?
  • A: each ray-surface intersection now spawns n + 2 rays, n = # light sources
    • Remember: intersections 95% of work

David Luebke 7/30/2014

shadow rays1
Shadow Rays
  • Some problems with using shadow rays as described:
    • Lots of computation
    • Infinitely sharp shadows
    • No semitransparent object shadows

David Luebke 7/30/2014

shadow rays2
Shadow Rays
  • Some problems with using shadow rays as described:
    • Lots of computation
    • Infinitely sharp shadows
    • No semitransparent object shadows

David Luebke 7/30/2014

shadow ray problems too much computation

Light Buffer

Shadow Ray Problems:Too Much Computation
  • Light buffer (Haines/Greenberg, 86)
    • Precompute lists of polygons surrounding light source in all directions
    • Sort each list by distance to light source
    • Now shadow ray need only be intersected with appropriate list!

ShadowRay

Occluding Polys

Current Intersection Point

David Luebke 7/30/2014

shadow rays3
Shadow Rays
  • Some problems with using shadow rays as described:
    • Lots of computation
    • Infinitely sharp shadows
    • No semitransparent object shadows

David Luebke 7/30/2014

shadow ray problems sharp shadows
Shadow Ray Problems:Sharp Shadows
  • Why are the shadows sharp?
  • A: Infinitely small point light sources
  • What can we do about it?
  • A: Implement area light sources
  • How?

David Luebke 7/30/2014

shadow ray problems area light sources
Shadow Ray Problems: Area Light Sources
  • Could trace a conical beam from point of intersection to light source:
  • Track portion of beam blocked by occluding polygons:

30% blockage

David Luebke 7/30/2014

shadow ray problems area light sources1
Shadow Ray Problems:Area Light Sources
  • Too hard! Approximate instead:
  • Sample the light source over its area and take weighted average:

50% blockage

David Luebke 7/30/2014

shadow ray problems area light sources2
Shadow Ray Problems:Area Light Sources
  • Disadvantages:
    • Less accurate (50% vs. 30% blockage)
    • Oops! Just quadrupled (at least) number of shadow rays
  • Moral of the story:
    • Soft shadows are very expensive in ray tracing

David Luebke 7/30/2014

shadow rays4
Shadow Rays
  • Some problems with using shadow rays as described:
    • Lots of computation
    • Infinitely sharp shadows
    • No semitransparent object shadows

David Luebke 7/30/2014

shadow ray problems semitransparent objects
Shadow Ray Problems:Semitransparent Objects
  • In principle:
    • Translucent colored objects should cast colored shadows
    • Translucent curved objects should create refractive caustics
  • In practice:
    • Can fake colored shadows by attenuating color with distance
    • Caustics need backward ray tracing

David Luebke 7/30/2014

speedup techniques
Speedup Techniques
  • Intersect rays faster
  • Shoot fewer rays
  • Shoot “smarter” rays

David Luebke 7/30/2014

speedup techniques1
Speedup Techniques
  • Intersect rays faster
  • Shoot fewer rays
  • Shoot “smarter” rays

David Luebke 7/30/2014

intersect rays faster
Intersect Rays Faster
  • Bounding volumes
  • Spatial partitions
  • Reordering ray intersection tests
  • Optimizing intersection tests

David Luebke 7/30/2014

bounding volumes
Bounding Volumes
  • Bounding volumes
    • Idea: before intersecting a ray with a collection of objects, test it against one simple object that bounds the collection

7

7

5

5

3

3

1

1

8

8

6

6

0

0

9

9

2

2

4

4

David Luebke 7/30/2014

bounding volumes1
Bounding Volumes
  • Hierarchical bounding volumes
    • Group nearby volumes hierarchically
    • Test rays against hierarchy top-down

David Luebke 7/30/2014

bounding volumes2
Bounding Volumes
  • Different bounding volumes
    • Spheres
      • Cheap intersection test
      • Poor fit
      • Tough to calculate optimal clustering
    • Axis-aligned bounding boxes (AABBs)
      • Relatively cheap intersection test
      • Usually better fit
      • Trivial to calculate clustering

David Luebke 7/30/2014

bounding volumes3
Bounding Volumes
  • More bounding volumes
    • Oriented bounding boxes (OBBs)
      • Medium-expensive intersection test
      • Very good fit (asymptotically better)
      • Medium-difficult to calculate clustering
    • Slabs (parallel planes)
      • Comparatively expensive
      • Very good fit
      • Difficult to calculate good clustering

David Luebke 7/30/2014

spatial partitioning
Spatial Partitioning
  • Hierarchical bounding volumes surround objects in the scene with (possibly overlapping) volumes
  • Spatialpartitioning techniques classify all space into non-overlapping portions

David Luebke 7/30/2014

spatial partitioning1
Spatial Partitioning
  • Example spatial partitions:
    • Uniform grid (2-D or 3-D)
    • Octree
    • k-D tree
    • BSP-tree

David Luebke 7/30/2014

uniform grid
Uniform Grid
  • Uniform grid pros:
    • Very simple and fast to generate
    • Very simple and fast to trace rays across (How?)
  • Uniform grid cons:
    • Not adaptive
      • Wastes storage on empty space
      • Assumes uniform spread of data

David Luebke 7/30/2014

octree
Octree
  • Octree pros:
    • Simple to generate
    • Adaptive
  • Octree cons:
    • Nontrivial to trace rays across
    • Adaptive only in scale

David Luebke 7/30/2014

k d trees
k-D Trees
  • k-D tree pros:
    • Moderately simple to generate
    • More adaptive than octrees
  • k-D tree cons:
    • Less efficient to trace rays across
    • Moderately complex data structure

David Luebke 7/30/2014

bsp trees
BSP Trees
  • BSP tree pros:
    • Extremely adaptive
    • Simple & elegant data structure
  • BSP tree cons:
    • Very hard to create optimum BSP
    • Splitting planes can explode storage
    • Simple but slow to trace rays across

David Luebke 7/30/2014

reordering ray intersection tests
Reordering RayIntersection Tests
  • Caching ray hits (esp. shadow rays)
  • Memory-coherent ray tracing

David Luebke 7/30/2014

optimizing ray intersection tests
Optimizing Ray Intersection Tests
  • Fine-tune the math!
    • Share subexpressions
    • Precompute everything possible
  • Code with care
    • Even use assembly, if necessary

David Luebke 7/30/2014

ad