Cg2 2014.png

Computer Graphics 2

What you Need to Pass

  • Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.
  • Project and exercise (mandatory, 10+50 points).
  • Solve all homework problems (mandatory each one >=30%, 10 points)
  • Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.
  • Pass oral/written exam: (mandatory, +20 points)
  • Summary
    • Attendance = 0 or -100 (Fx)
    • Exercise = +50..0
    • Bonus = +10..0 (optional)
    • Homework = +10..4 or +4..0 (Fx)
    • Final term = +20..0
    • Oral/written exam = +20..0
  • Grades
    • A = 92-100
    • B = 84-91
    • C = 76-83
    • D = 68-75
    • E = 60-67
    • Fx = 0-59
  • Schedule
    • Mon (8:10) - Room B (lecture)
    • Wed (16:30) - Room I-H3 (seminar)

Materials to read

Lecture01 "Introduction to Computer Graphics"

Lecture02 "Ray Tracing 1."

Lecture03 "Ray Tracing 2."

Lecture04 "Ray Tracing 3."

  • Ray Tracing Acceleration
  • Data structure: grids, BVH, Kd-tree, Directional Partitioning
  • Dynamic Scenes
  • Beam and Cone Tracing
  • Packet Tracing
  • Lecture notes: lesson02.pdf
  • Poznámky v Slovenčine k téme Dátové Štruktúry a Kd-tree.
  • Štátnicová téma: Kanál metódy sledovania lúča. (definícia lúča, popis metódy sledovania lúča, generovanie lúča, pochod po lúči (ray traversal), prienik lúča s trojuholníkom, stromová štruktúra lúčov (ray tree) a jej použitie na výpočet lokálnej farby, problém presnosti priesečníkov)

Lecture05 "Light Trasport."

  • Physics behind ray tracing
  • Physical light quantities
  • Visual perception of light
  • Light sources
  • Light transport simulation: Rendering Equation
  • Lecture notes: lesson05.pdf

Lecture06 "Radiosity."

  • Diffuse reflectance function
  • Radiative equilibrium between emission and absorption, escape
  • System of linear equations
  • Iterative solution Neuman series
  • Lecture notes: lesson05.pdf
  • Boo chapter Shading: shading.pdf

Lecture07 "BRDF."

  • Bidirectional Reflectance Distribution Function (BRDF)
  • Reflection models
  • Projection onto spherical basis functions
  • Shading Phong model, Blin-Phong model
  • Lecture notes: lesson07.pdf
  • Homework:
    • 1. Prove that the specular BRDF from slides less07 fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF
    • 2. Derive the equation for reflected direction Omega_r from shading document.
  • Physical BRDF
  • Ward Reflection Model
  • Cook-Torrance model
  • Lecture notes: lesson07Phys.pdf

Lecture08 "Shadows."

Lecture09 "Texturing."

  • Texture parameterization
  • Procedural methods
  • Procedural textures
  • Fractal landscapes
  • Lecture notes: lesson09.pdf

Seminars on Computer Graphics 2

Rules / Info

  • On every seminar we will implement selected problems/algorithms related to lessons. We will usually - not necessary start with a prearranged template downloadable from this site.
  • As a programming language we will use C#. We will use Visual C# 2010 as development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.
  • Attendance at seminars is optional but recommended.
  • Seminars are conducted by
    • Michal Piovarči (, Room M113)
  • Schedule of seminars is
    • Wed (16:30) - Room I-H3


  • You can get max 100% per homework. Submission after deadline is for 0%.
  • There is a min 60% of your final evaluation required for admission to final term.
  • Additional activity can be awarder by max 10% of your final evaluation.
  • Don't cheat - create instead. Any kind of cheating is punished by withholding 30% of your final evaluation for all involved students.
  • As a homework, you will program what we could not finish during the exercise. Assignment and template will be downloadable from this site. See exercises.
  • Homework must be submitted by email to every week until the next Wednesday 16:30.
  • Your submission email must have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.
  • It is required to submit zipped source code of your homework (preferably the whole solution). Do not send executable files. Homework without the source code is for 0%.
  • Your code should be well formatted and commented. Titles of functions, classes, variables should be representative for their purpose. Homework without appropriate comments is for 0%.
  • There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.


