Cs 551 645 introductory computer graphics
This presentation is the property of its rightful owner.
Sponsored Links
1 / 61

CS 551 / 645: Introductory Computer Graphics PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

CS 551 / 645: Introductory Computer Graphics

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 Luebke7/30/2014


Administrivia

Administrivia

  • Assignment 5: Intel okay

David Luebke7/30/2014


Realism

Realism

  • What is not realistic about the following images?

David Luebke7/30/2014


Realism1

Realism?

David Luebke7/30/2014


Realism2

Realism?

David Luebke7/30/2014


Realism3

Realism?

David Luebke7/30/2014


Realism4

Realism?

David Luebke7/30/2014


Realism5

Realism?

David Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/30/2014


Ray casting

Ray Casting

  • An example:

Eyepoint

Screen

Scene

David Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/30/2014


Recursive ray tracing2

Recursive Ray Tracing

David Luebke7/30/2014


Recursive ray tracing3

Recursive Ray Tracing

Pixel

ImagePlane

David Luebke7/30/2014


Recursive ray tracing4

Recursive Ray Tracing

“Direct” Ray To Eye

David Luebke7/30/2014


Recursive ray tracing5

Recursive Ray Tracing

“Indirect” Ray To Eye

David Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/30/2014


Speedup techniques

Speedup Techniques

  • Intersect rays faster

  • Shoot fewer rays

  • Shoot “smarter” rays

David Luebke7/30/2014


Speedup techniques1

Speedup Techniques

  • Intersect rays faster

  • Shoot fewer rays

  • Shoot “smarter” rays

David Luebke7/30/2014


Intersect rays faster

Intersect Rays Faster

  • Bounding volumes

  • Spatial partitions

  • Reordering ray intersection tests

  • Optimizing intersection tests

David Luebke7/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 Luebke7/30/2014


Bounding volumes1

Bounding Volumes

  • Hierarchical bounding volumes

    • Group nearby volumes hierarchically

    • Test rays against hierarchy top-down

David Luebke7/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 Luebke7/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 Luebke7/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 Luebke7/30/2014


Spatial partitioning1

Spatial Partitioning

  • Example spatial partitions:

    • Uniform grid (2-D or 3-D)

    • Octree

    • k-D tree

    • BSP-tree

David Luebke7/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 Luebke7/30/2014


Octree

Octree

  • Octree pros:

    • Simple to generate

    • Adaptive

  • Octree cons:

    • Nontrivial to trace rays across

    • Adaptive only in scale

David Luebke7/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 Luebke7/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 Luebke7/30/2014


Reordering ray intersection tests

Reordering RayIntersection Tests

  • Caching ray hits (esp. shadow rays)

  • Memory-coherent ray tracing

David Luebke7/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 Luebke7/30/2014


  • Login