Last Time Fundamentals of Rendering - Radiometry /...

86
© Machiraju/Zhang/Möller Last Time Fundamentals of Rendering - Radiometry / Photometry 1

Transcript of Last Time Fundamentals of Rendering - Radiometry /...

Page 1: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Zhang/Möller

Last Time

Fundamentals of Rendering - Radiometry / Photometry

1

Page 2: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Radiometry

• Science of measuring light• Analogous science called photometry is

based on human perception.

Page 3: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Radiometry - Quantities• Energy Q• Power Φ - J/s or W

– Energy per time (radiant power or flux)• Irradiance E and Radiosity B - W/m2

– Power per area

• Intensity I - W/sr– Power per solid angle

• Radiance L - W/sr/m2

– Power per projected area and solid angle

Page 4: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Radiant Energy - Q

• Think of photon as carrying quantum of energy hc/λ = hf (photoelectric effect)– c is speed of light– h is Planck’s constant– f is frequency of radiation

• Wave packets• Total energy, Q, is then energy of the

total number of photons• Units - joules or eV

Page 5: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Power / Flux - Φ

• Flow of energy (important for transport)• Also - radiant power or flux.• Energy per unit time (joules/s = eV/s)• Unit: W - watts• Φ = dQ/dt

Page 6: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

I =dΦdω

Intensity I

• Flux density per unit solid angle

• Units – watts per steradian• “intensity” is heavily overloaded. Why?

– Power of light source– Perceived brightness

Page 7: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

u =dΦdA

dA

Radiant Flux Area Density

• Area density of flux (W/m2)• u = Energy arriving/leaving a surface per

unit time interval per unit area• dA can be any 2D surface in space

Page 8: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Irradiance E

• Power per unit area incident on a surface

E =dΦdA

Page 9: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

Radiosity or Radiant Exitance B

• Power per unit area leaving surface• Also known as Radiosity• Same unit as irradiance, just direction

changes

B =dΦdA

Page 10: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf

L =d2Φ

dAp dω

L =d2Φ

dAcosθdω

Radiance L

• Power per unit projected area per unit solid angle.

• Units – watts per (steradian m2)• We have now introduced projected area,

a cosine term.

Page 11: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf11

Radiometric QuantitiesPhysicaldescription

Definition Symbol Units Radiometric quantity (also “spectral *” [*/m])

Energy Qe [J=Ws] Joule Radiant energy

Power / flux dQ/dt Φe [W=J/s] Radiant power / flux

Flux density dQ/dAdt Ee [W/m2] Irradiance

Flux density dQ/dAdt Me= Be [W/m2] Radiosity

Angular flux density

dQ/dAdωdt Lv [W/m2sr] Radiance

Intensity dQ/dωdt Iv [W/sr] Radiant intensity

Page 12: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Lastra/Machiraju/Möller/Weiskopf12

Photometric Quantities

Quantities weighted by luminous efficiency function

Physicaldescription

Definition Symbol Units Photometric quantity (also “spectral *” [*/m])

Energy Qv [talbot] Luminous energy

Power / flux dQ/dt Φv [lm (lumens) = talbot/s]

Luminous power / flux

Flux density dQ/dAdt Ev [lux= lm/m2] Illuminance

Flux density dQ/dAdt [Mv=] Bv [lux] Luminosity

Angular flux density

dQ/dAΦdωdt Lv [lm/m2sr] Luminance

Intensity dQ/dωdt Iv [cd (candela)

= lm/sr]

Radiant / luminous intensity

Page 13: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Ray Intersection AccelerationImage Synthesis

Mike Phillips Torsten Möller

Page 14: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Reading

• “Physically Based Rendering” by Pharr&Humphreys– Chapter 2 - rays and transformations– Chapter 3 - shapes – Chapter 4 - intersections and acceleration

• “An Introduction to Ray tracing” by Glassner

Page 15: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Topics today

• Review of ray-tracing• acceleration approaches

