cs 551 651 advanced computer graphics n.
Skip this Video
Download Presentation
CS 551/651: Advanced Computer Graphics

Loading in 2 Seconds...

play fullscreen
1 / 44

CS 551/651: Advanced Computer Graphics - PowerPoint PPT Presentation

  • Uploaded on

CS 551/651: Advanced Computer Graphics. Advanced Ray Tracing Radiosity. Administrivia. Quiz 1: Tuesday, Feb 20 Yes, I’ll have your homework graded by then (somehow) Normal written exam (oral later). Recap: Distributed Ray Tracing.

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

PowerPoint Slideshow about 'CS 551/651: Advanced Computer Graphics' - clinton-sullivan

Download Now 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 651 advanced computer graphics

CS 551/651: Advanced Computer Graphics

Advanced Ray Tracing


David Luebke 111/17/2014

  • Quiz 1: Tuesday, Feb 20
    • Yes, I’ll have your homework graded by then (somehow)
    • Normal written exam (oral later)

David Luebke 211/17/2014

recap distributed ray tracing
Recap: Distributed Ray Tracing
  • Distributed ray tracing: an elegant stochastic approach that distributes rays across:
    • Pixel for antialiasing
    • Light sourcefor soft shadows
    • Reflection function for soft (glossy) reflections
    • Time for motion blur
    • Lens elements for depth of field
  • Cook: 16 rays suffice for all of these

David Luebke 311/17/2014

recap backwards ray tracing
Recap: Backwards Ray Tracing
  • Two-pass algorithm:
    • Rays are cast from light into scene
    • Rays are cast from the eye into scene, picking up illumination showered on the scene in the first pass
  • Backwards ray tracing can capture:
    • Indirect illumination
    • Color bleeding
    • Caustics

David Luebke 411/17/2014

recap backwards ray tracing1
Recap: Backwards Ray Tracing
  • Arvo: illumination mapstile surfaces with regular grids, like texture maps
    • Shoot rays outward from lights
    • Every ray hit deposits some of its energy into surface’s illumination map
      • Ignore first generation hits that directly illuminate surface (Why?)
    • Eye rays look up indirect illumination using bilinear interpolation

David Luebke 511/17/2014

recap radiosity
Recap: Radiosity
  • Ray tracing:
    • Models specular reflection easily
    • Diffuse lighting is more difficult
    • View-dependent, generates a picture
  • Radiosity methods explicitly model light as an energy-transfer problem
    • Models diffuse interreflection easily
    • But only diffuse; no shiny (specular) surfaces
    • View-independent, generates a 3-D model

David Luebke 611/17/2014

recap radiosity1
Recap: Radiosity
  • Basic idea: represent surfaces in environment as many discrete patches
    • A patch, or element, is a polygon over which light intensity is constant
    • Model light transfer between patches as a system of linear equations
    • Solve this system for the intensity at each patch
    • Solve for R,G,B intensities; get color at each patch
    • Render patches as colored polygons in OpenGL

David Luebke 711/17/2014

recap fundamentals
Recap: Fundamentals
  • Definition:
    • The radiosity of a surface is the rate at which energy leaves the surface
      • Radiosity = rate at which the surface emits energy + rate at which the surface reflects energy
  • Simplifying assumptions
    • Environment is closed
    • All surfaces have Lambertian reflectance
    • Surface patches emit and reflect light uniformly over their entire surface

David Luebke 811/17/2014

  • For each surface i:

Bi = Ei + i Bj Fji(Aj / Ai)


Bi, Bj= radiosity of patch i, j

Ai, Aj= area of patch i, j

Ei= energy/area/time emitted by i

i = reflectivity of patch i

Fji = Form factor from j to i

David Luebke 911/17/2014

form factors
Form Factors
  • Form factor: fraction of energy leaving the entirety of patch i that arrives at patch j, accounting for:
    • The shape of both patches
    • The relative orientation of both patches
    • Occlusion by other patches
  • We’ll return later to the calculation of form factors

David Luebke 1011/17/2014

form factors1
Form Factors
  • Some examples…

Form factor:

nearly 100%

David Luebke 1111/17/2014

form factors2
Form Factors
  • Some examples…

Form factor:

roughly 50%

David Luebke 1211/17/2014

form factors3
Form Factors
  • Some examples…

Form factor:

roughly 10%

David Luebke 1311/17/2014

