Computer Graphics


Associate Professor


Stefano Berretti,

Content and organization

Course content

PART I: Getting Started
Linear transformations: Geometric data types; Vectors Geometric Data Types; Vectors, Coordinate Vectors, and Bases; Linear Transformations and 3 by 3 Matrices; Extra Structure; Rotations; Scales. Affine transformations: Points and Frames; Affine transformations and Four by Four Matrices; Applying Linear Transformations to Points; Translations; Putting Them Together; Normals. Respect frame: The Frame is Important; Multiple Transformations. Frames in Graphics: World, Object and Eye Frames; Moving Things Around; Scales; Hierarchy. OpenGL: introduction and basics; VBO, VAO, EBO; OpenGL Shaders. Qt quick start. Hello World 3D: Coordinates and Matrices; Drawing a Shape; The Vertex Shader; What Happens Next; Placing and Moving with Matrices. Laboratory in OpenGL.

PART II: Rotations and Interpolation
Quaternions: Interpolation; The Representation; Operations; Power; Code; Putting Back the Translation. Balls: Track and Arc; The Interfaces; Properties; Implementation. Smooth Interpolation: Cubic Bezier Functions; Catmull-Rom Splines; Quaternion Splining; Other Splines; Curves in Space. Laboratory in OpenGL.

PART III: Cameras and Rasterization
Projection: Pinhole Camera; Basic Mathematical Model; Variations; Context. Depth: Visibility; Basic Mathematical Model; Near and Far; Code. From Vertex to Pixel: Clipping; Backface Culling; Viewport; Rasterization. Varying Variables: Motivating The Problem; Rational Linear Interpolation. Laboratory in OpenGL.

PART IV: Pixels and Such
Materials: Basic Assumptions; Diffuse; Shiny; Anisotropy. Texture Mapping: Basic Texturing; Normal Mapping; Environment Cube Maps; Projector Texture Mapping; Multipass. Sampling: Two Models; The Problem; The Solution; Alpha. Reconstruction: Constant; Bilinear; Basis functions. Resampling: Ideal Resampling; Blow up; Mip Map. Laboratory in OpenGL.

PART V: Advanced Topics
Color: Simple Bio-Physical Model; Mathematical Model; Color Matching; Bases; Reflection Modeling; Adaptation; Non Linear Color. What is Ray Tracing: Loop Ordering; Intersection; Secondary Rays. Light: Units; Reflection: Light Simulation; Sensors; Integration Algorithms; More General Effects. Quick introduction to Monte Carlo Integration. Pseudo-random number generation. Global illumination with path tracing. Python implementation of a path tracer for global illumination. Neural rendering. Geometric Modeling: Basic Intro; Triangle Soup; Meshes; Implicit Surfaces; Volume; Parametric Patches; Subdivision Surfaces. Animation: Not Even an Introduction; Interpolation; Simulation; Human Locomotion. Laboratory in OpenGL.

Course organization

Classes are on Monday and Friday. Classes alterante between theory and practice using OpenGL / WebGL. The teaching language is Italian. Course material (slides) and suggested books are in English. Example code i also provided in WebGL.



Course Duration


Course Type

AI PhD Curriculum



Marking Scheme

score in [18-30]

Participation terms

The course id intended for students enrolled at the master course in Information Engineering of the University of Firenze. Any student enrolled at the University if Firenze can enter the course in his/her cv.

Lecture Plan

Monday and Friday (6 hours per week)


March-June 2022



Modality (online/in person):

In person with online transmission and recording

Host Institution
University of Firenze

Other short courses

10. 04. 2024 Go

Ethics & STICs

01. 03. 2024 Go

Computer Vision

24. 11. 2023 Go

Human Rights Toolbox

21. 02. 2023 Go

Computer Vision

12. 01. 2023 Go