– pbrt– Object-space– World-space

15

Page 16: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Review of ray-tracing

16

Page 17: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Zhang/Möller17

First imaging algorithm• Directly derived from the synthetic

camera model– Follow rays of light from a point light

source – Determine which rays enter

the lens of the camera through the imaging window

– Compute color of projection• Why is this not a good idea?

Page 18: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Zhang/Möller18

Ray tracing

• When following light from a light source, many (reflected) rays do not intersect the image window and do not contribute to the scene

Reverse the process Cast one ray per pixel from the eye and shoot it into the scene

raysreflected ray shadow

ray

refracted ray

Image plane

eye pixel

Page 19: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Zhang/Möller19

Ray tracing: the basics• A point on an object may be illuminated

by– Light source directly – through shadow ray– Light reflected off an object – through

reflected ray– Light transmitted through a transparent

object – through refracted ray reflected ray shadow

ray

refracted ray

Image plane

eye pixel

Page 20: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Zhang/Möller20

Ray tracing: the algorithmfor each pixel on screen   determine ray from eye through pixel   if ray shoots into infinity, return a background color if ray shoots into light source, return light color appropriately find closest intersection of ray with an object   cast off shadow ray (towards light sources) if shadow ray hits a light source, compute light contribution according to some illumination model cast reflected and refracted ray, recursively calculate pixel color contribution return pixel color after some absorption

Most expensive

Page 21: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

• Shoot a ray through each pixel;• Find first object intersected by ray

• Compute ray. (More linear algebra.)• Compute ray-object intersection.• Spawn more rays for reflection and refraction

Image plane

Eye

Ray Tracing

Page 22: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

pbrt acceleration architecture

22

Page 23: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Ray Tracing Architecture

Shape

Scene

Camera

Image

Material

Lights

intersect

Parse

Shadow, reflection, refraction rays

Eye raysRays

Surf

Primitives

Sample Generator

Film

Integrator

LRT

Radiance

TIFF

Page 24: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Optimizing Ray Tracing• Main computation load is ray-object

intersection• 50-90% of run time when profiled• Test for possible intersection before

committing to computing intersections

Page 25: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller25

Acceleration Strategies• Fast/efficient intersection computation (single ray-

single object)– Not much leeway for acceleration

• Test fewer rays– Trace fewer primary rays– Fewer secondary rays– Fewer intersection computations

• Intersection with “thick” rays– Cone tracing– Beam tracing

• Avoid computations with far away objects– Space partitioning– Direction partitioning

Page 26: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Shape

Material

Lights

Primitives

Pbrt and Intersections• Primitive base class

• Shapes are subclasses of primitive

• Methods– WorldBound– CanIntersect– Intersect– IntersectP– Refine

• First four return Intersection structures

• Last returns Primitives

Page 27: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Intersection Geometry• Shape independent representation for

intersections• DifferentialGeometry Intersection::dg

– Point P– Normal N– Parametric (u,v)– Partial derivatives

Tangents: dpdu, dpdv change in normal: dndu, dndv

Page 28: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Object-Based Acceleration

• Reduce the intersection time for individual objects

• Objects can be complex!– must intersect all triangles

• But… we can quickly estimate if a ray could intersect the object

28

Page 29: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Reduce ray path

Bounding Volumes• Surround object with a simple volume• Test ray against volume first• Test object-space or world-space bound? (pros and

cons)• Cost model - N*cb + pi*N*co – N (number of rays) is given

pi – fraction of rays intersecting bounding volume– Minimize cb (cost of intersecting bounding volume) and co

(cost of intersecting object)– Reduce ray path

• Bounding sphere– Difficult to compute good one– Easy to test for intersection

• Bounding box– Easy to compute for given object– More difficult to intersect

Page 30: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Pbrt’s Bounding Boxes• Virtual BBox ObjectBound() const=0;• Virtual BBox WorldBound() const {

return ObjectToWorld(ObjectBound()); }

