CS 512 Image Synthesis
(Physically Based Rendering)
Fall 2010
TTh 12:30--1:45
MH 104 (moving to IFDM/OldArchitecture 108 in September)
Instructor:
Joe Michael Kniss
Ferris 301G
277-2967
jmk (at) cs.unm.edu
Office Hours: TTr 2:00-4:00
It's a good idea to let me know you are coming
Info:
Official class web page:
www.cs.unm.edu/~jmk/cs512
Class Wiki
Text
Physically Based Rendering Second Ed. Pharr and Humphreys. Available in the Book Store and on-line, the 1st edition will also work.
Description
This course covers advanced topics in realistic image synthesis. This
year we are focusing on physically-based methods.
Students should have an introductory
background in computer graphics methods, either raster graphics
(CS/ECE 412) or vector graphics (CS/ECE 413). Students should also
have some background in linear algebra and C or C++ programming
languages. Topics include physically-based modeling, dynamics, light transport, and image-based/measurement techniques.
Deliverables
Assignments must be delivered to the student's CS svn repository by
the assignment due date. Only 1 late assignment will be accepted with
full credit (must be in before the next assignment is due). Any other
late assignments will incur a 10% penalty per day. Students must
solve 3-4 extra credit parts to achieve an A in the class. This year,
assignment deliverables must be unified code and writeup (using doxygen
to produce the assignment writeup from the code itself).
Assignments should include:
- Description of files and project,the latter must be generated from the code using Doxygen.
- Timings and frame rates for essential algorithms
- Code that COMPILES, must configure using CMake
- Images and screen shots of results + Doxygen generated writeup on personal blog. (students are encouraged to use blogspot, wordpress, or similar free blog utility)
- Well architected code with comments
Student's must acquire a CS account and send email to cssupport@cs.unm.edu to gain access to the classes svn repository.
Content **
- Week 1: Introduction: Physics Laws and math review
- Tues, Aug 24
- Conservation Laws
- Linear Algebra
- Numerical Integration/Derivation techniques
- Software Engineering Practices
- Assignment 1 Due Aug 31
- Implement and visualize a dynamic system of spheres with
elastic collisions and gravity.
- Show system behavior for 1,3,10, and 100 spheres
- Demonstrate that system conserves energy etc..
- Extra Credit 1: Implement Angular Momentum/Energy transfer
and/or dampening (inelastic collisions).
- Extra Credit 2: Implement non-trivial Geometry interaction
(non-sphere particles and/or complex container geometry)
- You must report: the scale of the simulation, total system
energy at each time-step (or some reasonable interval),
solution technique,
time/space complexity, and run-times.
- Reading: Chapter 1
- Math Homework: Due Aug 30
- Starting with the perimeter of a circle (2 Pi r) derive the:
- Area of a circle
- Volume of a Sphere
- Surface area of a sphere
- "Hyper-volume" of a 4D sphere
... using integral formulas. Show your work.
For both assignments this week, email the solution to the instructor. Be sure to include "CS512" in the subject or body of any emails related to this class.
- Week 2
- OptiX, a GPU Ray Tracing Platform
- Assignment 2 Due Sep 9
- Read the Optix Quick-Start and Programming Guide
- Implement Each of the Tutorial Programs
- Implement a Sphere Primitive
- Animate multiple spheres (perhaps using your results from Assignment 1)
- Document your work and check it into the SVN repository
- Use the Class Wiki to present your results
- Basic Ray Tracing fundamentals
- Rays
- Primitives
- Intersection
- Shading
- PDFs
- Integration
- Reading:
- Chapter 2 (Geometry and Transforms)
- Chapter 3 (Shapes)
- Weeks 3,4,5,6
- PDFs, BRDFs, Sampling, and Integration
- Assignment 3 Due Sep 30
- Visualize a BRDF for some fixed light direction and all view directions
- Visualize a set of rays (e.g. 20 rays) sampled from the BRDF
- Render a surface using the BRDF
- See Figure 8.1 in book for an example of a visualized BRDF
- Discuss and show that your use of the BRDF conserves energy
- Reading:
- Chapter 5 (Radiometry) Esp. 5.6.1 (BRDFs)
- Chapter 6 (Sampling)
- Chapter 8 (Reflection Models)
- Weeks 7-10
- Linear Systems
- Generalized inner-products
- Projection onto Functional Bases
- Baking, pre-integration, factor analysis
- Introduction to participating media
- Homework 2 due Nov 9
- Given:
f(x1) = 1,    
x1 = 1
f(x2) = 0,    
x2 = 2
f(x3) = 2,    
x3 = 3
f(x4) = 1.5,    
x4 = 4
f(x5) = 2.5,    
x5 = 5
f(x6) = 1,    
x6 = 6
- What is the highest order polynomial that uniquely fits the data?
- Plot the polynomial, and show that the data fits.
- Using cicos(g*x) with interger values of g, what is the expression that uniquely fits the data?
- Plot the cosine expression and show that the data fits.
- Fit the data to another basis (your choice). What is the expression?
- Plot the expression, show that the data fits.
- In each case, show your solution set-up and your work.
Extra Credit
- Show that the constant term is (or is not) the average of your fit functions
- What are the "projected lenghts" of the data onto the expression terms?
- Fit the data using Hermite and B-Spline curves.
- Reading:
- Assignment 4.1 Due Nov 11
- Render spheres and objects (with non-trivial geometry) using 3 different anisotropic BRDFs from the work linked above.
- Assume the viewer is at infinity (eliminating the need for a unique view direction at each pixel)
- Objects and viewer must rotate
- Use 3 or more point light sources
- Visualize the brdf using your software from Assignment 3
- Assignment 4.2 Due Nov 18
- Create a Factored Representation of 3 different anisotropic BRDFs and at least
one isotropic BRDF
- Render spheres and nontrivial geometric objects using these BRDFs
- Report
- Error (RMSE or SNR) between original data and factored representation
- Run times
- Data size comparisons (original versus factored)
- Visual comparisons of original and factored rendering.
** subject to change
Resources
- Code
- Pre-built Qt 4.6.xx for Windows and Visual Studo: scp (yourusername)@trucks.cs.unm.edu:~jmk/Qt4.6_Win32.zip .
- CMake We will use CMake to configure our assignments and libraries. CMake can generate VisualStudio, XCode, and/or makefiles. It is a simple system, RTFM kiddies!
- Nate's OpenGL Tutorials includes demos for some basic OpenGL techniques and an OBJ Reader
- Data
- Papers & Maths