Skip to main content
CODE 109186
ACADEMIC YEAR 2023/2024
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INF/01
LANGUAGE English
TEACHING LOCATION
  • GENOVA
SEMESTER 2° Semester
TEACHING MATERIALS AULAWEB

OVERVIEW

This course gives the fundamentals of Computer Graphics, exploring the two main approaches based on ray tracing and on rasterization. The course includes theory lectures in class, practical homework, and a final project. The practical part is fully given in C++ vanilla, without using any external library, in order to unravel the inner structure of Computer Graphics programs.

AIMS AND CONTENT

LEARNING OUTCOMES

Learning the theoretical and methodological fundamentals of Computer Graphics

AIMS AND LEARNING OUTCOMES

The student will learn the two main paradigms of computer graphics: ray tracing and rasterization. 

Besides learning the fundamentals of such paradigms, the student will learn how to develop applications based on such paradigms, putting them into practice during the course assignments and in the final project. 

As a side benefit, the student will learn how to develop non-trivial applications with  the C++ programing language.

PREREQUISITES

Linear algebra: vectors, matrices, linear transformations. 

Imperative programming

TEACHING METHODS

In presence classes for theory. Autonomous work by students for homework & final project.

SYLLABUS/CONTENT

Linear algebra: Vectors, matrices, and related operations; coordinate frame, change of frame; linear systems; geometric interpretations.

Images: vector and raster; output devices; image coordinates; color spaces; image formats.

Ray tracing: parallel and perspective projection; basic geometric intersections; shading: diffuse, specular, and ambient; shadows, reflections, and refractions.

Spatial data structures: queries and classification; Spatial indexes: regular grid, kd-tree, quadtree/octree, BSP; Primitive sorting techniques: Bounding Volume Hierarchies; Geometric proxies: sphere, capsule, half-space, AABB, OABB, convex and general polyhedron; collision detection strategies: static, dynamic.

Procedural synthesis: procedural noise; Perlin noise; color maps; implicit modeling: combination of distances and angles.

Implicit solid modeling: CSG; Rendering implicit models: ray marching; Explicit meshing of implicit models: marching squares/cubes; Implicit modeling in additive manufacturing.

Geometric transformations: linear transformations: scaling, rotation, and shearing in 2D; translation; affine transformations and algebra; lines in the affine space; affine sum; the affine space; homogeneous coordinates; scale, rotation, and translation in homogeneous coordinates in 2D and 3D; concatenation of transformations; generic rotations about the origin; Euler coordinates; Euler-axis angle; Transformations of normals; 

Viewing transformations: pipeline of transformations; viewport transformation; orthographic projection; camera transformation; change of frame; examples; composition of transformation and transformation matrices. 

Rasterization theory: canonical view volume and pixel grid; implicit shape representation and detection of pixels inside a shape; point-in-triangle test; edge function; barycentric interpolation; triangle rasterization; interpolation of attributes;  clipping; depth sorting; z-buffering; super-sampling anti-aliasing. 

Rasterization implementation: GPU, content creation, window manager, CPU and GPU memory and bus, OS-specific aspects. Software rasterization: rasterization pipeline, vertex input, presentation of a software rasterizer: rasterization of lines; shaders; rasterization pipeline; attributes; uniforms; vertex attributes and color interpolation; view transformation and preservation of aspect ratio; depth test.

Picking through ray casting.

Perspective transformations: perspective projection; extension of homogeneous coordinates and of the affine space; perspective division; perspective projection from frustum to parallelepiped; composition with the orthographic projection; aperture and aspect ratio; perspective division for interpolation of attributes.

Texture mapping: examples of color mapping, bump mapping, and displacement mapping;  UV mapping and texture lookup; problems with seams and distortion; resampling: magnification and minification; derivatives in screen space; nearest filtering and bilinear filtering; Moire patterns; mipmapping.

View transformations: order of transformations; modeling transformations: how to place different objects; scene graph; stack of matrices; placing the camera; orbiting camera; camera on a car (POV); object viewer; Euler angles; trackball; implementation with quaternions.

RECOMMENDED READING/BIBLIOGRAPHY

Material and references provided by the instructors

S. Marshner and P. Shirley, 2016, Fundamentals of computer graphics - Fourth edition, CRC Press.

 

TEACHERS AND EXAM BOARD

Exam Board

ENRICO PUPPO (President)

CLAUDIO MANCINELLI

PAOLA MAGILLO (President Substitute)

LESSONS

LESSONS START

In agreement with the calendar approved by the Degree Program Board of Computer Science.

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

Homework (mandatory)

Project (single or teamwork)

Oral exam

ASSESSMENT METHODS

The homework and the project will be evaluated for the correctness and efficiency of the solution.

The oral exam will usually concern the part of the syllabus not related to the specific topic covered with the project. 

Exam schedule

Data appello Orario Luogo Degree type Note
16/02/2024 09:00 GENOVA Esame su appuntamento
07/06/2024 09:00 GENOVA Esame su appuntamento
06/09/2024 09:00 GENOVA Esame su appuntamento
10/01/2025 09:00 GENOVA Esame su appuntamento