• Bool BBox::IntersectP(const Ray &ray, float *hitt0, float *hitt1) const { }

Page 31: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Box• Compute min/max for x,y,z• 3 options

– Compute in world space• Chance of ill fitting b-box

– Compute in object space and transform w/ object• Object space b-box probably better fit than world space• Need to intersect ray with arbitrary hexagon in world sp.

– Compute in object space and test in object space• Inverse transform ray into object space

Page 32: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Box

• Treat BB as three perpendicular slabs• Clip the ray against each slab

– if the clipped region is valid, then intersection!

32

Page 33: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Box

• Find tnear and tfar for each pair of parallel planes. See PBRT p.194.

33

Page 34: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Sphere

• Find min/max points in x,y,z -> 3 pairs• Use maximally separated pair to define

initial sphere• For each point

– If point is outside of current sphere, increase old sphere to just include new point

Page 35: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

P

P

C

R

rad P

P

newC

R

newrad

P

P

C

R

rad

newrad = (R+rad)/2

P

P

C

RnewC

newrad

newC = P+(newrad/R)(C-P)

Page 36: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Sphere

• Intersection is very fast!– Does not need to be axis aligned

36

http://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-sphere-intersection

Page 37: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Slabs• More complex to compute• Better fit of object• Use multiple pairs of parallel planes to bound object• Can add more slabs to get tighter fit

© 2004 Pharr, Humphreys

Page 38: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Slabs

• Intersection is a generalization of the bounding box computation.

• Axis-aligned optimizations aren’t possible.• Potentially more slabs• In practice, rarely used

38

Page 39: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

More effort to compute, better fit

Approximate Convex Hull• Find highest vertex• Find plane through vertex parallel to ground plane• Find second vertex that makes minimum angle with first

vertex and up vector• Find third vertex that makes plane whose normal makes

minimum angle with up vector

© 1989 Glassner

Page 40: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Convex Hull

• Intersection is fairly complex• Use a sidedness test for all planes• Rarely useful

40

Page 41: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Bounding Volume Hierarchies• Create tree of bounding volumes• Children are contained within parent• Creation preprocess

– From model hierarchy– Automatic clustering

• Each object only appears in one leaf volume.

Page 42: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Tree Organization

BVH - Issues

• Subtrees overlap• Does not contain all objects it overlaps • Balance

Page 43: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

BVH - Construction

• Take the bounding volume of the scene (or complex object)

• If too many primitive exist in the volume, create child volumes (split the volume)

• Recurse until the end criteria is met

43

Page 44: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Splitting strategies• Choose the axis, that has

the largest spread of midpoints– Split based on the midpoint

of the centroids of one axis– Split in equal amounts

• Problem - overlaps

44

Page 45: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

The Surface Area Heuristic

• cost of intersecting all N primitives:

• cost of splitting into groups NA+NB = N

• ttrav - traversal time of node• pA / pB - prob that ray passes through

each child node45

NX

i=1

tisect(i)

Page 46: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

The Surface Area Heuristic

• assume, that tisect(i) is the same for all primitives• for convex objects A contained in B, the

probability of a ray intersecting A if it intersects B is:

• find the axis with the minimal SAH cost

46

p(A|B) =sAsB

Page 47: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller47

Page 48: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

BVH• Intersection

