Component
École Nationale Supérieure d'Électrotechnique d'Électronique
Objectives
By the end of the course, students should be able to:
- Understand the basic graphics pipeline, from geometric representation to rasterization and image generation.
- Explain and implement fundamental rasterization algorithms, including line drawing, polygon filling, and attribute interpolation.
- Apply techniques for visibility and hidden surface removal, such as back-face culling and depth (Z) buffering.
- Understand and use common illumination and reflection models, including ambient, diffuse (Lambert), and specular (Phong and Blinn–Phong) lighting.
- Compare different shading algorithms (flat, Gouraud, and Phong shading) and understand their visual and computational trade-offs.
- Understand the principles of texture mapping, including texture coordinates, interpolation, and perspective-correct mapping.
- Recognize advanced uses of textures such as environment mapping, bump/normal mapping, and displacement mapping.
- Gain a conceptual understanding of ray tracing and its ability to model shadows, reflections, and refractions.
- Design and implement a basic software renderer that integrates multiple stages of the rendering pipeline.
- Use OpenGL to implement rendering pipelines involving transformations, projections, lighting, and different rendering modes.
- Develop practical skills in debugging, evaluating, and comparing rendering techniques in terms of visual quality and performance.
Description
This course provides an introduction to the fundamental principles and practice of computer graphics, with a strong emphasis on understanding the rendering pipeline from first principles and applying it in practice. The course combines a concise theoretical overview with extensive hands-on laboratory work.
The lecture component introduces the core concepts underlying image synthesis, including the graphics pipeline, rasterization, visibility determination, illumination and reflection models, shading techniques, texture mapping, and an overview of ray tracing.
The practical component is organized into laboratory sessions. In the first part, students develop a **minimal software renderer in Java**, implementing key stages of the rendering pipeline such as line drawing, polygon filling, hidden surface removal, and basic illumination. In the second part, students transition to using a classic OpenGL-based renderer, where they learn how to manage geometric transformations, projections, lighting models, and different rendering techniques within an established graphics API.
By combining a "do-it-yourself" software renderer with OpenGL-based experimentation, the course aims to give students both a deep conceptual understanding of computer graphics and practical experience with widely used rendering technologies.
