Seminars
Syllabus
Week | Date | Content |
1. | 1.10. | Introduction |
2. | 8.10. | Team forming
Homework assignment I |
3. | 15.10. | Homework assignment I - consultation
|
4. | 22.10. | Homework assignment I - submission
Homework assignment II |
5. | 29.10. | Homework assignment II consultation |
6. | 5.11. | Homework assignment II - submission
Homework assignment III |
7. | 12.11. | Homework assignment III - consultation |
8. | 19.11. | Homework assignment III - submission
Homework assignment IV |
9. | 26.11. | Homework assignment IV - consultation |
10. | 3.12. | Homework assignment IV - submission
Homework assignment V |
11. | 10.12. | Test
Homework assignment V - consultation |
12. | 17.12. | Homework assignment V - submission |
13. | 7.1. | Assessment |
Rules of the Game
5 homework assignments: 50 points (10 points each) + bonus points
Test in the 11th week for up to 10 points
At least 30 points for the assessment
Homework Assignments
Simple graphics library (SGL) divided into 5 assignments
Team of two people
Submission:
-
Images diff
Speed competition
Speed competition (homework assignments I, II, III):
3 bonus points for the 1st fastest solution
2 bonus points for the 2nd fastest solution
1 bonus point for the 3rd fastest solution
Test Application
Test application using GLUT for all homework assignments:
testapp.zip
Use CMake to generate makefile or VS solution
Windows: freeglut binaries are part of the zip file
Linux/MacOS: GLUT installation (e.g. freeglut using brew)
Test application calls SGL functions defined in sgl/sgl.h, so don't change it!
Implement functions in sgl/sgl.cpp
Add your h/cpp files to sgl/
Switch contexts using keys 0-9
Homework Assignment I
2D Graphics Library, part A
Reference Images
graphics elements
transformations
transformation stack
Homework Assignment II
2D Graphics Library, part B
Presentation
Non-convex polygon filling:
Polygon definition (sglBegin(SGL_POLYGON))
Self-intersecting polygon filling, so don't use seed filling!
Filling circle, ellipse, and arc
Perspective projection (sglFrustum)
Depth management via z-buffer
BONUS:
Reference Images
non-convex polygon filling
graphics elements filling
3D scene rendering - cube with z-buffer enabled/disabled
3D scene rendering - NFF file
Homework Assignment III
Simple Ray Tracer, part A
Presentation
Scene definition via SGL
API (see sgl.h)
Primary rays generation:
Phong lighting model:
Material definition (see sglMaterial)
Diffuse coefficients: [r*kd g*kd b*kd]
Specular coefficients: [ks ks ks]
BONUS:
Test scenes and reference images
Homework Assignment IV
Simple Ray Tracer, part B
Presentation
Shadow rays
Secondary Rays: recursive ray tracing:
Backface culling: ignore intersections if DotProd(normal,dir)>0.0
BONUS:
Test Scenes and Reference Images
Homework Assignment V
Simple Ray Tracer, part C
Presentation
Area light sources:
Emissive materials support (see sglEmissiveMaterial)
Point sampling on triangles, 16 samples per triangle
Intensity of light samples (Phong lighting model):
sample_i = (r,g,b)*cos fi*(light_triangle_area/num_samples)/(c0 + c1*d + c2*d^2)
cos fi = DotProd(light_triangle_normal, -shadow_ray.direction)
Environment mapping:
Use environment map instead of constant background color (see sglEnvironmentMap)
Mapping ray direction to environment map coordinates (u,v) [0,1]x[0,1]:
BONUS:
Test Scenes and Reference Images