<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
		<id>http://dev.dai.fmph.uniba.sk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mihalik</id>
		<title>Dev.DAI - Príspevky používateľa [sk]</title>
		<link rel="self" type="application/atom+xml" href="http://dev.dai.fmph.uniba.sk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mihalik"/>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Mihalik"/>
		<updated>2026-04-06T01:42:47Z</updated>
		<subtitle>Príspevky používateľa</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture10.pdf&amp;diff=14990</id>
		<title>Súbor:Lecture10.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture10.pdf&amp;diff=14990"/>
				<updated>2016-05-23T10:04:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Lecture10.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture10.pdf&amp;diff=14989</id>
		<title>Súbor:Lecture10.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture10.pdf&amp;diff=14989"/>
				<updated>2016-05-23T10:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14988</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14988"/>
				<updated>2016-05-23T10:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 &amp;quot;Reflections, Refractions&amp;quot; ===&lt;br /&gt;
* Blending&lt;br /&gt;
* Fresnel reflectance&lt;br /&gt;
* Environment mapping&lt;br /&gt;
* Water rendering&lt;br /&gt;
* Caustics&lt;br /&gt;
* Subsurface scattering&lt;br /&gt;
* Lecture notes: [[media:Lecture6.pdf|Lecture6.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson07 &amp;quot;Post-Processing&amp;quot; ===&lt;br /&gt;
* Depth of Field&lt;br /&gt;
* Gaussian blur&lt;br /&gt;
* Motion blur&lt;br /&gt;
* Glow&lt;br /&gt;
* High Dynamic Range&lt;br /&gt;
* Tone mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson08 &amp;quot;Geometry Optimalization&amp;quot; ===&lt;br /&gt;
* Reducing geometry&lt;br /&gt;
* Back-face culling&lt;br /&gt;
* Occlusion culling&lt;br /&gt;
* Levels of Detail&lt;br /&gt;
* Texture atlas&lt;br /&gt;
* Lecture notes: [[media:Lecture8.pdf|Lecture8.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson09 &amp;quot;GPGPU&amp;quot; ===&lt;br /&gt;
* SIMD&lt;br /&gt;
* CUDA&lt;br /&gt;
* Shared memory&lt;br /&gt;
* OpenCL&lt;br /&gt;
* Compute shaders&lt;br /&gt;
* Lecture notes: [[media:Lecture9.pdf|Lecture9.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson10 &amp;quot;GPU Volume Graphics&amp;quot; ===&lt;br /&gt;
* Volume Data&lt;br /&gt;
* Transfer Function&lt;br /&gt;
* Marching Cubes&lt;br /&gt;
* 3D Textures&lt;br /&gt;
* Multi-textures&lt;br /&gt;
* Ray-casting&lt;br /&gt;
* Lecture notes: [[media:Lecture10.pdf|Lecture10.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture9.pdf&amp;diff=14987</id>
		<title>Súbor:Lecture9.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture9.pdf&amp;diff=14987"/>
				<updated>2016-05-23T10:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Lecture9.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture9.pdf&amp;diff=14986</id>
		<title>Súbor:Lecture9.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture9.pdf&amp;diff=14986"/>
				<updated>2016-05-23T10:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14985</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14985"/>
				<updated>2016-05-23T09:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 &amp;quot;Reflections, Refractions&amp;quot; ===&lt;br /&gt;
* Blending&lt;br /&gt;
* Fresnel reflectance&lt;br /&gt;
* Environment mapping&lt;br /&gt;
* Water rendering&lt;br /&gt;
* Caustics&lt;br /&gt;
* Subsurface scattering&lt;br /&gt;
* Lecture notes: [[media:Lecture6.pdf|Lecture6.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson07 &amp;quot;Post-Processing&amp;quot; ===&lt;br /&gt;
* Depth of Field&lt;br /&gt;
* Gaussian blur&lt;br /&gt;
* Motion blur&lt;br /&gt;
* Glow&lt;br /&gt;
* High Dynamic Range&lt;br /&gt;
* Tone mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson08 &amp;quot;Geometry Optimalization&amp;quot; ===&lt;br /&gt;
* Reducing geometry&lt;br /&gt;
* Back-face culling&lt;br /&gt;
* Occlusion culling&lt;br /&gt;
* Levels of Detail&lt;br /&gt;
* Texture atlas&lt;br /&gt;
* Lecture notes: [[media:Lecture8.pdf|Lecture8.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson09 &amp;quot;GPGPU&amp;quot; ===&lt;br /&gt;
* SIMD&lt;br /&gt;
* CUDA&lt;br /&gt;
* Shared memory&lt;br /&gt;
* OpenCL&lt;br /&gt;
* Compute shaders&lt;br /&gt;
* Lecture notes: [[media:Lecture9.pdf|Lecture9.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture8.pdf&amp;diff=14984</id>
		<title>Súbor:Lecture8.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture8.pdf&amp;diff=14984"/>
				<updated>2016-05-23T09:57:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14983</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14983"/>
				<updated>2016-05-23T09:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 &amp;quot;Reflections, Refractions&amp;quot; ===&lt;br /&gt;
* Blending&lt;br /&gt;
* Fresnel reflectance&lt;br /&gt;
* Environment mapping&lt;br /&gt;
* Water rendering&lt;br /&gt;
* Caustics&lt;br /&gt;
* Subsurface scattering&lt;br /&gt;
* Lecture notes: [[media:Lecture6.pdf|Lecture6.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson07 &amp;quot;Post-Processing&amp;quot; ===&lt;br /&gt;
* Depth of Field&lt;br /&gt;
* Gaussian blur&lt;br /&gt;
* Motion blur&lt;br /&gt;
* Glow&lt;br /&gt;
* High Dynamic Range&lt;br /&gt;
* Tone mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson08 &amp;quot;Geometry Optimalization&amp;quot; ===&lt;br /&gt;
* Reducing geometry&lt;br /&gt;
* Back-face culling&lt;br /&gt;
* Occlusion culling&lt;br /&gt;
* Levels of Detail&lt;br /&gt;
* Texture atlas&lt;br /&gt;
* Lecture notes: [[media:Lecture8.pdf|Lecture8.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture7.pdf&amp;diff=14982</id>
		<title>Súbor:Lecture7.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture7.pdf&amp;diff=14982"/>
				<updated>2016-05-23T09:54:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14981</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14981"/>
				<updated>2016-05-23T09:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 &amp;quot;Reflections, Refractions&amp;quot; ===&lt;br /&gt;
* Blending&lt;br /&gt;
* Fresnel reflectance&lt;br /&gt;
* Environment mapping&lt;br /&gt;
* Water rendering&lt;br /&gt;
* Caustics&lt;br /&gt;
* Subsurface scattering&lt;br /&gt;
* Lecture notes: [[media:Lecture6.pdf|Lecture6.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson07 &amp;quot;Post-Processing&amp;quot; ===&lt;br /&gt;
* Depth of Field&lt;br /&gt;
* Gaussian blur&lt;br /&gt;
* Motion blur&lt;br /&gt;
* Glow&lt;br /&gt;
* High Dynamic Range&lt;br /&gt;
* Tone mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture7.pdf|Lecture7.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture6.pdf&amp;diff=14980</id>
		<title>Súbor:Lecture6.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture6.pdf&amp;diff=14980"/>
				<updated>2016-05-23T09:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14979</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14979"/>
				<updated>2016-05-23T09:50:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 &amp;quot;Reflections, Refractions&amp;quot; ===&lt;br /&gt;
* Blending&lt;br /&gt;
* Fresnel reflectance&lt;br /&gt;
* Environment mapping&lt;br /&gt;
* Water rendering&lt;br /&gt;
* Caustics&lt;br /&gt;
* Subsurface scattering&lt;br /&gt;
* Lecture notes: [[media:Lecture6.pdf|Lecture6.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture5.pdf&amp;diff=14978</id>
		<title>Súbor:Lecture5.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture5.pdf&amp;diff=14978"/>
				<updated>2016-05-23T09:47:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Lecture5.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture5.pdf&amp;diff=14977</id>
		<title>Súbor:Lecture5.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture5.pdf&amp;diff=14977"/>
				<updated>2016-05-23T09:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14976</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14976"/>
				<updated>2016-05-23T09:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 &amp;quot;Shadows&amp;quot; ===&lt;br /&gt;
* Shadows generation&lt;br /&gt;
* Light maps&lt;br /&gt;
* Planar shadows&lt;br /&gt;
* Projective shadows&lt;br /&gt;
* Shadow mapping&lt;br /&gt;
* Shadow volumes&lt;br /&gt;
* Lecture notes: [[media:Lecture5.pdf|Lecture5.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture4.pdf&amp;diff=14975</id>
		<title>Súbor:Lecture4.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture4.pdf&amp;diff=14975"/>
				<updated>2016-05-23T09:43:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Lecture4.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture4.pdf&amp;diff=14974</id>
		<title>Súbor:Lecture4.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture4.pdf&amp;diff=14974"/>
				<updated>2016-05-23T09:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14973</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14973"/>
				<updated>2016-05-23T09:42:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 &amp;quot;Global Illumination&amp;quot; ===&lt;br /&gt;
* Ambient occlusion&lt;br /&gt;
* Distance attenuation&lt;br /&gt;
* Ray tracing&lt;br /&gt;
* Depth buffer masking&lt;br /&gt;
* Lecture notes: [[media:Lecture4.pdf|Lecture4.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv9.zip&amp;diff=14935</id>
		<title>Súbor:Cv9.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv9.zip&amp;diff=14935"/>
				<updated>2016-05-11T16:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14934</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14934"/>
				<updated>2016-05-11T16:12:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise09 &amp;quot;Post-processing” ===&lt;br /&gt;
* Post-processing&lt;br /&gt;
* Glow&lt;br /&gt;
Témy: nastavte shader program na zobrazenie glow efektu: [[media:cv9.zip|cv9.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14933</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14933"/>
				<updated>2016-05-09T10:17:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
 [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&amp;lt;!----&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
[[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]&lt;br /&gt;
 [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14932</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14932"/>
				<updated>2016-05-09T08:32:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
 [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&amp;lt;!----&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
[[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv8.zip&amp;diff=14925</id>
		<title>Súbor:Cv8.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv8.zip&amp;diff=14925"/>
				<updated>2016-05-05T07:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14924</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14924"/>
				<updated>2016-05-05T07:16:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise08 &amp;quot;Ambient Occlusion” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
Témy: nastavte shader program na zobrazenie efektu ambient occlusion: [[media:cv8.zip|cv8.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14897</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14897"/>
				<updated>2016-04-23T18:18:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
 [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&amp;lt;!----&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14896</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14896"/>
				<updated>2016-04-23T18:16:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== ExerciseLab &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&amp;lt;!----&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
 [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14890</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14890"/>
				<updated>2016-04-20T19:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: /* Excercise06 &amp;quot;Shadow Mapping” */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise07 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv7.zip&amp;diff=14889</id>
		<title>Súbor:Cv7.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv7.zip&amp;diff=14889"/>
				<updated>2016-04-20T19:52:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14888</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14888"/>
				<updated>2016-04-20T19:50:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Shadow Mapping” ===&lt;br /&gt;
* Hĺbková textúra&lt;br /&gt;
* Tieň&lt;br /&gt;
Témy: nastavte kameru z pohľadu svetla a zobrazte tieň: [[media:cv7.zip|cv7.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14887</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14887"/>
				<updated>2016-04-18T10:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
 [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv6.zip&amp;diff=14879</id>
		<title>Súbor:Cv6.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv6.zip&amp;diff=14879"/>
				<updated>2016-04-14T07:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Cv6.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv6.zip&amp;diff=14878</id>
		<title>Súbor:Cv6.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv6.zip&amp;diff=14878"/>
				<updated>2016-04-14T07:38:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14877</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14877"/>
				<updated>2016-04-14T07:37:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise06 &amp;quot;Projekcia” ===&lt;br /&gt;
* Projekčná matica&lt;br /&gt;
* Zobrazenie modelu&lt;br /&gt;
Témy: nastavte kameru a zobrazte scénu: [[media:cv6.zip|cv6.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14851</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14851"/>
				<updated>2016-04-03T19:45:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14850</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14850"/>
				<updated>2016-04-03T19:44:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
 * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] &lt;br /&gt;
&amp;lt;!--* '''Deadline: 15. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv5.zip&amp;diff=14829</id>
		<title>Súbor:Cv5.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv5.zip&amp;diff=14829"/>
				<updated>2016-03-31T07:46:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: Mihalik uploaded a new version of File:Cv5.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv5.zip&amp;diff=14828</id>
		<title>Súbor:Cv5.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv5.zip&amp;diff=14828"/>
				<updated>2016-03-31T07:45:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14827</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14827"/>
				<updated>2016-03-31T07:44:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: /* Excercise04 &amp;quot;Motion Blur” */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise05 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14826</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14826"/>
				<updated>2016-03-31T07:44:35Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Motion Blur” ===&lt;br /&gt;
* Screen space motion blur&lt;br /&gt;
* Framebuffer Object&lt;br /&gt;
Témy: napíšte shader ktorý vytvorí efekt &amp;quot;motion blur&amp;quot;: [[media:cv5.zip|cv5.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture3.pdf&amp;diff=14821</id>
		<title>Súbor:Lecture3.pdf</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Lecture3.pdf&amp;diff=14821"/>
				<updated>2016-03-26T10:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14820</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14820"/>
				<updated>2016-03-26T10:56:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 &amp;quot;Lighting, Texturing&amp;quot; ===&lt;br /&gt;
* Rendering equation&lt;br /&gt;
* Phong local illumination&lt;br /&gt;
* Oren-Nayar model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Texture filtering&lt;br /&gt;
* Bump mapping&lt;br /&gt;
* Lecture notes: [[media:Lecture3.pdf|Lecture3.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14801</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14801"/>
				<updated>2016-03-21T10:35:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [01.04.2015] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] --&amp;gt;&lt;br /&gt;
* '''Deadline: 15. 4. - 16:25'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14800</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14800"/>
				<updated>2016-03-21T10:34:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [18.03.2015] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [01.04.2015] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] --&amp;gt;&lt;br /&gt;
* '''Deadline: 15. 4. - 16:25'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14790</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14790"/>
				<updated>2016-03-14T10:45:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [18.03.2015] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 &amp;lt;!--[[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]] --&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [01.04.2015] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] --&amp;gt;&lt;br /&gt;
* '''Deadline: 15. 4. - 16:25'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14789</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14789"/>
				<updated>2016-03-14T10:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [18.03.2015] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
 [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [01.04.2015] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] --&amp;gt;&lt;br /&gt;
* '''Deadline: 15. 4. - 16:25'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv4.zip&amp;diff=14788</id>
		<title>Súbor:Cv4.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv4.zip&amp;diff=14788"/>
				<updated>2016-03-13T20:02:33Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14787</id>
		<title>RealTimeComputerGraphics</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=RealTimeComputerGraphics&amp;diff=14787"/>
				<updated>2016-03-13T20:01:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Real-time computer graphics==&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This lecture ...&lt;br /&gt;
* Will focus on visualization of 3D scenes&lt;br /&gt;
* Will show you what are current topics&lt;br /&gt;
* Will improve your skills in&lt;br /&gt;
** OpenGL&lt;br /&gt;
** Computational geometry&lt;br /&gt;
** Algorithms and data structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Show your project (70%).&lt;br /&gt;
**Project specification template: [[media:RTGProjektSpecifikacia.doc|RTGProjektSpecifikacia.doc]]&lt;br /&gt;
**For video recording you can use: https://obsproject.com/&lt;br /&gt;
* Pass oral exam: (30%, min. 15 points).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
== LESSONS ==&lt;br /&gt;
&lt;br /&gt;
=== Lesson00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Introduction to Computer Graphics&lt;br /&gt;
* Common techniques&lt;br /&gt;
* Cutting edge tools and packages&lt;br /&gt;
* State of the Art&lt;br /&gt;
* Lecture schedule&lt;br /&gt;
* &amp;quot;Terms and conditions&amp;quot; of this lecture&lt;br /&gt;
* Lecture notes: [[media:Lecture0.pdf|Lecture0.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson01 &amp;quot;Graphics Pipeline, Shaders&amp;quot; ===&lt;br /&gt;
* OpenGL Graphics Pipeline&lt;br /&gt;
* Shader languages&lt;br /&gt;
* GLSL – vertex, fragment&lt;br /&gt;
* Passing variables&lt;br /&gt;
* Lecture notes: [[media:Lecture1.pdf|Lecture1.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 &amp;quot;Buffer Objects, FBO&amp;quot; ===&lt;br /&gt;
* Vertex arrays&lt;br /&gt;
* Buffer object data&lt;br /&gt;
* Vertex Buffer Objects&lt;br /&gt;
* Pixel Buffer Objects&lt;br /&gt;
* Rendering to texture&lt;br /&gt;
* Deferred lighting&lt;br /&gt;
* Lecture notes: [[media:Lecture2.pdf|Lecture2.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=EXCERCISES=&lt;br /&gt;
*On every seminar we will focus on the selected problems from lessons. We will use programming tools to perform real-time computer graphics algorithms.&lt;br /&gt;
*Tutorials:&lt;br /&gt;
**http://www.lighthouse3d.com&lt;br /&gt;
**http://antongerdelan.net/opengl/&lt;br /&gt;
*Libraries:&lt;br /&gt;
**https://www.opengl.org/resources/libraries/glut/&lt;br /&gt;
**http://openil.sourceforge.net/&lt;br /&gt;
**http://glew.sourceforge.net/&lt;br /&gt;
**http://gnuwin32.sourceforge.net/packages/freetype.htm&lt;br /&gt;
**http://assimp.sourceforge.net/&lt;br /&gt;
**All in one package:&lt;br /&gt;
***[[media:dependancies.zip|dependancies.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise00 &amp;quot;Základný projekt” ===&lt;br /&gt;
* Základný projekt: [[media:cv0.rar|cv0.rar]]&lt;br /&gt;
* Práca s knižnicami GLUT a GLEW&lt;br /&gt;
Témy: spustenie projektu, cvičenie s pridávaním svetla do scény a shaderov&lt;br /&gt;
&lt;br /&gt;
=== Excercise01 &amp;quot;Animácia” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
Témy: cvičenie transformácie v shader programe: [[media:cv1.rar|cv1.rar]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise02 &amp;quot;GLSL 4.00.9” ===&lt;br /&gt;
* Transformácia objektov&lt;br /&gt;
* Animácia, matice&lt;br /&gt;
* VBO&lt;br /&gt;
Témy: prepíšte predchádzajúce cvičenie do GLSL 4.00.9: [[media:cv2.zip|cv2.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise03 &amp;quot;Geometry Shader” ===&lt;br /&gt;
* Z buffer&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
Témy: napíšte geometry shader ktorý vytvorí z trojuholníka štvorsten: [[media:cv3.zip|cv3.zip]]&lt;br /&gt;
&lt;br /&gt;
=== Excercise04 &amp;quot;Tessellation” ===&lt;br /&gt;
* Tessellation control shader&lt;br /&gt;
* Tessellation evaluation shader&lt;br /&gt;
Témy: napíšte control a evaluation  shader ktorý prerozdelí trojuholník: [[media:cv4.zip|cv4.zip]]&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14777</id>
		<title>CG2 2014/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=14777"/>
				<updated>2016-03-07T11:43:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Advanced Computer Graphics =&lt;br /&gt;
&lt;br /&gt;
== What you Need to Pass ==&lt;br /&gt;
&lt;br /&gt;
* Attend lessons. One missed +0 points. 2 missed 0 points, 3 missed 0 points, 4 and more is Fx.&lt;br /&gt;
* Project and exercise (mandatory, 10+50 points).&lt;br /&gt;
* Solve all homework problems (mandatory each one &amp;gt;=30%, 10 points)&lt;br /&gt;
* Pass final term (mandatory, 20 points) You will need to solve several problems discussed during lessons.&lt;br /&gt;
* Pass oral/written exam: (mandatory, +20 points) &lt;br /&gt;
* Summary&lt;br /&gt;
** Attendance = 0 or -100 (Fx)&lt;br /&gt;
** Exercise = +50..0 &lt;br /&gt;
** Bonus = +10..0 (optional)&lt;br /&gt;
** Homework = +10..4 or +4..0 (Fx)&lt;br /&gt;
** Final term = +20..0&lt;br /&gt;
** Oral/written exam = +20..0&lt;br /&gt;
&lt;br /&gt;
* Grades&lt;br /&gt;
** A = 92-100&lt;br /&gt;
** B = 84-91&lt;br /&gt;
** C = 76-83&lt;br /&gt;
** D = 68-75&lt;br /&gt;
** E = 60-67&lt;br /&gt;
** Fx = 0-59&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1k9qGAlKjxJLHS71MDg6L_Mz4wJH4snIfPWXGo2R35Eo/edit?usp=sharing VIEW RESULTS]&lt;br /&gt;
* [https://moodle.uniba.sk/fmfi Final Term] by Mooddle Ecetronic test 160.5.2015 8:10 in M-I)&lt;br /&gt;
&lt;br /&gt;
* Schedule&lt;br /&gt;
** Mon (8:10) - Room M-I (lecture)&lt;br /&gt;
** Mon (11:30) - Room I-H3 (seminar)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Materials to read === &lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.amazon.com/Mathematics-Computer-Graphics-Undergraduate-Science/dp/1849960224&lt;br /&gt;
* http://www.martinus.sk/?uItem=19688 - Moderni Pocitacova Grafika&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Lecture00 &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
* Computer Graphics Applications&lt;br /&gt;
&lt;br /&gt;
=== Lecture01 &amp;quot;Graphics Pipeline&amp;quot; ===&lt;br /&gt;
* What is The Graphics Pipeline&lt;br /&gt;
* Vertex Shader&lt;br /&gt;
* Primitive Assembly&lt;br /&gt;
* Tessellation Shaders&lt;br /&gt;
* Geometry Shader&lt;br /&gt;
* Geometry Postprocessing and Rasterization&lt;br /&gt;
* Fragment Shader&lt;br /&gt;
* Frame Buffer Operations&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson00.pdf|lesson00.pdf]]&lt;br /&gt;
* Štátnicová téma: Zobrazovací kanál. Grafická pipeline moderného hardvéru, framebuffer, buffer objekty, používané súradnicové priestory, druhy shader programov, druhy optimalizačných techník (view frustum, occlusion, backface culling), príklad shader programov.&lt;br /&gt;
&lt;br /&gt;
=== Lecture02 &amp;quot;Ray Tracing 1.&amp;quot; ===&lt;br /&gt;
* TayTracong Pipeline&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture03 &amp;quot;Ray Tracing 2.&amp;quot; ===&lt;br /&gt;
* Ray Intersections&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson01.pdf|lesson01.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture04 &amp;quot;Ray Tracing 3.&amp;quot; ===&lt;br /&gt;
* Ray Tracing Acceleration&lt;br /&gt;
* Data structure: grids, BVH, Kd-tree, Directional Partitioning&lt;br /&gt;
* Dynamic Scenes&lt;br /&gt;
* Beam and Cone Tracing &lt;br /&gt;
* Packet Tracing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson02.pdf|lesson02.pdf]]&lt;br /&gt;
* Poznámky v Slovenčine k téme [[media:cg2_DatoveStruktury.pdf|Dátové Štruktúry]] a [[media:cg2_Kd-tree.pdf|Kd-tree]]. &lt;br /&gt;
* Štátnicová téma: Kanál metódy sledovania lúča a porovnanie s Radiosity metódou. (definícia lúča, definícia tieňového 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). Metóda sledovania lúča na GPU, urýchľovacie techniky.&lt;br /&gt;
&lt;br /&gt;
=== Lecture05 &amp;quot;Light Trasport.&amp;quot; ===&lt;br /&gt;
* Physics behind ray tracing&lt;br /&gt;
* Physical light quantities&lt;br /&gt;
* Visual perception of light&lt;br /&gt;
* Light sources&lt;br /&gt;
* Light transport simulation: Rendering Equation&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Štátnicová téma: Fyzikálny osvetlovací model a výpočet farieb renderovacou rovnicou. (definícia radiancie, definícia BRDF a jej vlastnosti, fyzikálne BRDF Cook-Tarrance, definícia priestorového uhlu, napíšte renderovaciu rovnicu a vysvetlite jej členy).&lt;br /&gt;
&lt;br /&gt;
=== Lecture06 &amp;quot;Radiosity.&amp;quot; ===&lt;br /&gt;
* Diffuse reflectance function&lt;br /&gt;
* Radiative equilibrium between emission and absorption, escape&lt;br /&gt;
* System of linear equations&lt;br /&gt;
* Iterative solution Neuman series&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson05.pdf|lesson05.pdf]]&lt;br /&gt;
* Boo chapter Shading: [[media:Shading.pdf|shading.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture07 &amp;quot;BRDF.&amp;quot; ===&lt;br /&gt;
* Bidirectional Reflectance Distribution Function (BRDF)&lt;br /&gt;
* Reflection models&lt;br /&gt;
* Projection onto spherical basis functions&lt;br /&gt;
* Shading Phong model, Blin-Phong model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07.pdf|lesson07.pdf]]&lt;br /&gt;
* Homework: &lt;br /&gt;
** 1. Prove that the specular BRDF from slides [https://dai.fmph.uniba.sk/upload/1/1d/Cg2_lesson07.pdf less07] fulfills the BRDF properties: reciprocity, energy conservation, definit space, value space of BRDF&lt;br /&gt;
** 2. Derive the equation for reflected direction Omega_r from [https://dai.fmph.uniba.sk/upload/e/eb/Shading.pdf shading] document.&lt;br /&gt;
* Physical BRDF&lt;br /&gt;
* Ward Reflection Model&lt;br /&gt;
* Cook-Torrance model&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson07Phys.pdf|lesson07Phys.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture08 &amp;quot;Shadows.&amp;quot; ===&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson08.pdf|lesson08.pdf]]&lt;br /&gt;
* Štátnicová téma: Tiene, typy tieňov (mäkké, tvrdé, statické, dynamické), typy a popis algoritmov (projekčné, tieňové objemy, tieňové mapy (shadow mapping)), spôsoby implementácie jednotlivých algoritmov, artefakty a ich odstraňovanie, príklad shader programov pre tieňové mapy. Artefakty spôsobené diskretizáciou. Tiene vo Phongovom modeli.&lt;br /&gt;
&lt;br /&gt;
=== Lecture09 &amp;quot;Texturing 1, 2.&amp;quot; ===&lt;br /&gt;
* Texture parameterization&lt;br /&gt;
* Procedural methods&lt;br /&gt;
* Procedural textures&lt;br /&gt;
* Fractal landscapes&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson09.pdf|lesson09.pdf]]&lt;br /&gt;
* Book chapter (Surface reality techniques): [[media:cg2_lessonBook09.pdf|lessonBoook09.pdf]]&lt;br /&gt;
* Štátnicová téma: Lokálne osvetľovacie modely. (tieňovanie, Phongov a Blinn-Phongov osvetlovací model, zložky (ambientna, difúzna, zrkadlová), textúrovanie a druhy textúr, mapovanie a filtrácia textúr, popísať princípy environment, bump, normal mapovania, textúrovací a tangenciálny priestor, príklad shader programov na GPU.&lt;br /&gt;
&lt;br /&gt;
=== Lecture10 &amp;quot;Image Based Rendering 1.&amp;quot; ===&lt;br /&gt;
* Plenopticfunction&lt;br /&gt;
* Panoramas&lt;br /&gt;
* Concentric Mosaics&lt;br /&gt;
* Light Field Rendering&lt;br /&gt;
* The Lumigraph&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
* Homework: Blinn-Phong enumeration.&lt;br /&gt;
&lt;br /&gt;
=== Lecture11 &amp;quot;Image Based Rendering 2.&amp;quot; ===&lt;br /&gt;
* Layered Depth Images&lt;br /&gt;
* View-dependent Texture Mapping&lt;br /&gt;
* Surface Light Fields&lt;br /&gt;
* View Morphing&lt;br /&gt;
* Lecture notes: [[media:cg2_lesson10.pdf|lesson10.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== Lecture12 &amp;quot;Ask me anything.&amp;quot; ===&lt;br /&gt;
* Test problem introduction&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Seminars on Advanced Computer Graphics  =&lt;br /&gt;
&lt;br /&gt;
== Rules / Info ==&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Michal Piovarči (cg2.2015.hw@gmail.com, Room M113)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (16:30) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&lt;br /&gt;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Homeworks ==&lt;br /&gt;
* You can get '''max 100% per homework'''. Submission after deadline is for 0%.&lt;br /&gt;
* There is a '''min 60% of your final evaluation''' required for admission to final term.&lt;br /&gt;
* Additional activity can be awarder by '''max 10% of your final evaluation'''.&lt;br /&gt;
* Don't cheat - create instead. Any kind of cheating is punished by '''withholding 30% of your final evaluation''' for all involved students.&lt;br /&gt;
* 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.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Homework must be submitted by email to [mailto:cg2.2015.hw@gmail.com  cg2.2015.hw@gmail.com] every week until the '''next Wednesday 16:30'''.&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* 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%.&lt;br /&gt;
* 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%.&lt;br /&gt;
* There are ~12 homeworks during the semester. This number can change due to holidays, tech. problems etc.&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0AguOJecPQwoSdFVER3BYMVhINHBnTnRGelVlUGx3eVE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* There are no projects in this semester. However, if you want to implement something different than exercises you can choose e.g.:&lt;br /&gt;
** Implement photon mapping method&lt;br /&gt;
** Implement stochastic ray tracing method&lt;br /&gt;
** Implement radiosity method&lt;br /&gt;
** Implement ambient occlusion method&lt;br /&gt;
** Implement path tracing method - CUDA or openCL required&lt;br /&gt;
** Implement indirect lighting method&lt;br /&gt;
&lt;br /&gt;
* '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* Motivation?&lt;br /&gt;
** [http://goo.gl/5YLSxN 1st Octane], [http://goo.gl/J0E8qM 2nd Octane], [http://goo.gl/xVMEIk 3rd Octane]&lt;br /&gt;
** [http://www.fxguide.com/featured/the-state-of-rendering/ The State of Rendering 1], [http://www.fxguide.com/featured/the-state-of-rendering-part-2/ The State of Rendering 2]&lt;br /&gt;
* Theory / Reading?&lt;br /&gt;
** [http://www.scratchapixel.com/lessons/ Scratchapixel Lessons] - intersections, polygones, phong lighting&lt;br /&gt;
** [http://www.sci.utah.edu/~wald/PhD/wald_phd.pdf Ingo Wald's Thesis] - PhD. thesis about rendering, acceleration and global illumination.&lt;br /&gt;
** [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792 Physically Based Rendering]&lt;br /&gt;
* Practice?&lt;br /&gt;
** [http://www.belanecbn.sk/3dtutorials/index.php?id=16 Ray Tracer in c++]&lt;br /&gt;
** [http://www.codeproject.com/Articles/20355/Simple-Ray-Tracing-in-C-Part-VII-Shadows Ray Tracer in c#]&lt;br /&gt;
* Intro to c#?&lt;br /&gt;
** [http://www.amazon.com/Microsoft-Visual-2010-Step/dp/0735626707 Visual c# 2010], [http://www.amazon.com/4-0-Nutshell-The-Definitive-Reference/dp/0596800959 c# 4.0 in a Nutshell]&lt;br /&gt;
** [http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx Visual Shortcuts], [http://www.shortcutworld.com/en/win/SharpDevelop_4.0.html SharpDevelop Short cuts]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [[media:Ex01.Info.pdf|Info]] | [[media:CG1.Ex01.Sample.zip|Sample]] | [[media:CG1.Ex01.Template.zip‎|Template]]&lt;br /&gt;
* [http://www.sosmath.com/matrix/inverse/inverse.html Inverse Matrix] | [http://www.mathwords.com/a/adjoint.htm Adjoint Matrix] | [http://en.wikipedia.org/wiki/Adjugate_matrix Adjoint Matrix Wiki]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Bonus''' implement unit tests:&lt;br /&gt;
** Add drop-down option called '''Unit Test'''&lt;br /&gt;
** Create '''2 tests for each arithmetic operation''' in the drop-down menu&lt;br /&gt;
** Compare the result calculated by your implementation with a precalculated result&lt;br /&gt;
** Count successful tests and output final score to console&lt;br /&gt;
* [[media:CG2.Ex00.pdf | Seminar slides]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 &amp;quot;Ray Casting&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex01.pdf | Seminar slides]]&lt;br /&gt;
* 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:&lt;br /&gt;
** Render the scene (objects are movable).&lt;br /&gt;
** Move the camera in a 3D space.&lt;br /&gt;
** Change the camera's field of view (larger angle = more space to render), see Blender camera.&lt;br /&gt;
* Try to change the color of the intersected object due to distance from the camera&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** [http://youtu.be/1twa3CJOEfA?t=1m49s Example Camera Movement]&lt;br /&gt;
* [[media:CG2.Ex01.Sample.zip | Sample]] | [[media:CG2.Ex01.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 4. 3. - 16:30'''&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 &amp;quot;Primitives&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex02.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a few primitives (ring, sphere, AABB box, triangle) [http://mrl.nyu.edu/~dzorin/rend05/lecture1a.pdf]  [http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/] [http://geomalgorithms.com/a04-_planes.html#Barycentric-Coordinate-Compute] [http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf]. Each object should be movable. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Create also a cylinder and a cone primitives&lt;br /&gt;
[[media:CG2.Ex02.Sample.zip | Sample]] | [[media:CG2.Ex02.Template.zip | Template]]&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- '''Deadline: 11. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex03.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
[[media:CG2.Ex03.Sample.zip | Sample]] | [[media:CG2.Ex03.Template.zip | Template]] &lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 18. 3. - 16:30''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [18.03.2015] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex04.pdf | Seminar slides]]&lt;br /&gt;
* Improve your tracer by adding a point light, spot light [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lamps/Spot] 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 [http://wiki.blender.org/index.php/Doc:2.6/Manual/Lighting/Lights/Light_Attenuation]. Area light could be defined by Lights x Lights point lights. Area light should also be able to produce soft shadows.&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Write equation for illumination computed by sample code from seminar slides&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex04.Sample.zip | Sample]] | [[media:CG2.Ex04.Template.zip | Template]] --&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!-- * '''Deadline: 25. 3. - 16:25''' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ExerciseLab [25.03.2015] &amp;quot;Laboratory Experiment&amp;quot; ===&lt;br /&gt;
* Could we imitate materials from the real world?&lt;br /&gt;
** [http://img291.imageshack.us/img291/4066/failani.png Anisotropic], [http://rhinotoday.com/wp-content/uploads/2012/03/keyshot-render-paint-sphere.jpg Carpaint], [http://1.bp.blogspot.com/_TCqLkmUciss/TPMGTwQwteI/AAAAAAAAALI/ZO5RQt60E6k/s1600/Glass_Balls_Color-1280x800.jpg Translucent], [http://graphics.ucsd.edu/~henrik/papers/photon_diffusion/milk_photon_diffusion.jpg Semi-translucent]&lt;br /&gt;
* Yes we can and we will. Choose a sample paint and &lt;br /&gt;
** Measure its '''color in Lab''' and Convert to '''RGB''' - [http://www.easyrgb.com/index.php?X=CALC Easy RGB] (use illuminant D50)&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Fill out [https://docs.google.com/spreadsheets/d/1vTk48NSrglbi9LJScbdDcOctnlvDvS5DYxxR_TCiRCg/edit?usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the [http://www.sccg.sk/~hudak/CG2/CG2.Ex10.Template.doc template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [01.04.2015] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex05.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* Set Cook-Torrance color to match your measurements from Laboratory exercise.&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** Implement [http://cseweb.ucsd.edu/~ravir/6998/papers/p265-ward.pdf Ward Shader] [ [[media:Spheres.PNG|Example]] ]&lt;br /&gt;
** You should generate tangent space for each point on the sphere&lt;br /&gt;
** Remember to keep the same orientation of tangent space at each point&lt;br /&gt;
** You can replace Phong sphere with a Ward sphere&lt;br /&gt;
&amp;lt;!-- * [[media:CG2.Ex05.Sample.zip|Sample]] | [[media:CG2.Ex05.Template.zip|Template]] --&amp;gt;&lt;br /&gt;
* '''Deadline: 15. 4. - 16:25'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === FreeTime [08.04.2015] There is no seminar this week === --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [15.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex06.pdf | Seminar slides]]&lt;br /&gt;
* 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.&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement fresnel effect&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex06.Sample.zip | Sample]] | [[media:CG2.Ex06.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 29. 4. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Exercise07 [22.04.2015] There is no seminar this week ===--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 &amp;quot;Postprocessing&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex08.pdf | Seminar slides]]&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* Implement blur. User can scale the intensity of blur [http://www.blackpawn.com/texts/blur/default.html]&lt;br /&gt;
* '''[2 bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex08.Sample.zip | Sample]] | [[media:CG2.Ex08.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* '''Deadline: 6. 5. - 16:25'''--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [06.05.2015] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* [[media:CG2.Ex09.pdf‎ | Seminar slides]]&lt;br /&gt;
&amp;lt;!-- * The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans] [http://www.crazybump.com/]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere [http://4.bp.blogspot.com/-X5yJU7L87b4/Tuph1yIE64I/AAAAAAAAAOg/n36HVurEtxs/s1600/adadad.png] and normal mapping [http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/]&lt;br /&gt;
* Tutorial&lt;br /&gt;
** 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)&lt;br /&gt;
** Define class TextureMapping and its descendants: class PlaneMapping, class SphereMapping and class NormalMapping&lt;br /&gt;
** Improve phong shader to include sample point from the texture&lt;br /&gt;
* Your results should be similar to the given sample 	&lt;br /&gt;
* '''[1 bonus %]:''' &lt;br /&gt;
** Implement repeat and mirror texture sampling and bilinear texture filtering&lt;br /&gt;
&amp;lt;!--* [[media:CG2.Ex09.Sample.zip | Sample]] | [[media:CG2.Ex09.Template.zip | Template]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template] --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* '''Deadline for laboratory exercise: 13. 5. - 16:30'''&lt;br /&gt;
** No other assignment this week&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMA &amp;quot;Ask Me Anything&amp;quot; ===&lt;br /&gt;
* Send your questions in advance to homework email&lt;br /&gt;
&lt;br /&gt;
=== Final Term &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
* Final test in moodle&lt;br /&gt;
* Oral exam afterwards for successful students&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== [20.05.2015] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== ExerciseChicken [01.04.2015] &amp;quot;The One About Chickens&amp;quot; ===&lt;br /&gt;
* [[media:CG2.ExChicken.pdf‎ | Chicken slides]]&lt;br /&gt;
* Improve your chickener by adding a few more shaders: Chicken, Cooked-Chicken, Chicken-Nyan. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [02.04.2014] &amp;quot;More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding a few procedural shaders: noise, turbulence / clouds / marble, stripes, gradient, wood. For inspiration and additional material start here - [http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural]. As usual you should use a similar functionality as in the sample application.&lt;br /&gt;
* ''''[2 bonus %]:''' &lt;br /&gt;
** Create a voronoi shader&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex05.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;The One About Acceleration&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH) [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03-kdtrees.pdf] (4.4.2). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application [http://www.sccg.sk/~durikovic/classes/CG2/Handouts/CG03RT-II.pdf].&lt;br /&gt;
* Physically based rendering could help [http://www.amazon.com/Physically-Based-Rendering-Second-Edition/dp/0123750792]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;br /&gt;
*'''Deadline:''' 07.5. - 17:20&lt;br /&gt;
* ''''[6 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
* '''[3 special bonus %]:''' &lt;br /&gt;
** 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.&lt;br /&gt;
** '''Special bonus deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=Andrej_Mihalik&amp;diff=14776</id>
		<title>Andrej Mihalik</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=Andrej_Mihalik&amp;diff=14776"/>
				<updated>2016-03-07T11:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Osoba&lt;br /&gt;
  | fullname = Mgr. Andrej Mihálik, PhD.&lt;br /&gt;
  | caption  = Andrej Mihálik&lt;br /&gt;
  | image    = Mihalik.jpg&lt;br /&gt;
  | section  = Oddelenie počítačovej grafiky&lt;br /&gt;
  | position = odborný asistent&lt;br /&gt;
  | phone    = (+421 2 602 95) 443&lt;br /&gt;
  | room     = i6&lt;br /&gt;
  | email    = mihalik[[Image:zavinac.gif|@]]sccg.sk&lt;br /&gt;
  | web      = [http://www.sccg.sk/~mihalik/ homepage]&lt;br /&gt;
  | info     =&lt;br /&gt;
&lt;br /&gt;
=== Výučba zimný semester ===&lt;br /&gt;
* [[Physical-based_Animations_and_Mathematical_Modeling_Material|Physical-based Animations and Mathematical Modeling]]&lt;br /&gt;
*[[YACGS|YACGS - Yet Another Computer Graphics Seminar]]&lt;br /&gt;
*[[Project Seminar 2|Project Seminar 2]]&lt;br /&gt;
=== Výučba letný semester ===&lt;br /&gt;
*[[CG2_2014/en|Advanced Computer Graphics]]&lt;br /&gt;
*[[YACGS|YACGS - Yet Another Computer Graphics Seminar]]&lt;br /&gt;
*[[RealTimeComputerGraphics| Grafika v reálnom čase]]&lt;br /&gt;
&lt;br /&gt;
=== Výskum ===&lt;br /&gt;
* Realistic Image Synthesis and Illumination&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Publikácie ===&lt;br /&gt;
* [https://scholar.google.com/citations?hl=sk&amp;amp;user=YMY1wssAAAAJ&amp;amp;view_op=list_works&amp;amp;is_public_preview=1 GoogleScholar]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:7pt;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Zodpovedný za stránky:&lt;br /&gt;
* &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv3.zip&amp;diff=14775</id>
		<title>Súbor:Cv3.zip</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=S%C3%BAbor:Cv3.zip&amp;diff=14775"/>
				<updated>2016-03-06T20:05:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mihalik: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mihalik</name></author>	</entry>

	</feed>