form factors4
Form Factors
  • Some examples…

Form factor:

roughly 5%

David Luebke 1411/17/2014

form factors5
Form Factors
  • Some examples…

Form factor:

roughly 30%

David Luebke 1511/17/2014

form factors6
Form Factors
  • Some examples…

Form factor:

roughly 2%

David Luebke 1611/17/2014

form factors7
Form Factors
  • In diffuse environments, form factors obey a simple reciprocity relationship:

Ai Fij = Ai Fji

  • Which simplifies our equation:Bi = Ei + i Bj Fij
  • Rearranging to:Bi - i Bj Fij = Ei

David Luebke 1711/17/2014

form factors8
Form Factors
  • So…light exchange between all patches becomes a matrix:
  • What do the various terms mean?

David Luebke 1811/17/2014

form factors9
Form Factors

1 - 1F11 - 1F12 … - 1F1n B1E1

- 2F21 1 - 2F22 … - 2F2n B2E2

. . … . . .

. . … . . .

. . … . . .

- pnFn1- nFn2 … 1 - nFnn Bn En

  • Note: Ei values zero except at emitters
  • Note: Fii is zero for convex or planar patches
  • Note: sum of form factors in any row = 1 (Why?)
  • Note: n equations, n unknowns!

David Luebke 1911/17/2014

  • Now “just” need to solve the matrix!
    • W&W: matrix is “diagonally dominant”
    • Thus Guass-Siedel must converge (what’s that?)
  • End result: radiosities for all patches
  • Solve RGB radiosities separately, color each patch, and render!
  • Caveat: for rendering, we actually color vertices, not patches (see F&vD p 795)

David Luebke 2011/17/2014

  • Q: How many form factors must be computed?
  • A: O(n2)
  • Q: What primarily limits the accuracy of the solution?
  • A: The number of patches

David Luebke 2111/17/2014

  • So, we know the basic radiosity algorithm
    • Represent light transfer as a matrix
    • Solve the matrix to get radiosity (=color) per patch
  • Next topics:
    • Evaluating form factors
    • Progressive radiosity: viewing an approximate solution early
    • Hierarchical radiosity: increasing patch resolution on an as-needed basis

David Luebke 2211/17/2014

form factors10
Form Factors
  • Calculating form factors is hard
    • Analytic form factor between two polygons in general case: open problem till last few years
  • Q: So how might we go about it?
  • Hint: Clearly form factors are related to visibility: how much of patch j can patch i “see”?

David Luebke 2311/17/2014

form factors hemicube
Form Factors: Hemicube
  • Hemicube algorithm: Think Z-buffer
    • Render the model onto a hemicubeas seen from the center of patch i
    • Store item IDs instead of color
    • Use Z-buffer to resolve visibility
    • See W&W p 278
  • Q: Why hemicube, not hemisphere?

David Luebke 2411/17/2014

form factors hemicubes
Form Factors: Hemicubes
  • Advantages of hemicubes
    • Solves shape, size, orientation, and occlusion problems in one framework
    • Can use hardware Z-buffers to speed up form factor determination (How?)

David Luebke 2511/17/2014

form factors hemicubes1
Form Factors: Hemicubes
  • Q: What are some disadvantages of hemicubes?
    • Aliasing! Low resolution buffer can’t capture actual polygon contributions very exactly
      • Causes “banding” near lights (plate 41)
    • Actual form factor is over area of patch; hemicube samples visibility at only center point on patch (So?)

David Luebke 2611/17/2014

form factors ray casting
Form Factors: Ray Casting
  • Idea: shoot rays from center of patch in hemispherical pattern

David Luebke 2711/17/2014

form factors ray casting1
Form Factors: Ray Casting
  • Advantages:
    • Hemisphere better approximation than hemicube
      • More even sampling reduces aliasing
    • Don’t need to keep item buffer
    • Slightly simpler to calculate coverage

David Luebke 2811/17/2014

form factors ray casting2
Form Factors: Ray Casting
  • Disadvantages:
    • Regular sampling still invites aliasing
    • Visibility at patch center still isn’t quite the same as form factor
    • Ray tracing is generally slower than Z-buffer-like hemicube algorithms
      • Depends on scene, though
      • Q: What kind of scene might ray tracing actually be faster on?

David Luebke 2911/17/2014

