Image synthesis, or "rendering", is a central theme of 3D Computer Graphics. It brings together a set of artifical imaging methods to automatically generate digital images from virtual 3D scene models. Rendering relies on computer science, physics, applied mathematics, signla processing and perception. It is used extensively in the fields of computer-aided design (CAD), visual special effects (VFX), computer animated, video games, simulation or architecture, among other indutries.
This course presents the principles, algorithms and techniques of image synthesis. It deals in particular with numerical models of shape, appearance, lighting and sensor of a 3D scene. The rendering equation, as well as the standard models of illumination, shading and reflectance are discussed. Different rendering algorithms based on these models are detailed, including forward rendering (rasterization) and backward rendering (ray tracing). Real-time rendering, GPU programming and the implementation of hierarchical structures are also presented. Finally, an opening towards global illumination concludes the course.
This course has a strong practical dimension, where students implement the models and algorithms throughout the quarter, using in particular the C++ language and standard graphics API. The necessary technical bases will be recalled for this. At the end of the course, the students will have acquired the ability to develop full interactive 3D rendering systems, physically-based rendering systems, as well as detailed knowledge about the light transport principles and the articial image formation process resulting from the rendering of a virtual 3D scene.
Each session is organized as follow :
See the moodle page for accessing the slide decks. Note that they are updated after each session.
The practical assignments aim at developing full rendering software applications, written in C++ and for some of them using the modern version of the OpenGL API. The resulting code shall be used as a basis for the class project. The assignment are organized in two part: one on ray tracing, the other one real time rasterization.
See the moodle page to access the asignments and the related resources.
Students following INF584 are scored based on a project, developed outside the class hours during the second half of the trimester and submitted at the end of the trimester by each student.
The project takes the form of an (partial) implementation of a research paper, among the list below, in the field of image synthesis. A 5-pages report should also be provided in the final archive, which describes what was implemented and examplifies the obtained results (rendered images, performance measures). The project must be implemented in C++ (+ GLSL shaders when it makes sense) based on one of the two code bases developed during the practical assignments (ray tracing and real time rendering).
For many papers, it is not expected to fully implement the method, but rather the minimum viable version for demonstration purpose, or at leasrt an interesting component e.g., sampling scheme, data structure, filter. The code should compile and run on the school'computers. Two students cannot take the same paper.
See the moodle page for more details and access the list of projects.