280 likes | 387 Views
CS 551 / 645: Introductory Computer Graphics. David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551. Administrivia. Course evaluations on the web Help make this class better next semester Looking into alternative location for final Who wants to move?. The Plan. Today
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