intersect(node,ray,hits) { if( intersectp(node->bound,ray) if( leaf(node) ) intersect(nodeprims,ray,hits) else for each child intersect(child,ray,hits) } Return the closest of all hits !

48

Page 49: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Spatial Subdivision

• Subdivide world space• Intersectable objects are place in spatial

“voxels”• A ray is traversed through the subdivisions

in the order of near to far• No overlapping voxels• …but objects may be in multiple voxels

49

Page 50: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids

• Simplest spatial subdivision• Very easy to create and traverse• Good, but not optimal performance

– much better than brute force

50

Page 51: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids • Preprocess scene• Find bounding box

Page 52: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids• Preprocess scene• Find bounding box• Determine grid

resolution

Page 53: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids• Preprocess scene• Find bounding box• Determine grid

resolution• Place object in cell

if its bounding box overlaps the cell

Page 54: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

AABB/Voxel Intersection• Easy to compute• Compute which voxel contains each vertex• All voxels between the min and max voxels

contain the AABB

54

Page 55: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids• Preprocess scene• Find bounding box• Determine grid

resolution• Place object in cell

if its bounding box overlaps the cell

• Check that object overlaps cell (expensive!)

Page 56: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Triangle/Voxel overlapSearch for a separating axis.1. [3 tests] e0 = (1, 0, 0), e1 = (0, 1, 0), e2 = (0, 0, 1) (the normals of the AABB). Test the AABB against the minimal AABB around the triangle.2. [1 test] n, the normal of ∆. We use a fast plane/AABB overlap test [5, 6], which only tests the two diagonal vertices, whose direction is most closely aligned to the normal of the triangle.3. [9 tests] aij = ei × fj , i, j ∈ {0, 1, 2}, where f0 = v1 − v0, f1 = v2 − v1, and f2 = v0 − v2. These tests are very similar and we will only show the derivation of the case where i = 0 and j = 0 (see below).

56

Tomas Akenine-Möller. 2005. Fast 3D triangle-box overlap testing. In ACM SIGGRAPH 2005 Courses (SIGGRAPH '05), John Fujii (Ed.). ACM, New York, NY, USA, , Article 8 . DOI=http://dx.doi.org/10.1145/1198555.1198747

Page 57: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Add Sorting• If objects/voxels/cells are processed in

front-to-back sorted order along the ray, stop processing when first intersection is detected

Page 58: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Spatial Subdivision

• Identifying voxels hit is like a line drawing algorithm

Page 59: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grids• Preprocess scene• Traverse grid

– 3D line = 3D-DDA

Page 60: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Amanatides & Woo Algorithm

• J. Amanatides and A. Woo, "A Fast Voxel Traversal Algorithm for Ray Tracing", Proc. Eurographics '87, Amsterdam, The Netherlands, August 1987, pp 1-10.

Page 61: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

A&W AlgorithmX/Y/Z: Current voxel number.

stepX/Y/Z: 1 or -1. Is the slope +/-?

tMaxX/Y/Z: distance to cross next vert/horiz/depth plane.

tDeltaX/Y/Z: distance along ray to travel one whole width/height/depth of a voxel

Page 62: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

Uniform Grid

Shirley P., Marschner S. “Fundamentals of Computer Graphics”

Page 63: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

A&W Algorithm Results

• Rendering time for different levels of subdivision

Page 64: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Objects Across Multiple Voxels• Mailboxes

– mailboxes eliminate redundant intersection tests– objects have mailboxes – mailbox contains ID of last ray that intersected it– check ray against objects last tested ray ID

• Object splitting– Split objects at voxel

boundaries– Sub-objects only appear

in one voxel

© 1989 Glassner

Page 65: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grid• Complexity?• Problems?

65

Page 66: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Uniform Grid

• Increase resolution– Increases traversal cost– May only need higher resolution in a small area

66

Page 67: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Hierarchical Data structures

67

http://www.keithlantz.net/2013/04/kd-tree-construction-using-the-surface-area-heuristic-stack-based-traversal-and-the-hyperplane-separation-theorem/

Page 68: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Comparison

Scheme Spheres (time)

Rings (time)

Tree (time)

Uniform grid D=1 244 129 1517

D=20 38 83 781

Hierarchical grid 34 116 34

• See “A Proposal for Standard Graphics Environments”, IEEE Computer Graphics and Applications, vol. 7, no. 11, November 1987, pp. 3-5

Page 69: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Hierarchical Spatial Subdivision• Recursive subdivision of space• 1-1 Relationship between scene points and leaf nodes• Solves the lack-of-adaptivity problem• DDA works• Effective in practice

140.129.20.249/~jmchen/compg/slides/Octree%20Traversal.ppt

Page 70: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Creating Spatial Hierarchiesinsert(node,prim) { if( overlap(node->bound,prim) )

if( leaf(node) ) {

if( node->nprims > MAXPRIMS && node->depth < MAXDEPTH ) {

subdivide(node); foreach child in node

insert(child,prim)

} else list_insert(node->prims,prim);

} else

foreach child in node

insert(child,prim) }

The interesting bit

Page 71: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

Oct-Tree

Hughes J., et al. “Computer Graphics Principles and Practice”

Page 72: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Oct-tree• Similar to a binary tree• Each node has 8 children• Always split the node in the middle of each axis• Allows fast skipping of empty space• Better efficiency than uniform grid, but still not

the best• Traversal is still relatively easy• Complexity?

72

Page 73: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Oct-tree• Traversal can be implemented similar to 3D-DDA

– Use smallest voxel as a basis, and skip multiple while inside an internal node

• Top-down approach– Intersect root and find intersected children

recursively– http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.987

• Bottom-up approach– Find first leaf voxel intersected. Use neighbour

finding to find next voxels

73

Page 74: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Binary Space Partitioning (BSP)

• General case uses arbitrary splitting planes• Space is partitioned into “half spaces”• All “bins” are convex• Difficult to build, traversal isn’t too bad• Generally not used for rendering (maybe for

physics simulation)• See: T. Ize, I. Wald and S. G. Parker, "Ray tracing with the BSP tree," Interactive

Ray Tracing, 2008. RT 2008. IEEE Symposium on, Los Angeles, CA, 2008, pp. 159-166. doi: 10.1109/RT.2008.4634637

74

Page 75: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller KD tree

Octree

BSP tree

Page 76: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-Tree

• A binary tree in K dimensions• Split one dimension at a time• Each node may only have 2 children• Easy to build and traverse• How to choose which dimension to split?• How to choose where to split?

76

Page 77: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

77

Page 78: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

78

• Use SAH to choose the split location. Same as BVH

Page 79: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

79

Page 80: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

• Traversal (stack) intersect with scene bounding box while no intersection && in the scene if node is a leaf intersect with all contained primitives else compute near and far child intersect with near child, push far child to a stack if no intersection, then pop a node from the stack continue until intersection, or exit the scene

80

Page 81: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller81

Page 82: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree• Other traversal cases:

– ray traverses the children in reverse order– ray starts inside the node– ray only intersects one child

• Fast traversal is very important– it will happen frequently– recursive is possible, but directly using a stack

can be faster• Complexity?

82

Page 83: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

• Possible improvements?• Stackless traversal!

– each voxel contains pointers to it’s neighbours– traverse the tree directly, without using a stack– avoid moving up and down the tree

unnecessarily– costs additional memory and precompute time– very good for highly parallel (GPU)

implementations83

Page 84: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

KD-tree

84

Popov, S., Günther, J., Seidel, H.-P. and Slusallek, P. (2007), Stackless KD-Tree Traversal for High Performance GPU Ray Tracing. Computer Graphics Forum, 26: 415–424. doi:10.1111/j.1467-8659.2007.01064.x

Page 85: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller

Final Thoughts

• Acceleration structures have a HUGE influence on performance

• In practice BVH and KD-tree have similar performance

• Optimizations exist for both• Memory organization can have a big

performance impact. Especially for parallel computing

85

Page 86: Last Time Fundamentals of Rendering - Radiometry / Photometryvda.univie.ac.at/Teaching/ImageSynthesis/16w/LectureNotes/02... · for each pixel on screen determine ray from eye through

© Machiraju/Möller86

http://www.keithlantz.net/2013/04/kd-tree-construction-using-the-surface-area-heuristic-stack-based-traversal-and-the-hyperplane-separation-theorem/