form factors11
Form Factors
  • Source-to-vertex form factors
    • Calculating form factors at the patch vertices helps address some problems:

for every patch vertex

for every source patch

sample source evenly with rays

visibility = % rays that hit

    • Q: What are the problems with this approach?

David Luebke 3011/17/2014

form factors12
Form Factors
  • Summary of form factor computation
    • Analytical:
      • Expensive or impossible (in general case)
    • Hemicube
      • Fast, especially using graphics hardware
      • Not very accurate; aliasing problems
    • Ray casting
      • Conceptually cleaner than hemicube
      • Usually slower; aliasing still possible

David Luebke 3111/17/2014

  • More patches  better results
  • Problem: # form factors grows quadratically with # patches
  • Substructuring: adaptively subdivide patches into elements where high radiosity gradient is found

David Luebke 3211/17/2014

  • Elements are second-class patches:
    • When a patch is subdivided, form factors are computed from the elements to other patches
    • But form factors from the other patches to the elements are not computed
      • However, the form factors from other patches to the subdivided patch are updated using more accurate area-weighted average of elements

David Luebke 3311/17/2014

  • Elements vs. patches, cont.
    • Elements “gather” radiosity from other patches
    • But those other patches only gather radiosity from the “parent” patch, not the individual elements
    • So an element’s contribution to other patches is approximated coarsely by it’s patch’s radiosity

David Luebke 3411/17/2014

  • Bottom line:
    • Substructuring allows subpatch radiosities to be computed without changing the size of the form-factor matrix
    • Show examples:
      • W&W plate 38, F&vD plate III.21
    • Note: texts aren’t clear about adaptive subdivision vs substructuring

David Luebke 3511/17/2014

progressive radiosity
Progressive Radiosity
  • Good news: iterative solver of radiosity matrix will converge
  • Bad news: can take a longtime
  • Progressive radiosity: reorder computation to allow viewing of partial results

David Luebke 3611/17/2014

progressive radiosity1
Progressive Radiosity
  • Radiosity as described uses Gauss-Seidel iterative solver
    • Must do an entire iteration to get an estimate of patch radiosities
    • Must precompute and store all O(n2) form factors

David Luebke 3711/17/2014

progressive radiosity2
Progressive Radiosity

1 - 1F11 - 1F12 … - 1F1n B1E1

- 2F21 1 - 2F22 … - 2F2n B2E2

. . … . . .

. . … . . .

. . … . . .

- pnFn1- nFn2 … 1 - nFnn Bn En

  • Evaluating row i estimates radiosity of patch i based on all other patches
  • We say the patch gathers light from the environment

David Luebke 3811/17/2014

progressive radiosity3
Progressive Radiosity
  • Progressive radiosity shoots light from a patch into the environment:

Bjdue to Bi = j Bj Fjij rather thanBidue to Bj = i Bj Fijj

  • Given an estimate of Bi, evaluating this equation estimates patch i’s contribution to the rest of the scene

David Luebke 3911/17/2014

progressive radiosity4
Progressive Radiosity
  • A problem: evaluating the equationBjdue to Bi = j Bj Fjij requires knowing Fji for each patch j
  • Determining these values requires a hemicube computation per patch
  • Use reciprocity relationship to getBjdue to Bi = j Bj Fij(Ai/Aj)j

David Luebke 4011/17/2014

progressive radiosity5
Progressive Radiosity
  • Now evaluation requires only a single hemicube about patch i
    • Compute, use, and discard form factors
    • Drastically reduces total storage!
  • Reorder radiosity computation:
    • Pick patch w/ highest estimated radiosity
      • Shoot to all other patches
      • Update their estimates
    • Pick new “brightest” patch and repeat

David Luebke 4111/17/2014

progressive radiosity6
Progressive Radiosity
  • We can look at the scene after every iteration through this loop
  • Q: How will it look after 1 loop?
  • Q: 2 loops?
  • Q: If m = # of light sources, how will it look after m loops? After 2m loops?

David Luebke 4211/17/2014

progressive radiosity7
Progressive Radiosity
  • Subtleties:
    • Pick patch with most energy to shoot
      • Energy = radiosity * area = Bj Ai
    • A patch may be selected to shoot again after new light has been shot to it
    • So don’t shoot Bj , shoot Bj, the amount of radiosity patch i has received since it was last shot

David Luebke 4311/17/2014

the end
The End

David Luebke 4411/17/2014