280 likes | 392 Vues
This course covers the fundamentals of radiosity, a crucial technique in computer graphics for modeling light transfer between surfaces. Key topics include the radiosity equation, form factors, and algorithms such as hemicubes and ray casting. Students will learn how to calculate the intensity of light at various patches using linear equations. Additionally, the course addresses advantages and challenges of different methods, including accuracy issues like aliasing. The lecture aims to enhance understanding of energy emission and reflection in 3D environments, vital for realistic rendering in graphics applications.
E N D
CS 551 / 645: Introductory Computer Graphics David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551 David Luebke 10/22/2014
Administrivia • Course evaluations on the web • Help make this class better next semester • Looking into alternative location for final • Who wants to move? David Luebke 10/22/2014
The Plan • Today • Finish up radiosity • Recap up till midterm • Tomorrow • Recap since midterm David Luebke 10/22/2014
Recap: Radiosity Fundamentals • Model light transfer between patches as a system of linear equations • Solving this system gives the intensity at each patch • Simplifying assumptions: • Environment is closed • All surfaces are Lambertian (perfectly diffuse) reflectors • Solving for R, G, B intensities produces color at each patch • Render patches as colored polygons David Luebke 10/22/2014
Recap: Radiosity Fundamentals • Radiosity is the rate at which energy leaves a surface • Radiosity = rate at which the surface emits energy + rate at which the surface reflects energy • Notice: previous methods distinguish light sources from surfaces • In radiosity all surfaces can emit light • Thus: all emitters inherently have area David Luebke 10/22/2014
Recap: The Radiosity Equation • For each patch i: Bi = Ei + i Bj Fji(Aj / Ai) where 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 jto i David Luebke 10/22/2014
Recap: 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 David Luebke 10/22/2014
Recap: The (Expanded) Radiosity Equation 1 - 1F11 - 1F12 … - 1F1n B1E1 - 2F21 1 - 2F22 … - 2F2n B2E2 . . … . . . . . … . . . . . … . . . - pnFn1- nFn2 … 1 - nFnn Bn En • Note: Eivalues 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, nunknowns! David Luebke 10/22/2014
Recap: Evaluating Form Factors (Hemicubes) • 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 • 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 10/22/2014
Recap: Hemicubes • 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 David Luebke 10/22/2014
Form Factors: Ray Casting • Idea: shoot rays from center of patch in hemispherical pattern David Luebke 10/22/2014
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 10/22/2014
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 • What kind of scene might ray tracing actually be faster on? David Luebke 10/22/2014
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 • What are the problems with this approach? David Luebke 10/22/2014
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 10/22/2014
Radiosity Continued • Lots more to know about radiosity: • Progressive radiosity: viewing an approximate solution early • Hierarchical radiosity: increasing patch resolution on an as-needed basis David Luebke 10/22/2014
Review for Exam • Quick recap of lecture topics for exam… • Display technologies • Vector versus raster: what’s a pixel? • CRT (black & white, color): shadow mask, phosphors, electron guns • LCD: polarizing crystals that line up under an E-field, losing their polarization and acting as light valves • Pros and cons of different technologies • Framebuffers • Fast, dual-ported memory bank for holding pixels • True-color (24-bit) vs Pseudocolor (8-bit indexed) vs hi-color (16-bit, 6-6-4 ?) David Luebke 10/22/2014
Review For Exam • Color • Basic physiology: retina, rods, cones • Different types of cones: L, M, S • Metamers: perceptually identical color senstions caused by different spectra • CIE Color Space (X, Y, Z) • Color mix-and-match experiment • Hypothetical light sources X, Y, Z (why?) • Three dimensional shape, often simplified to 2-D gamut • Other color spaces (RGB, HSV) • Gamma correction: linearize non-linear response of display device David Luebke 10/22/2014
Review For Exam • Rasterizing lines • A methodology in optimizing code • Simplest way: solve slope-intercept equation • Check slope and step in X or Y • DDA: find incremental change per inner loop • Bresenham: take advantage of rational slope, endpoints to optimize with integer arithmetic David Luebke 10/22/2014
Review For Exam • Rasterizing polygons • Can break into triangles for convenience • Trivial for convex polys, difficult for complex polys • Edge equations: • Evaluate equation of edge (linear expression) per pixel • If all three edges are positive, light pixel • Can evaulate R,G,B, Z as linear expressions too • Hardware: SIMD array • Software: bounding box • Issues: ensuring consistent edge equations, numerical stability when evaluating edge equations David Luebke 10/22/2014
Review For exam • Rasterizing triangles: edge walking • Find edges (DDA) • Interpolate colors down edges • Interpolate colors across scanlines • Fast: touches only pixels necessary • Difficult: lots of special cases, fractional offsets, precision worries • Rasterizing triangles: general issues • Need consistent rules about pixels right on edge David Luebke 10/22/2014
Review For Test • Can also rasterize general polygons • Active edge table: sort edges by ymin and ymax, then by x intersection w/ scanline • March up scanline by scanline, filling pixels according to parity rule • Hard to interpolate color, etc. correctly -- not planar in color space, in general David Luebke 10/22/2014
Review For Test • Clipping • Want only portions of lines, polygons in viewport • Cohen-Sutherland line clipping: binary outcodes • Polygon clipping is harder • Triangle in, 7-gon out • Concave polyon in, 2 polygons out • Sutherland-Hodgman: clip against view planes in succession • In-out rules • Line-plane intersection David Luebke 10/22/2014
Review For Test • Clipping in 3-D • Sutherland-Hodgman extends easily to clipping against six view-frustum planes • Issue: when in the pipeline to clip? • World coordinates: arbitrary planes expensive • Camera coordinates: two planes easy, four hard • Canonical perspective coordinates: two easy, four okay • Canonical orthographic coordinates/screen coordinates: reduces matrix multiplies, requires clipping in homogeneous coordinates • Common shortcut: clip near-far in camera coordinates, multiply by perspective matrix, clip left-right-top-bottom David Luebke 10/22/2014
Transform Illuminate Transform Clip Project Rasterize Review For Test • 3-D graphics: Model & CameraParameters Rendering Pipeline Framebuffer Display David Luebke 10/22/2014
Review For Test • Rendering pipeline: Scene graphObject geometry • Result: • All vertices of scene in shared 3-D “world” coordinate system • Vertices shaded according to lighting model • Scene vertices in 3-D “view” or “camera” coordinate system • Exactly those vertices & portions of polygons in view frustum • 2-D screen coordinates of clipped vertices ModelingTransforms LightingCalculations ViewingTransform Clipping ProjectionTransform David Luebke 10/22/2014
Review For Test • Transformations • Shift in coordinate systems (basis sets) • Accomplished via matrix multiplication • Modeling transforms: object->world • Viewing transform: world->view • Projection transform: view->screen David Luebke 10/22/2014
Review For Test • Rigid-body transforms • Rotation: 2-D. 3-D (canonical & arbitrary axis) • Scaling • Translation: homogeneous coords, 4x4 matrices • Composiing transforms • Matrix multiplication • Order from right to left • Projection transforms • Geometry of perspective projection • Derive perspective projection matrix David Luebke 10/22/2014