Introduction to Real-Time Rendering
This course provides students with an introduction to the theory and practice of modern real-time graphics programming. Emphasis will be placed both on OpenGL programming (especially including GLSL shader programming) and foundational concepts related to a variety of computer graphics topics, including: 3D transformations, curves and surfaces, space partitioning, lighting, interpolation, and texturing, among others. We will read widely from both seminal work in the field of visualization as well as from recent papers published in top-tier conferences and journals (IEEE TVCG, IEEE CG&A, ACM TOG, and others). In addition to the completion of shorter assignments throughout the semester, students will be responsible for a final project that involves the creation, demonstration, and documentation of a novel real-time graphics technique. This course is co-convened: Upper-level undergraduates and graduate students are encouraged to enroll. Graduate students will be expected to complete more substantial projects and will be given more in-depth reading assignments.
Students should have: a working knowledge of C++ (or willingless to learn it); an understanding of basic data structures and algorithms; and basic proficiency in calculus and linear algebra. Please talk to me during the first week of the semester if you are concerned about having the necessary knowledge to succeed in this class.
You will need access to a computer (ideally a laptop) that supports OpenGL 3.2 or higher. Please bring a laptop to Thursday's lab sessions.
Topics: The rendering pipeline; how to install OpenGL, GLM, and Aluminum; introduction to GLSL programming; A refresher of martix and vector operations; 2D and 3D transformations; projection from 3D to 2D.
Reading: RTR Chp 1, 2, and 3.
Homework: Assignment 1 (due Th 8/28 at 11am)
Slides: [week1_th.pdf] [week2_tu.pdf] [week2_th.pdf]
Topics: Designing a 6 DOF camera; simple mouse and keyboard interactions.
Topics: Enviromental mapping; loading assets.
Topics: 2D and 3D texturing; projective texturing; procedural texturing; noise functions; video textures.
Reading: RTR Chp 6.
Topics: Environmental mapping; shadow mapping; image-based effects.
Reading: RTR Chp 10.
Homework: Assignment 3 (programming part due Mon 10/27 at 9pm)
Exemplary programming examples:
Topics: Image processing; non-photorealistic rendering.
Reading: RTR Chp 11.
Topics: Volume rendering; Using Blender to sculpt 3D models.
3D user interfaces, Itika, Tony, and Kshitij
Non-photorealistic rendering, Massimo and Giorgio
Bidirectional reflectance distribution functions, Gianluca, Francesco, Mattheis, and Muxuan
Particle systems, Luca and Andrea
Particle systems, take 2, Michael
Morphing, Sindhu and Rohan
Shadows, Ettore, Jed, and Lorenzo
Order independent transparency, Walter and Brian
Fluid simluation, Jenny, Dhruv, and Giancarlos
Topic: OpenGL on mobile and web platforms; acceleration algorithms; spatial partitioning.
Reading: RTR Chp 14.
Homework: Assignment 4 (presentations due Th 12/4; write-ups due Fr 12/12)
Topic: Idea generation and prototyping for final project.
Comprehensive Final Exam
Monday, December 8th from 10:30am-12:30pm
The final project will involve the creation and evaluation of a novel computer graphics technique on a topic of your choice (to be vetted by the instructor). Working in teams of two is encouraged, but it must be clear who is responsible for which aspects fo the projects; each student will be graded individually. Gradauate students are expected to produce and document a project that could conceivably be accepted as a poster (or paper) to an academic conference.
Grading will be based on your contribution to discussions and critique sessions, the thoughtful and timely completion of assignments, and especially the creation of computer graphics projects. There may also be intermittent quizzes to test your knowledge of the assigned reading materials. There will also be a comprehesive final examination. The last week of classes will be used to present final projects. The breakdown of your grades is based on four main components: short projects = 15%; quizzes & short assignments = 5%; final exam = 25%; final project = 50%. Passing the final exam is a requirement for passing the class. Some late assignments may be accepted for partial credit, up until the last day of class (12/4); missed quizzes/exams can not be made-up.
Attendance is required. Any student missing more than four classes for any reason will not pass the course. You can use these four absences as you like, for sick days, holidays, or special events observed by organized religions (for students who show affiliation with that particular religion), or those pre-approved by the UIC Dean of Students (or Dean's designee).
No social media in class; no eating in class (gum or coffee is okay); no texting or phone calls in class.