CS6491: Computer Graphics Course at Georgia Tech


Instructor: Jarek Rossignac, email. Office hour: Tuesdays and Thursdays 12:30 pm to 1:25 pm in CCB commons.
TA: TBD Office hours: TBD

Course overview slides.
The course material is posted on the syllabus page, which describes the 15 modules that make up this course and provides links to accompanying slides, reading assignments, and demo applets. Students are responsible for learning the material covered in the slides and in the required reading papers and handouts that are posted on the sylabus page. They are also responsible for understanding the implementation of the example applets provided.

The grade will be based on two midterms (20% each) and on 3 projects (20% each).

Projects: Projects are due before class via email with subject "6491 Px" where "x" is the project number (for example "01"). The email should contain the name of the student, the name of the partners if this is a group project, the link to the web page containing the project (with: project number and title, authors' names, report in PDF, interactive applet, zip file with the applet, the source code, the data).

 

Project 1: Due as a web page with a running applet on Sept 8 before class (details to be discussed in class)

I suggest that you implement it in Processing or Java, so that you have an applet that you can post.

The problem is to produce a constrained Delaunay triangulation of a 2D polygonal region ("loop") that the designer may edit.

You may start from scratch or from the following simple source code, for editing a curve. However, you may be better off by starting from a more elaborate program (zip) that I have written, which computes the Delaunay triangulations of the vertices (the O(n^4) algorithm you invented in class) and constructs a Corner Table representation of it ("mesh"). I also classify the triangles (cyan/yellow) by testing whether their center lies inside (the polygonal region bounded by) the loop.

Your job is to find all the intersections between the edges of the loop and the edges of the mesh and to subdivide both the loop and the mesh so that they are compatible (no edge of the mesh crosses an edge of the loop). Try to produce a simple and elegant code for doing this refinement. Then, modify the process by creating a hexagonal grid (or a random cloud) of points inside the loop and adding them as mesh vertices.

You may explore a different approach if you find a simpler one.

Finally, for extra credit, try to produce an implementation that has lower assymptotic worst case complexity or that at least in practice performs much faster as the number of vertices in the loop or inside it grow.

Your web page should contain:

- The header:

"CS6491--Fall 2010 -- Rossignac"

"Project 1: Triangulation"

"by First LAST NAME"

- A photo (headshot) of you which will help meremember your name and face

- A short problem statement

- An overview of your solution (major steps) and some explanations on how you handled non trivial details

- An argument convincing me that your algorithm is correct (if one ignores singular cases)

- A description of the limitations and additional features or speed up for extra credit

Please email me the URL and also bring a print-outof that web page to class.

 

 


Previous year assignments and exams schedule
Assignment P1 is due Sept 1 before class: Study the class notes on Processing, Geometry, and Curves. Implement the applet highlighted in cyan in Curves. Write PDF report with solutions to questions highlighted in grey in Curves.
Implement the applet as described in the cyan highlighted sections of Curves. Start with the applet P1. Modify the place-holder (incorrect) implementations marked with "***" in the "action" and "UI" tabs. Make sure that you replace my picture with one of you showing your face clearly in the help pane. When correct, your applet should produce images like the one below. Do not change the GUI.



Assignment P2 is due Sept 24 before class: Implement a robust point-in-polygon algorithm in the applet provided. Produce a video (up to 5 mns, convenient fomrat for fast downloading). explaining (1) the definitino of a polygon, (2) three different representations, (3) three algorithms for point-in-polygon, and (4) the details of the one you have implemented. Post the applet and the video along wiht the appropriate header, team members names and photos. (Teams of 2 or 1 students only).




Assignment P3 (individual) Phase 1 is due October 27 before class. Phase 2 is due November 17 before class (no extension). Project description: PDF.


Events and exams:
  • Midterm: TBD
  • Final: November 24 in class. You may bring up to two single-sided pages of notes.

    01 - Graphic Systems
    What students need to know:
  • How the application communicates with the graphics subsystem (API, states changes, rendering commands, interrupts)
  • How to write a simple Processing program that lets the user drag a disk on the screen with the mouse and change its color by pressing keys
  • How to write a simple program that animates the continuous rotation of an ellipse
  • Processing syntax for variable declarations, arrays, block structure, conditionals, loops, logical expressions, functions
  • Printing in the text window and rendering text in the loaded font in the graphics window
  • How to load an image and use it as a texture on a rectangle
  • List of input and output devices and modalities, their capabilities and applications
  • Four strategies for the interactive control of a camera
  • Examples of approaches for human-shape interaction

    02 - Geometry
    What students need to know:
  • The differences between points and vectors: what they represent, allowed operators, effects of transformations
  • Conversions between polar and Caresian coordinates
  • Effect, implementaiton, and applications of operators on points and vectors: n(), a(), D(), R(), A(), Left()...
  • The two formulations of the dot product, its three properties, and its uses for testing and expresing constraints
  • How to test whether two vectors are paralel or orthogonal using vector operators and also using coordinates
  • Tangent and normal components of a vector with respect to a direction and the derivation of the formula for the reflection vector
  • Definition and construction of an orthonormal basis and of a coordinate system (frame)
  • Formulae for changing coordinate systems
  • Rigid transformations, their canonical representation
  • Transformation of points and vectors by a homogeneous matrix
  • Use of rotate, translate, and scale graphic commands to achieve desired results in 2D
  • Use of matrix push and pop commands for rendering hierarchical models
  • Extraction of the rotation angle from a rigid 2D transformation
  • How to rotate a portion of the scene around a fixed point
  • Parametric form of a ray and of an edge
  • Implicit form of a line and of a half-space
  • Computing the closest point to P on Edge(A,B)
  • Edge/edge intersection test and the derivation of the formula for edge/edge intersection calculation
  • Definition of a triangle
  • Tests whether a triangle is clockwise and whether it contains a given point
  • Implicit equation and parametric form of a circle
  • Tests whether two circles, or two disks, intersect
  • Intuitive understanding, computation, and uses of the cross product for testing parallelism
  • Computation of the normal of a triangle
  • Computation of point-to-plane distance in 3D
  • Computation of line/plane intersection
  • Formula and intuition behind the mixed product
  • Use of the mixed prodct for testing whether a triangle is front-facing
  • Definitions of linear, affine, and convex combinations
  • Rapid implementation of a rotation transform
  • Composition of transformations via matrix multiplication
  • Inverse of a rigid transformation
  • Use of rotate, translate, and scale graphic commands to achieve desired results in 3D
  • Use of recursion with the matrix stack for rendering trees
  • Formula for the area and center of a triangle
  • Computation and use of Barycentric coordinates
  • Computation of edge/triangle intersection and aproaches for dealing with loss of numeric accuracy
  • Derivation of the formula for line/triangle intersection in 3D
  • Algorithm for testing whether an edge intersects a triangle
  • Computation of the distance between an edge and a point in 3D
  • Algorithm for testing whether a ray hits a triangle
  • Algorithm for testing whether a given point is contained in a tetrahedron
  • Computation of the intersection of three planes
  • Derivation of a frame from the viewpoint, the target, and the up-vector

    03 - Topology
    What students need to know:
  • Why we study topology here
  • Symbols, notation, and definitions for operations on points and pointsets (union, complement, xor, containment, empty, set definition, quantifiers...)
  • deMorgan laws
  • Intuitive understanding of the concept of neighborhoods and its use for defining the boundary, interior, exterior and for testing whether a set is open or closed
  • Definition of interior, boundary, exterior, closure, regularization
  • Definition of a connected set, of a simply connected set, and of the components of a set
  • The difference between a hole and a handle in a 3D shape and the concept of the genus
  • Manifold and non-manifold points and sets
  • Definition of a polygon and of a simple polygon
  • Representation of a simple polygon by a polyloop
  • Computing the area of a polygon
  • Decomposition of the boundary into skin, hair, wound, and cut and their definitions
  • Decomposition of the boundary of a polygon into edges, vertices, and crossings
  • Circuits of a polygon and their computation from an edge soup
  • Definitino of a face and why it is important to distinguish faces from polygons
  • When is the set of edges the boundary of a polygon
  • Algorithm for identifying the faces defined by an arrangement of edge (split, loops, containment tree)
  • Algorithm for regularizing a face
  • Definition of a Selective Geometric Complex and topological, Boolean, and simplification operations on it
  • Algorithms for computing a regularized Boolean comination of polygons
  • Winding number of a polyloop and its applications for orientation and trimming self-intersecting polyloops
  • How to represent a polygon by a self-intersecting polyloop and how to compute its boundary

    04 - Arrangements
    What students need to know:
  • Two algorithms for testing whether a point is inside a polygon (shoot ray, XOR of containment in triangles)
  • XOR fill of a polygon (algorithm and why it works)
  • Definition of a convex set and of a convex hull and proof that a stringing is not necessarily a convex hull
  • How to compute the orientation of a polyloop and identify concave vertices
  • Why decimating concave vertices does not necessarily produce a convex hull
  • How to interpret point clouds to produce polygons and dangling edges
  • Algorithm for computing the best place to live (furthest away from nuclear plants)
  • Definition and computation of a Delaunay triangle
  • General position assumptions
  • Naive algorithm for computing a Delaunay triangulation and its asymptotic complexity
  • Definition of a Voronoi region anexamples of practical applications
  • Formula for counting the cells in a planar arrangement of lines
  • Cost of specifying regions by enumerating cells
  • BSP tree representation of regions, its construction, and its use for point-classification
  • Use of BSP for back-to-fron ordering of edge in 2D or faces in 3D
  • CSG representation of regions, its construction, and its use for point-classification
  • CSG with 3D primitives, rigid transforms, and scaling
  • Non uniqueness of BSP and CSG
  • Definition of a redundant primitive in CSG
  • Positive form of a CSG and algorithm for obtaining it
  • Examples of representations for polygons (boundary, triangulation, CSG, XOR)
  • Strategies for dealing with singular cases
  • How to fix the concave vertex decimation algoithm so that it computes the convex hull
  • What is the complexity of that algorithm and how it compares to the complexity of computing the convex hull
  • Properties of Delaunay triangulations and their applications to closest pair computation
  • How to use the Delaunay triangulation to extract polygons and dangling edges from a point cloud
  • Properties of the Voronoi diagram
  • Insertion algorithm for Voronoi diagrams
  • Optimization and performance comparison between CSG and BSP
  • Conversion between BSP and CSG
  • I-zone, U-zone and Active Zone of a primitive in CSG
  • Their applications for rendering faces of CSG primitives
  • Converting a CSG expression to its Blist form and using the Blist form for piont classification
  • Peeling and Blister

    05 - Curves
    What students need to know:
  • How to evaluate a point on a Bezier curve for a given parameter value
  • How to draw a Bezier curve
  • How to animate a frame on a Bezier curve
  • How to compute the arc-length of a polyloop
  • How to uniformely resample a polyloop and its application to animation
  • How to compute the area of a simple polygon from its enclosing polyloop
  • Difference between smoothing and subdivision and which one is needed when
  • Formulae enad their justification for the velocity, normal, acceleration, and jerk at an element of a polyloop
  • Implementation and limitations of smoothing by successive tucks and their expression in terms of duals
  • Tuck-tuck smoothing
  • Implementation of quadratic and cubic B-spline smoothing using combinations of refine and dual
  • Local control of B-spline curves
  • Four-point subdivision rule and its advantages/drawbacks over cubic B-spline
  • Drawing by hand the cubic B-spline and the Four-point of a simple polyloop
  • Definition of the Hermite problem and of the two (point and tangent) end-condition interpolation
  • How to compute the control points of a Bezier span to solve the Hermite problem
  • Strategies for resampling a polyloop so as to have uniform edge length
  • How to compute the centroid of a simple polygon from its a polyloop
  • How to estimate the principal direction of a polygon
  • Smoothing via cubic fit and its relation to tuck-tuck
  • Where do original vertices converge to under cubic B-spline subdivision
  • Formula for splitting a control polygon of a cubic B-spline into polygons for equivalent cubic Bezier spans
  • Convex hull properties of B-spline and Bezier and their applications to intersection testing
  • Four-point subdivision formula and its derivation from a cubic fit
  • Split and Tweak subdivision: cubic B-spline, four point, jarek, and others
  • Strategy for subdividing open curves
  • Deciding which level of subdivision to use
  • Strategies for reducing popping effects when switching levels of subdivision
  • How to produce smooth animations and surfaces through curve subdivision

    06 - Animation
    What students need to know:
  • List several types of animations and give examples of applications
  • Overall strategy and geometric details for simulating a walking bug in 3D
  • How to compute and animate a circular motion that interpolates between two frames in 2D
  • How the circular motion differs from a linear position and angle interpolation, and what are its advantages
  • Split and tweak smothing of piecewise circular motions in 2D
  • Computing a spiral motion that interpolates two edges and applying it to animation design
  • How to detect interference/contact between disks and between polygons
  • Explain how to use static interference tests for collision and why it may not work
  • Derive the formula for computing the collision time for disks with constant velocity
  • Formulae for computing the position of the disks at collision and their subsequent velocities (elastic shock, equal radii and masses)
  • Algorithm for detecting the interference between two polygons in 2D
  • Difference between morphing and deformation
  • Formulaiton of the Minkowski morph and its implementation for convex polyloops in 2D
  • Definition and construction of the tangent ball morph in 2D between compatible shapes
  • How to compute and animate a screw motion that interpolats between two frames in 3D
  • Split and tweak smothing of piecewise spiral motions in 3D
  • Formulation of the volume swept by a solid during a screw motion and classification of a point against that volume
  • High level formulation of a space warp based on a screw motion
  • Benefit of using relative screw motions for predicting collision between polyhedra and between balls
  • User interface design for editing 3D motions
  • Definition of quaternions and their relation to screw motions
  • Derivation of the formulae for simulating the elastic collisions between disks of different radii
  • Algorithm and geometric tests for point/triangle collision detection in 3D
  • Derivation of the collision time of two edges, each moving at constant velocity
  • Acceleration techniques for speeding up collision detection
  • Using swept volumes and 4D formulations for collision analysis
  • Overall algorithm, data structure, and implementation details of the Minkowski morph in 3D
  • Applications of the tangent-ball morph to the problem of slice interpolation
  • Application of the tangent-ball morph to the exageration of discrepancies

    07 - Morphology
    What students need to know:
  • Difference between distance and discrepancy between shapes (including the love soty metaphor) and examples of their applications
  • Formulae and algorithms for computing the minimum distance and Hausdorff discrepancy between two point-clouds
  • Use of smapling for approximating these measures for continnuous shapes
  • Definition and other terms for of dilation, contraction, and tolerance zone
  • Formulation of minimum distance and maximum discrepancy in terms of dilations
  • Limitations of the Hausdorff discrepancy and examples where it underestimates the disparity between shapes
  • The definition and advantages of the Frechet distance
  • The definition and advantages of the ball distance
  • The definition of the cut locus of a 2D shape and the medial axis
  • The medial axis transform and its use for defining the local and minimum feature size
  • Distance transform inside a polygon
  • Definitions of rounding and fileting of shapes by growing and shrinking
  • List of various complexity measures for shapes and scenes and their significance for applications
  • Computation of the exact distance between two polygons
  • Computation of the exact Hausdorff discrepancy between two polygons
  • Analysis of the error bound when using sampling for computing minimum distance and Hausdorff discrepancy
  • Algorithm and formulae for computing point/triangle distance in 3D
  • Algorithm for computing point/mesh distance in 3D and its applications for point/solid distance
  • Algorithm for computing the minimum distance between two triangle meshes
  • The difference between Hausdorff discrepancies of solids and of their boundaries
  • Definition and computation of the normal offset
  • Definition and computation of the bal offset
  • Definition of the r-mortar and of the r-tightening of a shape
  • Definition of relative roundingand its applications to design, shape analysis, and morphing
  • Ball transform inside a 2D region
  • Relation between Filleting, Mortar, and alpha shapes

    08 - Triangulation
    What students need to know:
  • How to represente a triangle mesh using geometry and incidence
  • How to compute and store a consistent triangle representation
  • The difference between incidence and adjacency
  • Corner Table representation
  • Corner operators and their implementation
  • Naive algorithm for computing the O table
  • How to construct a triangle mesh for a regular grid
  • Recursive algorithm for visiting all triangles of a shell and its use for identifying and orienting shells
  • Algorithm for identifying which vertices are used by a shell
  • Algorithm and geometric construction for estimating the normal at a vertex
  • Formula and algorithm for computing the genus of a manifold shell
  • Algorithm for point-in-solid test and its justification
  • How to test whether an edge is concave
  • Algorithm for computing the border loops of a mesh
  • Algorithm for computing the exact volume of a solid using the mixed product
  • How to organize a triangle soup into solids and shells
  • The outline and essence of a fast algorithm for computing the O table
  • Algoritm for a robust normal estimation based on tracing the intersection with a cylinder
  • Detecting non-orientable shells
  • Comparison of the corner table with other representations (for example vertex-star) in terms of storage and efficiency

    09 - Mesh processing
    What students need to know:
  • Overall strategy for computing the distance between a point and a triangle mesh
  • Algorithm for flipping an edge and why ysing it for smoothing does not work
  • Algorithm for collapsing an edge
  • Algorithm for finding the shortest edge
  • Algorithm for detecting the intersection between two triangle meshes
  • Definition of geodesic distance and path
  • Algorithms and geometric constructions for tracing a geodesic path along a curve
  • Computation of geodesic graph distance and its applications to the isolation measure an to tip detection
  • Algorithm and details of geometric constructions for mesh smoothing
  • Algorithms for identifying non-manifold edges and isolated non-manifold vertices in a mesh
  • Why collapsing the shortest edge does not yeild good simplifications
  • Better approaches for deciding which edge to collapse next (including the max and quadratic error estimators)
  • Algorithm for computing the distance between a point and a tiangle mesh
  • Algorithm for computing the minimum distance between two triangle meshes
  • Algorithm for compacting the Corner Table
  • Algorithm for finding and filling a holes
  • Challenges and strategies of shape segmentation
  • Definition and properties of hamiltonian cycle
  • Algorithm for mesh subdivision
  • Strategies for adaptive mesh subdivision

    10 - Light, perception
    What students need to know:
  • Why is it imortant to treat light both as a wave and as a particle
  • Sort colors according to their frequency
  • Definition and example of white light
  • Motivate and explain the gamma correction
  • Explain what the letters mean in HLS
  • Explain the tristimulus theory
  • How many fully saturated hues can an average human distinguish
  • Compare the human sensitivity to green and to blue
  • Explain what the Y, X, and Z coefficient of the CIE measure
  • Explain how to form yellow, magenta, and cyan using additive RGB
  • Explain why reflected colors should be computed using composition of subtractive colors and not additive colors
  • Define radience and explain how knowing it everywhere may be used to render the scene from any angle
  • What happens to light as it hits a surface separating two materials
  • Formula for computing the mirror reflection of an incoming ray
  • Spacify the properties of a Lambertian surface and give examples
  • Specify properties of a specular surface and give examples
  • Provide the light reflection equation, explain and justify each term
  • Identify the iris, lense, and retina in the human eye
  • Describe what the back layer of the retina is composed of and what is its function
  • What is the feovial region
  • How many rods and cones does a human have (roughly)
  • How are rods distributed and what are they good for
  • How are cones distributed and what are they good for
  • What is the average human acquity, how is it measured, what does it meean in practice
  • What horizontal resolution panoramic screen is needed to saturate human acquity
  • How does perceived light depend on the distance to a point source
  • Why is the light reflected by a Lambertian surface independent of the viewer's position
  • When can we assume that light is constant along a ray
  • Define the term BRDF and give examples of it for simple surfaces
  • Why is perceived intensity relative and what are the consequences on computer graphics
  • What is the Mach band effect and why is it important in graphics
  • Explain laterla inhibition and give an example of a simple optical illusion if causes
  • Explain the Herman grid illusion

    11 - Photorealism and NPR
    What students need to know:
  • Explain how to set up the virtual screen and viewpoint so that the image look correct to the viewer
  • Explain how to generate models of the rays for each pixel on the graphics window
  • Provide the overall algorithm for ray-casting
  • What is the difference between ray-tracing and ray-casting and why does it matter
  • Explain how to perform hidden-surface removal in ray-casting
  • Explain how to compute the light reflected by an illuminated visible surface
  • Provide the algorithm for correctly rendering shadows
  • Explain why ray-casting plus shadow feelers does not produce correct images
  • Define NPR and list some of its objectives
  • List 3 attributes for edge segments and indicates how they may be used to enhance shading
  • Provide an algorithm for finding the silhouette edges
  • What is the difference between photorealistic rendering and visualization
  • Explain how to perform ray-casting on a CSG model
  • Explain how to augment the ray-casting plus shadow feelers approach to improve image quality
  • Discuss how to precisely trim silhouette edges to their visible part
  • Explain the challenges of rendering shapes with hatching during animation and view manipulation
  • Outline the essence of the approach for consistent hatching
  • Suggest a technique for showing the differnces between two similar and interfering surfaces
  • Explain the differences and overlaps between graphics and volume rendering

    12 - Graphics pipeline
    What students need to know:
  • Provide the high level scan conversion algorithm
  • Compare scan-conversion and ray-casting algorithms and discuss their similarities/differences List the steps of the graphics pipeline and explain what each one does
  • What is the viewing frustum and why do geometric primmitives need to be clipped against it
  • What is the role of perspective projection
  • Define triangle rasterization and provide a simple but slow algorithm for it
  • Provide a high-level algorithm for rasterizing an edge and explain which pixels will be turned on and why
  • Explain how hidden surfaces are removed during rasterization
  • Explain and justify double buffering
  • What is the shape of the projection of the moon on your window and why
  • How to draw a correct perspective projection of a box
  • What are vanishing points and how many are there
  • What is the equation of perspective projection and how was it derived
  • Why is the perspective projection of a triangle a (possibly degenerate) triangle
  • Why can't we use perspective projection for 3D rendering
  • What is the equation of perspective transform
  • Explain z-contention and what may be attempted to reduce its effects
  • How to draw the shadow of an synthetic vertical pole in an image of 2 real ones
  • Describe a simple clipping algorithm for trimming a triangle against a viewing frustum
  • Why is scanconversion more popular than ray-casting
  • Explain the stages and the essence of rasterization
  • Given the perspective image of a box, how to compute the proper eye position for looking at it
  • How to draw by hand (geometric construction with ruler) the image of a point by a perspective transform
  • Why do we have to use the perspective transform of z rather than z
  • How is the space behind the screen transformed by perspective transform and where do the vanishing points lie
  • How does the use of near and far clipping planes affect the depth accuracy
  • Derive the inverse of a perspective transform and explain applications
  • Prove that a perspective transform maps triangles to triangles
  • What is the homogeneous matrix form of perspective transformation

    13 - Image-based rendering
    What students need to know:
  • What is texture mapping and why is it so popular
  • List and explain the steps that a developer must go through to use texture mapping
  • Discuss different strategies for texture creation
  • Give examples when texture coordinates can be assigned algorithmically
  • Discuss several ways of combining texture colors and shading colors
  • Define the term billboard and explain when it is useful
  • Explain Phong shading and compare it to Gouraud shading
  • Explain bumpmapping and suggest good applications. Discuss its limitations.
  • Define mip-mapping and explain its purpose
  • Explain the perspective distortion of texture maps
  • Provide a software algorithm and geometric constructions for rendering textured shapes correctly
  • Explain environmental mapping, what it accomplishes, and suggest how it could b implemented
  • Define solid textures and suggest an application
    14 - Acceleration techniques
    What students need to know:
  • List two categories of costs of rendering with a graphics pipeline and suggest experiments identifying which one is the bottleneck
  • list five performance acceleration techniques and explain what type of cost it addresses and how much speed up may be hoped for
  • Suggest a test for establishing whether a projected triangle is front facing
  • Why does the use of short triangle strips improve performance
  • Why may very long triangle strips not improve performance on contemporary GPUs
  • Suggest strategies or quick frustum culling
  • Provide an algorithm for using vertex clusters for mesh simplification and discuss its advantages
  • Define conservative occlusion testing and explain how it can be used to accelerate rendering
  • Discuss the limitations of vertex clustering
  • Discuss mesh simplification by successive edge collapses
  • Explain strategies for estimating the error of an edge collapse and for selecting the next edge to be collapsed
  • Explain how to test whether a ball is occluded by a triangle and vice versa, and how these may be used to accelerate rendering
  • Explain the difference between from-point visibility and from-cell visibility
  • List several visibility techniques and discuss their advantages and drawbacks
  • Explain cell-to-cell visibility and how to test whether a triangle mesh occludes one cell from the other
  • What is occluder fusion, when is it necessary, and how can it be done

    15 - GPU shaders and advanced effects
    What students need to know:
  • List the different stges of the GPU and expain the role of each module
  • What are shaders and what functionality they offer that was not available in old generation graphic adapters
  • What is translucency good for
  • Why are floor shadows important and how can they be easily rendered
  • Why are floor shadows insufficient
  • Explain the shadow map approch and its limitations
  • Explain why soft shadows are desired and suggest a simple implementation that approximates them
  • List several realistic visualization effects that can be programed efficiently on the GPU
  • Give examples of fragment operations
  • What are stencil buffers and what are they used for
  • Explain shadow volumes and how they are used for rendering
  • Expain why it is possible to see curved shadow boundaries even though the occluders and light sources are linear
  • Discuss read/write limitations of fragment and vertex shaders
  • Define scattering and explain why it is important and how it may be implemented


    2008 projects


    Search this site    or the Web