Exercise00 [18.02.2015] "Introduction"

Exercise01 [25.02.2015] "Ray Casting"

  • Seminar slides
  • Implement a camera class suitable for the ray casting method. As usual you should use a similar functionality as in the sample application. Application should specifically be able to:
    • Render the scene (objects are movable).
    • Move the camera in a 3D space.
    • Change the camera's field of view (larger angle = more space to render), see Blender camera.
  • Try to change the color of the intersected object due to distance from the camera
  • [2 bonus %]:
    • Create a camera which will rotate around defined point P (target) along a sphere with r = 1. You can use ideas from the Blender camera system and / or two-angle camera in openGL. Camera should use some sort of interactivity (2 angles) and targeted point P should be movable. Bonus camera can be created in a separated solution or you can change the structure in the template to implement two different cameras.
    • Example Camera Movement
  • Sample | Template
  • Deadline: 4. 3. - 16:30

Exercise02 [4.03.2015] "Primitives"

  • Seminar slides
  • Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [1] [2] [3] [4]. Each object should be movable. As usual you should use a similar functionality as in the sample application.
  • [1 bonus %]:
    • Create also a cylinder and a cone primitives
  • Sample | Template
  • Deadline: 11. 3. - 16:30

Exercise03 [11.03.2015] "Shader & Shading & Shadow"

  • Seminar slides
  • Improve your tracer by adding shaders, shadows and lights. Implement checker and phong shader, sun light and hard shadows. Compute normals to each primitive in the point of intersection. As usual you should use a similar functionality as in the sample application.
  • Sample | Template
  • Deadline: 18. 3. - 16:30

Exercise04 [18.03.2015] "Lights & Shadows"

  • Seminar slides
  • Improve your tracer by adding a point light, spot light [5] and an area light. In the case of point and spot light, define the light as a point with hard shadows and linear/quadratic light attenuation [6]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.
  • [1 bonus %]:
    • Write equation for illumination computed by sample code from seminar slides
  • Sample | Template
  • Deadline: 25. 3. - 16:25

ExerciseLab [25.03.2015] "Laboratory Experiment"

  • Could we imitate materials from the real world?
  • Yes we can and we will. Choose a sample paint and
    • Measure its color in Lab and Convert to RGB - Easy RGB (use illuminant D50)
    • Measure gloss value in different conditions
  • Write your results: Template
    • Fill out online form with selected results (during the seminar)
    • Guidelines are in the template
    • Submit your results as a regular submission by mail

Exercise05 [01.04.2015] "More About Shaders"

  • Seminar slides
  • Improve your tracer by adding a few more shaders: Toon / Cell, Cook-Torrance, Oren-Nayar, Gradient. As usual you should use a similar functionality as in the sample application.
  • Set Cook-Torrance color to match your measurements from Laboratory exercise.
  • [2 bonus %]:
    • Implement Ward Shader [ Example ]
    • You should generate tangent space for each point on the sphere
    • Remember to keep the same orientation of tangent space at each point
    • You can replace Phong sphere with a Ward sphere
  • Sample | Template
  • Deadline: 15. 4. - 16:25

FreeTime [08.04.2015] There is no seminar this week

Exercise06 [15.04.2014] "Even More About Shaders"

  • Seminar slides
  • Improve your tracer by adding reflections and refractions to render mirror and glass objects. As usual you should use a similar functionality as in the sample application.
  • '[1 bonus %]:
    • Implement fresnel effect
  • Sample | Template
  • Deadline: 29. 4. - 16:25

Exercise07 [22.04.2015] There is no seminar this week

Exercise08 [29.04.2015] "Postprocessing"

  • Seminar slides
  • Improve your raytracer by adding supersampling SSAA / FSAA [7].
  • Implement blur. User can scale the intensity of blur [8]
  • [2 bonus %]:
    • Implement DOF. You can use definition from blur to create a fake DOF. User can define a point of sharpness and the intensity of the effect.
  • Sample | Template
  • Deadline: 6. 5. - 16:25
    • Also for laboratory exercise
Revision as of 16:22, 29 April 2015 by Piovarci (Talk | contribs)