Obsah
- 1 Seminars on Computer Graphics 2 (Summer 2014)
- 1.1 Rules / Info
- 1.2 Homeworks
- 1.3 Projects
- 1.4 Exercises
- 1.4.1 Exercise00 [19.02.2014] "Introduction"
- 1.4.2 Exercise01 [26.02.2014] "Ray Casting"
- 1.4.3 Exercise02 [12.03.2014] "Primitives"
- 1.4.4 Exercise03 [19.03.2014] "Shader & Shading & Shadow"
- 1.4.5 Exercise04 [26.03.2014] "Lights & Shadows"
- 1.4.6 Exercise05 [02.04.2014] "More About Shaders"
- 1.4.7 Exercise06 [09.04.2014] "Even More About Shaders"
- 1.4.8 Exercise07 [16.04.2014] "The One About Acceleration"
- 1.4.9 Exercise08 [30.04.2014] "Postprocessing"
- 1.4.10 Exercise09 [07.05.2014] "Textures"
- 1.4.11 Exercise10 [14.05.2014] "Laboratory Experiment"
- 1.4.12 [21.05.2014] "Final Term"
Seminars on Computer Graphics 2 (Summer 2014)
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
- Matej Hudak (subseth.mato@gmail.com)
- Schedule of seminars is
- Wed (17:20) - Room I-H3
- Other collaborators and authors: Juraj Onderik
- Comment, errata, constructive criticism or suggestion - Make It Better
Homeworks
- You can get max 100% per homework. Submission after deadline is for 0%.
- There is a min 50% 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 cg2.2014.hw@gmail.com every week until the next Wednesday 17:20.
- 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.
- Your Evaluation
Projects
- There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:
- Implement photon mapping method
- Implement stochastic ray tracing method
- Implement radiosity method
- Implement ambient occlusion method
- Implement path tracing method - CUDA or openCL required
- Implement indirect lighting method
- Deadline: 18.5. - 23:59
- Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.
Exercises
Exercise00 [19.02.2014] "Introduction"
- Motivation?
- Theory / Reading?
- Computer Graphics in max planck institut 1 - Marcus Magnor
- Computer Graphics in max planck institut 2 - Marcus Magnor
- Computer Graphics - David Mount - Lecture 19
- Computer Graphics in MIT - Durand / Cutler
- Scratchapixel Lessons - intersections, polygones, phong lighting
- Ingo Wald's Thesis - PhD. thesis about rendering, acceleration and global illumination.
- Physically Based Rendering
- Practice?
- Intro to c#?
- Visual c# 2010, c# 4.0 in a Nutshell
- Visual Shortcuts, SharpDevelop Short cuts
- Exercise "Vectors and Matrices" - CG1
Exercise01 [26.02.2014] "Ray Casting"
- 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.
- Sample | Template
- Deadline: 12.3 - 17:20
Exercise02 [12.03.2014] "Primitives"
- Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [1] [2] [3]. 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
Exercise03 [19.03.2014] "Shader & Shading & Shadow"
- 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
Exercise04 [26.03.2014] "Lights & Shadows"
- Improve your tracer by adding a point light, spot light [4] 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 [5]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.
- Sample | Template
Exercise05 [02.04.2014] "More About Shaders"
- Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [6]. As usual you should use a similar functionality as in the sample application.
- '[2 bonus %]:
- Create a voronoi shader
- Sample | Template
Exercise06 [09.04.2014] "Even More About Shaders"
- 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
Exercise07 [16.04.2014] "The One About Acceleration"
- Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [7] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [8].
- Physically based rendering could help [9]
- Sample | Template
- Deadline: 07.5. - 17:20
- '[6 special bonus %]:
- Improve acceleration with KD Trees and SAH. Use it in 3D ray tracer for rendering mesh. Implement mesh loader and load the mesh from external source (e.g. stanford bunny - .obj format). You can use the standard mesh definition - everyting is a triangle.
- Special bonus deadline: 18.5. - 23:59
Exercise08 [30.04.2014] "Postprocessing"
- Improve your raytracer by adding supersampling SSAA / FSAA [10].
- Implement blur. User can scale the intensity of blur [11]
- [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: 7.5. - 17:20
Exercise09 [07.05.2014] "Textures"
- The time has come to use textures in your ray tracer [12] [13]
- Implement 3 kinds of texture mapping: plane, sphere [14] and normal mapping [15]
- Tutorial
- Define class Sampler and its descendants: class ColorSampler(only color) and class TextureSampler(also texture). Texture sampler should use some sort of sampling (clamp) and some sort of filtering (nearest neighbor)
- Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping
- Improve phong shader to include sample point from the texture
- Your results should be similar to the given sample
- [1 bonus %]:
- Implement repeat and mirror texture sampling and bilinear texture filtering (classic deadline)
- [3 special bonus %]:
- Implement mesh loader and load the mesh from external source (e.g. stanford bunny - .obj format). You can use the standard mesh definition - everyting is a triangle. Implement UV mapping (uv coordinates from .obj format) and smooth shading on mesh.
- Special bonus deadline: 18.5. - 23:59
- Sample | Template
Exercise10 [14.05.2014] "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
- Measure gloss value in different conditions
- Write your results: Template
- Fill out [ https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&usp=sharing online form ] with selected results (during the seminar)
- Guidelines are in the template
- Submit your results as a regular submission by mail
- Deadline: 18.5. - 23:59