<?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=Hudak</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=Hudak"/>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Hudak"/>
		<updated>2026-04-22T20:07:33Z</updated>
		<subtitle>Príspevky používateľa</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=People/sk&amp;diff=14391</id>
		<title>People/sk</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=People/sk&amp;diff=14391"/>
				<updated>2015-10-13T09:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ľudia]]&lt;br /&gt;
= Ľudia =&lt;br /&gt;
&lt;br /&gt;
[http://kempelen.dai.fmph.uniba.sk/pritomnost/ Prítomnosť zamestnancov na pracovisku…]&lt;br /&gt;
&lt;br /&gt;
==Štruktúra katedry==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Vedúci katedry:'''&lt;br /&gt;
!Miestnosť&lt;br /&gt;
![[#Volanie na klapku|Klapka&amp;lt;sup&amp;gt;*)&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Igor Farkas|prof. Ing. Igor Farkaš, Dr.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 25&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|621&lt;br /&gt;
|-&lt;br /&gt;
|'''Zástupcovia vedúceho katedry:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Rybar|doc. PhDr. Ján Rybár, PhD.]]||I 11||672&lt;br /&gt;
|-&lt;br /&gt;
|[[Damas Gruska|doc. RNDr. Damas Gruska, PhD.]]||I 20||846&lt;br /&gt;
|-&lt;br /&gt;
|'''Tajomník:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Elena Sikudova|RNDr. Elena Šikudová, PhD.]]||I 3||388&lt;br /&gt;
|-&lt;br /&gt;
|'''Tajomník pre IT:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Kluka|Mgr. Ján Kľuka, PhD.]]||I 16||727&lt;br /&gt;
|-&lt;br /&gt;
|'''Sekretariát:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Zdenka Slobodova|Zdenka Slobodová]]||I 24b||424&lt;br /&gt;
|-&lt;br /&gt;
|tel.: +421 2 654 22 263&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Oddelenie počítačovej grafiky a videnia==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Zuzana Cernekova|RNDr. Zuzana Černeková, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 3&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|388&lt;br /&gt;
|-&lt;br /&gt;
|[[Roman Durikovic|prof. RNDr. Roman Ďurikovič, PhD.]] (vedúci odd.)||I 14||879&lt;br /&gt;
|-&lt;br /&gt;
|[[Milan Ftacnik|doc. RNDr. Milan Ftáčnik, CSc.]]||M 159||720&lt;br /&gt;
|-&lt;br /&gt;
|[[Zuzana Haladova|RNDr. Zuzana Berger Haladová, PhD.]]||M 153||760&lt;br /&gt;
|-&lt;br /&gt;
|[[Julia Kucerova|RNDr. Júlia Kučerová, PhD.]]||I 4||441&lt;br /&gt;
|- &lt;br /&gt;
|[[Lubomir Lucan|prom. fyz. Ľubomír Lúčan, PhD.]]||M 161||322&lt;br /&gt;
|- &lt;br /&gt;
|[[Andrej Mihalik|Mgr. Andrej Mihálik, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Elena Sikudova|RNDr. Elena Šikudová, PhD.]]||I 3||388&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Oddelenie umelej inteligencie==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Frantisek Gyarfas|Ing. František Gyárfáš, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 17&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|436&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Homola|RNDr. Martin Homola, PhD.]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Andrej Lucny|RNDr. Andrej Lúčny, PhD.]]||I 18||436&lt;br /&gt;
|-&lt;br /&gt;
|[[Maria Markosova|doc. RNDr. Mária Markošová, PhD.]] (vedúca odd.)||I 34||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Marek Nagy|RNDr. Marek Nagy, PhD.]]||I 42||625&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Nather|Mgr. Peter Náther, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Jozef Siska|RNDr. Jozef Šiška, PhD.]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Sefranek|doc. PhDr. Ján Šefránek, CSc.]]||I 17||389&lt;br /&gt;
|-&lt;br /&gt;
|[[Alexander Simko|Ing. Alexander Šimko, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Tomas Vinar|Mgr. Tomáš Vinař, PhD.]]||M 163||207&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Oddelenie deklaratívneho programovania==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Andrej Blaho|RNDr. Andrej Blaho, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|M 162&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|133&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Borovansky|RNDr. Peter Borovanský, PhD.]]||I 18||436&lt;br /&gt;
|-&lt;br /&gt;
|[[Damas Gruska|doc. RNDr. Damas Gruska, PhD.]] (vedúci odd.)||I 20||846&lt;br /&gt;
|-&lt;br /&gt;
|[[Dusan Guller|doc. RNDr. Dušan Guller, PhD.]]||I 28||625&lt;br /&gt;
|-&lt;br /&gt;
|[[Tatiana Jajcayova|RNDr. Tatiana Jajcayová, PhD.]]||I 24a||278&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Kluka|Mgr. Ján Kľuka, PhD.]]||I 16||727&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Komara|Ing. Ján Komara, PhD.]]||I 16||727&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Centrum pre kognitívnu vedu==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Igor Farkas|prof. Ing. Igor Farkaš, Dr.]] (koordinátor)&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 35&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|621&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Rybar|doc. PhDr. Ján Rybár, PhD.]] (zástupca)||I 11||672&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Takac|RNDr. Martin Takáč, PhD.]]||I 37||370&lt;br /&gt;
|-&lt;br /&gt;
|[[Barbora Cimrova|RNDr. Barbora Cimrová, PhD.]]||I 33a||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Kristina Rebrova|RNDr. Kristína Rebrová, PhD.]]||I 33a||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Dezider Kamhal|PhDr. Dezider Kamhal, PhD.]]||I 36||109&lt;br /&gt;
|-&lt;br /&gt;
|[[Pavel Petrovic|Mgr. Pavel Petrovič, PhD.]]||I 19||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Doktorandi katedry==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Martin Balaz|RNDr. Martin Baláž]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 7&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|444&lt;br /&gt;
|-&lt;br /&gt;
|[[Vladimir Boza|Mgr. Vladimír Boža]]||M 25||196&lt;br /&gt;
|-&lt;br /&gt;
|[[Viliam Dillinger|Mgr. Viliam Dillinger]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Gergel|Mgr. Peter Gergeľ]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Chladek|Mgr. Michal Chládek]]||M 113||729&lt;br /&gt;
|-&lt;br /&gt;
|[[Andrej Jursa|Mgr. Andrej Jursa]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Kovac|Mgr. Michal Kováč]]||M 249||836&lt;br /&gt;
|-&lt;br /&gt;
|[[Tomas Kuzma|Mgr. Tomáš Kuzma]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Ludovit Malinovsky|Mgr. Ľudovít Malinovský]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Mikulas|Mgr. Ján Mikuláš]] || ||&lt;br /&gt;
|-&lt;br /&gt;
|[[Mikulas Pataky|RNDr. Mikuláš Pataky]]||M 161||322&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Piovarci|Mgr. Michal Piovarči]]||M 161||&lt;br /&gt;
|-&lt;br /&gt;
|[[Julia Pukancova|Mgr. Júlia Pukancová]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Radoslav Skoviera|Mgr. Radoslav Škoviera]]||I 19||&lt;br /&gt;
|-&lt;br /&gt;
|[[Ivor Uhliarik|Mgr. Ivor Uhliarik]]||I 28||625&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Externisti a spolupracovníci==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Brona Brejova|Mgr. Broňa Brejová, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|M163&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|217&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[http://www.sav.sk/?lang=sk&amp;amp;charset=&amp;amp;doc=org-user&amp;amp;user_no=5398 Mgr. Jana Bašnáková, MSc.]||ÚEP SAV||54773509&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.researchgate.net/profile/Vladimira_Cavojova PaedDr. Vladimíra Čavojová, PhD.]||ÚEP SAV||5477 5625&lt;br /&gt;
|-&lt;br /&gt;
|[http://uniba.sk/ludia/gal4 Ing. PhDr. Tomáš Gál, PhD.]||CIT RUK||592 44 978&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ddm.fmph.uniba.sk/profily/profilKohanova.htm PaedDr. Iveta Kohanová, PhD.]||M146&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.researchgate.net/profile/Lenka_Kostovicova Mgr. Lenka Kostovičová, PhD.]||ÚEP SAV||5477 5625&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ui42.sk/autori/martin-krupa.html?page_id=1633 Mgr. Martin Krupa], [http://www.ui42.sk/ ui42]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ui42.sk/autori/robert-mraz.html?page_id=1637 Mgr. Robert Mráz], [http://www.ui42.sk/ ui42]&lt;br /&gt;
|-&lt;br /&gt;
|[[Milos Mrva|Mgr. Miloš Mrva]]||I 6&lt;br /&gt;
|-&lt;br /&gt;
|[[Daniela Ostatnikova|prof. MUDr. Daniela Ostatníková, PhD.]]||LF UK ||59357524&lt;br /&gt;
|-&lt;br /&gt;
|[[Emilia Papulova|Doc. Ing. Emília Papulová, CSc.]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Samuelcik|RNDr. Martin Samuelčík, PhD.]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Milos Sramek|prof. Ing. Miloš Šrámek, PhD.]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[http://thales.doa.fmph.uniba.sk/katc/pages/member.php?jazyk=sk&amp;amp;clen=zlatos prof. RNDr. Pavol Zlatoš, CSc]||M128||752&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alumni &amp;amp; Emeriti==&lt;br /&gt;
&lt;br /&gt;
Predchádzajúci zamestnanci Katedry a bývalého Ústavu informatiky majú vlastnú stránku: [[DAI Alumni]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;footnote&amp;quot; id=&amp;quot;Volanie na klapku&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;sup&amp;gt;*)&amp;lt;/sup&amp;gt;&amp;lt;/strong&amp;gt; Z vonkajšej siete môžete pred klapkou vytočiť 02/602 95 &amp;lt;var&amp;gt;klapka&amp;lt;/var&amp;gt;, medzinárodne +421 2 602 95 &amp;lt;var&amp;gt;klapka&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=People/en&amp;diff=14390</id>
		<title>People/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=People/en&amp;diff=14390"/>
				<updated>2015-10-13T09:36:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:People]]&lt;br /&gt;
= People =&lt;br /&gt;
== Department Structure ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|'''Head of Department:'''&lt;br /&gt;
!Room&lt;br /&gt;
![[#Calling the extension|Phone ext.&amp;lt;sup&amp;gt;*)&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Igor Farkas|prof. Ing. Igor Farkaš, Dr.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 25&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|621&lt;br /&gt;
|-&lt;br /&gt;
|'''Vice-Head of Department:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Rybar|doc. PhDr. Ján Rybár, PhD.]]||I 11||672&lt;br /&gt;
|-&lt;br /&gt;
|[[Damas Gruska|doc. RNDr. Damas Gruska, PhD.]]||I 20||846&lt;br /&gt;
|-&lt;br /&gt;
|'''Secretary:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Elena Sikudova|RNDr. Elena Šikudová, PhD.]]||I 3||388&lt;br /&gt;
|-&lt;br /&gt;
|'''Secretary for IT:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Kluka|Mgr. Ján Kľuka, PhD.]]||I 16|| 727&lt;br /&gt;
|-&lt;br /&gt;
|'''Secretariate:'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Zdenka Slobodova|Zdenka Slobodová]]||I 24b||424&lt;br /&gt;
|-&lt;br /&gt;
|tel. and fax: +421 2 654 22 263&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Section of Computer Graphics and Vision==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Zuzana Cernekova|RNDr. Zuzana Černeková, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 3&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|388&lt;br /&gt;
|-&lt;br /&gt;
|[[Roman Durikovic|prof. RNDr. Roman Ďurikovič, PhD.]] (Head of Section)||I 14||879&lt;br /&gt;
|-&lt;br /&gt;
|[[Milan Ftacnik|doc. RNDr. Milan Ftáčnik, CSc.]]||M 159||720&lt;br /&gt;
|-&lt;br /&gt;
|[[Zuzana Haladova|RNDr. Zuzana Berger Haladová, PhD.]]||M 153||760&lt;br /&gt;
|- &lt;br /&gt;
|[[Lubomir Lucan|prom. fyz. Ľubomír Lúčan, PhD.]]||M 161||322&lt;br /&gt;
|- &lt;br /&gt;
|[[Andrej Mihalik|Mgr. Andrej Mihálik, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Elena Sikudova|RNDr. Elena Šikudová, PhD.]]||I 3||388&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Section of Artificial Intelligence==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Frantisek Gyarfas|Ing. František Gyárfáš, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 17&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|436&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Homola|RNDr. Martin Homola, PhD.]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Andrej Lucny|RNDr. Andrej Lúčny, PhD.]]||I 18||436&lt;br /&gt;
|-&lt;br /&gt;
|[[Maria Markosova|doc. RNDr. Mária Markošová, PhD.]] (Head of Section)||I 34||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Marek Nagy|RNDr. Marek Nagy, PhD.]]||I 42||625&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Nather|Mgr. Peter Náther, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Jozef Siska|RNDr. Jozef Šiška, PhD.]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Sefranek|doc. PhDr. Ján Šefránek, CSc.]]||I 17||389&lt;br /&gt;
|-&lt;br /&gt;
|[[Alexander Simko|Ing. Alexander Šimko, PhD.]]||I 6||443&lt;br /&gt;
|-&lt;br /&gt;
|[[Tomas Vinar|Mgr. Tomáš Vinař, PhD.]]||M 163||207&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Section of Declarative Programming==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Andrej Blaho|RNDr. Andrej Blaho, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 5&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|442&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Borovansky|RNDr. Peter Borovanský, PhD.]]||I 18||436&lt;br /&gt;
|-&lt;br /&gt;
|[[Damas Gruska|doc. RNDr. Damas Gruska, PhD.]] (Head of Section)||I 20||846&lt;br /&gt;
|-&lt;br /&gt;
|[[Dusan Guller|doc. RNDr. Dušan Guller, PhD.]]||I 28||625&lt;br /&gt;
|-&lt;br /&gt;
|[[Tatiana Jajcayova|RNDr. Tatiana Jajcayová, PhD.]]||I 24a||278&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Kluka|Mgr. Ján Kľuka, PhD.]]||I 16|| 727&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Komara|Ing. Ján Komara, PhD.]]||I 16||727&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Centre for Cognitive Science==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Igor Farkas|prof. Ing. Igor Farkaš, Dr.]] (coordinator)&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 35&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|621&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Rybar|doc. PhDr. Ján Rybár, PhD.]] (deputy)||I 11||672&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Takac|RNDr. Martin Takáč, PhD.]]||I 37||370&lt;br /&gt;
|-&lt;br /&gt;
|[[Barbora Cimrova|RNDr. Barbora Cimrová, PhD.]]||I 33a||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Kristina Rebrova|RNDr. Kristína Rebrová, PhD.]]||I 33a||374&lt;br /&gt;
|-&lt;br /&gt;
|[[Dezider Kamhal|PhDr. Dezider Kamhal, PhD.]]||I 36||622&lt;br /&gt;
|-&lt;br /&gt;
|[[Pavel Petrovic|Mgr. Pavel Petrovič, PhD.]]||I 19||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Doctoral students==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Martin Balaz|RNDr. Martin Baláž]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|I 7&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|444&lt;br /&gt;
|-&lt;br /&gt;
|[[Vladimir Boza|Mgr. Vladimír Boža]]||M 25||196&lt;br /&gt;
|-&lt;br /&gt;
|[[Viliam Dillinger|Mgr. Viliam Dillinger]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Chladek|Mgr. Michal Chládek]]||M 113||729&lt;br /&gt;
|-&lt;br /&gt;
|[[Peter Gergel|Mgr. Peter Gergeľ]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Andrej Jursa|Mgr. Andrej Jursa]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Kovac|Mgr. Michal Kováč]]||M 101||836&lt;br /&gt;
|-&lt;br /&gt;
|[[Julia Kucerova|Mgr. Júlia Kučerová]]||M 153||?&lt;br /&gt;
|-&lt;br /&gt;
|[[Tomas Kuzma|Mgr. Tomáš Kuzma]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Ludovit Malinovsky|Mgr. Ľudovít Malinovský]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[[Jan Mikulas|Mgr. Ján Mikuláš]]|| ||&lt;br /&gt;
|-&lt;br /&gt;
|[[Mikulas Pataky|Mgr. Mikuláš Pataky]]||M 161||322&lt;br /&gt;
|-&lt;br /&gt;
|[[Michal Piovarci|Mgr. Michal Piovarči]]||M 161||&lt;br /&gt;
|-&lt;br /&gt;
|[[Julia Pukancova|Mgr. Júlia Pukancová]]||I 7||444&lt;br /&gt;
|-&lt;br /&gt;
|[[Radoslav Skoviera|Mgr. Radoslav Škoviera]]||I 19||&lt;br /&gt;
|-&lt;br /&gt;
|[[Ivor Uhliarik|Mgr. Ivor Uhliarik]]||I 28||625&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==External cooperating staff==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[[Brona Brejova|Mgr. Broňa Brejová, PhD.]]&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|M163&lt;br /&gt;
|width=&amp;quot;100&amp;quot;|217&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;400&amp;quot;|[http://www.sav.sk/?lang=sk&amp;amp;charset=&amp;amp;doc=org-user&amp;amp;user_no=5398 Mgr. Jana Bašnáková, MSc.]||IEP SAS||54773509&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.researchgate.net/profile/Vladimira_Cavojova PaedDr. Vladimíra Čavojová, PhD.]||IEP SAS||5477 5625&lt;br /&gt;
|-&lt;br /&gt;
|[http://uniba.sk/ludia/gal4 Ing. PhDr. Tomáš Gál, PhD.]||CIT RUK||592 44 978&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ddm.fmph.uniba.sk/profily/profilKohanova.htm PaedDr. Iveta Kohanová, PhD.]||M146&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.researchgate.net/profile/Lenka_Kostovicova Mgr. Lenka Kostovičová, PhD.]||IEP SAS||5477 5625&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ui42.sk/autori/martin-krupa.html?page_id=1633 Mgr. Martin Krupa], [http://www.ui42.sk/ ui42]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ui42.sk/autori/robert-mraz.html?page_id=1637 Mgr. Robert Mráz], [http://www.ui42.sk/ ui42]&lt;br /&gt;
|-&lt;br /&gt;
|[[Milos Mrva|Mgr. Miloš Mrva]]||I 6&lt;br /&gt;
|-&lt;br /&gt;
|[[Daniela Ostatnikova|prof. MUDr. Daniela Ostatníková, PhD.]]||FM CU ||59357524&lt;br /&gt;
|-&lt;br /&gt;
|[[Emilia Papulova|Doc. Ing. Emília Papulová, CSc.]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Martin Samuelcik|RNDr. Martin Samuelčík, PhD.]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Milos Sramek|prof. Ing. Miloš Šrámek, PhD.]]||I 5||442&lt;br /&gt;
|-&lt;br /&gt;
|[http://thales.doa.fmph.uniba.sk/katc/pages/member.php?jazyk=en&amp;amp;clen=zlatos prof. RNDr. Pavol Zlatoš, CSc]||M128||752&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alumni &amp;amp; Emeriti==&lt;br /&gt;
&lt;br /&gt;
Previous employees and students of Department of Applied Informatics, previously Institute of Informatics maintain a dedicated page: [[DAI Alumni]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;p id=&amp;quot;Calling the extension&amp;quot; class=&amp;quot;footnote&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;sup&amp;gt;*)&amp;lt;/sup&amp;gt; From Slovakia, you can call 02-60295-&amp;lt;var&amp;gt;extension&amp;lt;/var&amp;gt;; from abroad, the number is: +421-2-60295-&amp;lt;var&amp;gt;extension&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__notoc__&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG1_2013/en&amp;diff=12253</id>
		<title>CG1 2013/en</title>
		<link rel="alternate" type="text/html" href="http://dev.dai.fmph.uniba.sk/w?title=CG1_2013/en&amp;diff=12253"/>
				<updated>2014-07-14T15:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg1_2013.jpg]]&lt;br /&gt;
= Computer Graphics 1 (2013) =&lt;br /&gt;
&lt;br /&gt;
== Lessons ==&lt;br /&gt;
Materials to read&lt;br /&gt;
* http://www.cs.princeton.edu/courses/archive/fall00/cs426/&lt;br /&gt;
* http://data.agg.ethz.ch/publications/2008/botsch_2008_GMPeg.pdf&lt;br /&gt;
* http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/pipeline33/&lt;br /&gt;
* http://www.scribd.com/doc/72522933/5/Nicholl-Lee-Nicholl-Line-Clipping&lt;br /&gt;
* http://flurry.dg.fmph.uniba.sk/webog/en/zatko-teaching/389-pocitacova-grafika-1.html&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;
=== Lesson01 [24.09] &amp;quot;Introduction to Computer Graphics&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
=== Lesson02 [01.10] &amp;quot;Scene Representations&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson02.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson02.pdf]]&lt;br /&gt;
* Representation of Curves&lt;br /&gt;
* Representation of Volumes&lt;br /&gt;
* Representation of Surfaces&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson03.pdf lesson02.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson03 [08.10] &amp;quot;Transformations and Projections&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson04.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson04.pdf]]&lt;br /&gt;
* Linear Transformations&lt;br /&gt;
* Affine Transformations&lt;br /&gt;
* Perspective Projections&lt;br /&gt;
* Parallel Projections&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson04.pdf lesson03.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson04 [15.10] &amp;quot;The Graphics Pipeline&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson05.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson05.pdf]]&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;
* Lecture notes: [http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson05.pdf lesson04.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson05 [22.10] &amp;quot;Line Clipping&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson06.png|link=http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson06.pdf]]&lt;br /&gt;
* Line clipping algorithms in the CG Pipeline&lt;br /&gt;
* Cohen-Sutherland&lt;br /&gt;
* Cyrus-Beck&lt;br /&gt;
* Nicholl-Lee-Nicholl&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~onderik/phd/cg1_2012/cg1_2012_lesson06.pdf lesson05.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson06 [29.10] &amp;quot;Intersections and Clipping&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson07.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson07.pdf]]&lt;br /&gt;
* Computing basic intersections&lt;br /&gt;
* Polygon clipping algorithms&lt;br /&gt;
* Sutherland-Hodgeman&lt;br /&gt;
* Weiler-Atherton&lt;br /&gt;
* Greiner-Hormann&lt;br /&gt;
* Curve and text clipping&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson07.pdf lesson06.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson07 [19.11] &amp;quot;Visible Surface Determination and Antialiasing&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson09.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson09.pdf]]&lt;br /&gt;
* Alias, Nyquist frequency - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/aliasing.pdf Aliasing] [http://www.math.ubc.ca/~feldman/m267/dft.pdf Aditional Material]&lt;br /&gt;
* Antialiasing: Postfiltering, Prefiltering, MSAA, CSAA - [http://www.sccg.sk/~durikovic/classes/CG1/Handouts/antialiasing.pdf Antialiasing]&lt;br /&gt;
* Visibility Surface Determination: Object Space, Image Space, Priority List&lt;br /&gt;
* Painter's Algorithm, Newel-Newel-Sancha&lt;br /&gt;
* Schumacker, BSP-tree&lt;br /&gt;
* Warnock's Algorithm&lt;br /&gt;
* Z-buffer&lt;br /&gt;
* Octree&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson09.pdf lesson07.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson08 [26.11] &amp;quot;Rasterization&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson08.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson08.pdf]]&lt;br /&gt;
* Line rasterization: DDA, Bresenham, Midpoint&lt;br /&gt;
* Curve rasterization: Midpoint, Bresenham&lt;br /&gt;
* Polygon rasterization&lt;br /&gt;
* Filling algorithms: flood fill, boarder fill&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson08.pdf lesson08.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson09 [03.12] &amp;quot;Visibility Culling and Graphical Pipeline Revisited&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson10.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson10.pdf]]&lt;br /&gt;
* Wireframe Models&lt;br /&gt;
* Visibility Culling: Backface, View Frustum, Detail, Occlusion&lt;br /&gt;
* Graphical Pipeline: Transformation and Coordinates&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson10.pdf lesson09.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Lesson10 [10.12] &amp;quot;Representation and Blending of Images&amp;quot; ===&lt;br /&gt;
[[File:cg1_2012_lesson11.png|link=http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson11.pdf]]&lt;br /&gt;
* Color Models&lt;br /&gt;
* Image Blending Modes&lt;br /&gt;
* Lecture notes: [http://www.sccg.sk/~chladek/phd/cg1_2012/cg1_2012_lesson11.pdf lesson10.pdf]&lt;br /&gt;
&lt;br /&gt;
== Seminars - Info ==&lt;br /&gt;
* On every seminar we will implement selected problems/algorithms from lessons. We will usually 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 Express  / Sharp Develop as a development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.&lt;br /&gt;
* '''Don't cheat - create instead.''' Any kind of cheating is punished by '''withholding 15 points''' of your final evaluation for all involved students. Situation where only part of code is shared is also considered cheating!&lt;br /&gt;
* Attendance at seminars is '''optional''', but recommended.&lt;br /&gt;
* Additional activity can be '''awarded by max 10 points''' of your final evaluation.&lt;br /&gt;
&lt;br /&gt;
=== Assignments ===&lt;br /&gt;
* Assignment must be submitted by email to [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] until '''next deadline 06:00 (morning)'''&lt;br /&gt;
* Your submission email '''must''' have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.&lt;br /&gt;
* You can get '''max 100% per assignment'''. Late submission is for 0%.&lt;br /&gt;
* It is required to submit '''zipped source code of your homework'''. Do not send only executable files. Homework without 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.&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
* Project is your opportunity to gain '''additional 20 points of your final evaluation (during the semester)''' and it is '''optional'''. It must be submitted by email to [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] including your solution and source files.&lt;br /&gt;
* Comment your code and add help!&lt;br /&gt;
* Submission until - 6 days before you final term&lt;br /&gt;
* Project assignments - Choose among these themes or create your own. You should notify [mailto:cg1.2013.hw@gmail.com  cg1.2013.hw@gmail.com] with your idea about the chosen project (idea, language, implementation, application). More info in person on M162.&lt;br /&gt;
* '''Ideas:'''&lt;br /&gt;
** Voxel Data Structure - 3D should be used, generate voxelization of objects&lt;br /&gt;
** Advanced Mesh Transformations - Take blender mesh function and implement it&lt;br /&gt;
** Gimp Layer functions - Darken, Soft light, ...&lt;br /&gt;
** Displacement Modeling - a.k.a Z-brush&lt;br /&gt;
** Other - Specify in the email&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
* '''Midterm - Max 10 points''' of your final evaluation&lt;br /&gt;
* '''Finalterm - Max 40 points''' of your final evaluation&lt;br /&gt;
* '''Semester - Max 60 points (Exercises - 50,  Project - 20, Bonus 10)''' of your final evaluation&lt;br /&gt;
* Submission: [mailto:cg1.2013.hw@gmail.com cg1.2013.hw@gmail.com]&lt;br /&gt;
* Attendance: Optional&lt;br /&gt;
* Lessons are conducted by '''Andrej Mihalik (mihalik@sccg.sk)'''&lt;br /&gt;
* Seminars are conducted by '''Matej Hudak (subseth.mato@gmail.com)'''&lt;br /&gt;
* Other collaborators and authors are Juraj Onderik and Michal Chladek&lt;br /&gt;
* Schedule&lt;br /&gt;
** Tue (09:50) - Room F2 (lesson)&lt;br /&gt;
** Mon (10:40) - Room H3 (seminar)&lt;br /&gt;
** Tue (08:10) - Room H6 (seminar)&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdDh1TDNBcl8xUThLZHZkVVJvMjNQdFE&amp;amp;usp=sharing Your Evaluation]&lt;br /&gt;
&lt;br /&gt;
== Seminars ==&lt;br /&gt;
=== Exercise00 [23/24.09] &amp;quot;Introduction&amp;quot; ===&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/CG1Intro2013.pdf Introduction]&lt;br /&gt;
* There is no assignment for this seminar&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [30.09/01.10] &amp;quot;Vectors and Matrices&amp;quot; ===&lt;br /&gt;
* Create a simple application for vectors(4x1) and matrices(4x4)&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex01.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex01.Template.zip Template]&lt;br /&gt;
* Deadline: 14.10 6:00AM (Morning)&lt;br /&gt;
* Please, questions about assignments address to Matej Hudak (mail, in person - M162)&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [14/15.10] &amp;quot;Show of Your Curves&amp;quot; ===&lt;br /&gt;
* Create a simple application to compute bezier curve using De Casteljau algorithm. &lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex02.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex02.Template.zip Template]&lt;br /&gt;
* Deadline: 21.10 6:00AM (Morning)&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [21/22.10] &amp;quot;3D Mesh? No Problem&amp;quot; ===&lt;br /&gt;
* We will work with OpenGL library in C#. Library is [http://www.opentk.com/ OpenTK] - direct support for OpenGL in C# - [http://www.sccg.sk/~hudak/CG1/OpenGLIntro.pdf OpenGL Intro]. This exercise is introduction to 3D CG. We will use [http://www.opentk.com/project/Meshomatic Meshomatic] library. There is no assignment this week. &lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex03.Sample.zip Sample]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [28/29.10] &amp;quot;The One About Clipping&amp;quot; ===&lt;br /&gt;
* Your mission, should you choose to accept it, is to implement two clipping algorithms: Cohen-Sutterland and Cyrus-Beck. Implemented algorithms should be those algorithms by definition. Pseudocodes are in the 'Clipping' lesson. The interaction and GUI are in the template application.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex04.Template.zip Template]&lt;br /&gt;
* This assignment will self-destruct 4.11 06:00 (morning). Good luck.&lt;br /&gt;
&lt;br /&gt;
=== Exercise05 [04/05.11] &amp;quot;Half-Edge Trick&amp;quot; ===&lt;br /&gt;
* And now ladies and gentlemen I will saw this edge in half. (Suspense - Applause - Performance)&lt;br /&gt;
* Implement a simple mesh representation in 2D. Use half-edge data structure. Implement loading data from file.off and filling the structure. As usual you should use a similar functionality and drawing as in the sample application - already in template.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex05.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex05.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex05.Template.zip Template]&lt;br /&gt;
* Deadline: 25.11 6:00AM (Morning)&lt;br /&gt;
&lt;br /&gt;
=== Exercise06 [25/26.11] &amp;quot;Now You See Me&amp;quot; ===&lt;br /&gt;
* And now you don't. Look closely, because the closer you think you are, the more you'll actually understand. &lt;br /&gt;
* Implement a visible surface determination algorithm Z-buffer. As usual you should use a similar functionality and drawing as in the sample application.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex06.Info.pdf Info] | [http://www.sccg.sk/~hudak/CG1/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex06.Template.zip Template]&lt;br /&gt;
* Deadline: 9.12 6:00AM (Morning)&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [02/03.12] &amp;quot;Draw Me Like One of Your French Pixels&amp;quot; ===&lt;br /&gt;
* Implement a rasterization of three objects: line, circle and ellipse. Use additional material if necessary. [http://www.sccg.sk/~hudak/CG1/Ellipse.pdf Ellipse]&lt;br /&gt;
* Bonus - curve rasterization. Bezier curve [0.5 points]. Other than bezier curve [2 points] &lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex07.Template.rar Template]&lt;br /&gt;
* Deadline: 9.12 6:00AM (Morning)&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [09/10.12] &amp;quot;Virtual Knitting&amp;quot; ===&lt;br /&gt;
* Continue from previous exercise and implement Scan Line algorithm. Implemented algorithms should be those algorithms by definition. The interaction and GUI are in the template application. Use materials from the lecture and additional material [http://flurry.dg.fmph.uniba.sk/webog/SuboryOG/zatko/4.VYPLNANIE2011.pdf]&lt;br /&gt;
* Bonus - flood fill algorithm. Algorithm from the lecture [0.5 points]. Other [1 point]&lt;br /&gt;
* Bonus - use scanline to fill 3D volume. Use OpenGL to work with mesh (Ex03) and fill 3D mesh like [http://www.sccg.sk/~hudak/CG1/Input.png input] with cubes / spheres similar to [http://www.sccg.sk/~hudak/CG1/Result.png result] [max 5 points]&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG1/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG1/Ex08.Template.zip Template]&lt;br /&gt;
* Deadline: 23.12 6:00AM (Morning)&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12199</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=12199"/>
				<updated>2014-05-13T21:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&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/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&amp;amp;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;
** '''Deadline:''' 17.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12198</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=12198"/>
				<updated>2014-05-13T20:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&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/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&amp;amp;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;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12197</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=12197"/>
				<updated>2014-05-13T20:57:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&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/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&amp;amp;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.zip template]&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12196</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=12196"/>
				<updated>2014-05-13T20:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&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/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&amp;amp;usp=sharing online form] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12195</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=12195"/>
				<updated>2014-05-13T20:39:43Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&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/spreadsheet/ccc?key=0AhREYgn4NR6AdFZSTXdyd0NSUG1xSlplY0hxRG96V2c&amp;amp;usp=sharing online form ] with selected results (during the seminar) &lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12194</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=12194"/>
				<updated>2014-05-06T17:53:37Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
* '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12193</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=12193"/>
				<updated>2014-05-06T17:53:13Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
** '''Deadline:''' 7.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12192</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=12192"/>
				<updated>2014-05-05T14:14:37Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12191</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=12191"/>
				<updated>2014-05-05T13:48:02Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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 and normal mapping [http://wiki.polycount.com/NormalMap/]&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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12190</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=12190"/>
				<updated>2014-05-02T19:57:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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 and 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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12189</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=12189"/>
				<updated>2014-05-02T18:48:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* 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 and 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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12188</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=12188"/>
				<updated>2014-05-02T18:45:58Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer [http://dev.quixel.se/megascans]&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12187</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=12187"/>
				<updated>2014-05-02T13:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 18.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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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 (classic deadline)&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:''' 18.5. - 23:59&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 18.5. - 23:59&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12186</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=12186"/>
				<updated>2014-05-02T13:52:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 20.5. - 12:00&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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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 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;
** '''Bonus deadline:''' 20.5. - 12:00&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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;
* ''''[3 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. Than implement UV mapping (uv coordinates from blender) and smooth shading on mesh.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 20.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12185</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=12185"/>
				<updated>2014-05-02T13:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 20.5. - 12:00&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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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 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;
** '''Bonus deadline:''' 20.5. - 12:00&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 20.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12184</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=12184"/>
				<updated>2014-05-02T09:57:53Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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:''' 20.5. - 12:00&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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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 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;
** '''Bonus deadline:''' 20.5. - 12:00&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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, repeat and/or mirror) and some sort of filtering(nearest and/or linear interpolation)&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;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
** '''Deadline:''' 20.5. - 17:20&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12183</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=12183"/>
				<updated>2014-05-02T09:50:20Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Textures&amp;quot; ===&lt;br /&gt;
* The time has come to use textures in your ray tracer&lt;br /&gt;
* Implement 3 kinds of texture mapping: plane, sphere and 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, repeat and/or mirror) and some sort of filtering(nearest and/or linear interpolation)&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;
* [http://www.sccg.sk/~hudak/CG2/Ex09.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex09.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12182</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=12182"/>
				<updated>2014-04-30T20:13:18Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12181</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=12181"/>
				<updated>2014-04-30T20:12:44Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12180</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=12180"/>
				<updated>2014-04-30T10:34:12Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Postprocessing&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12179</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=12179"/>
				<updated>2014-04-30T10:33:26Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&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&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;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12178</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=12178"/>
				<updated>2014-04-30T07:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur. User can scale the intensity of blur&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF. You can use definition from blur to create a fake DOF.&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;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;br /&gt;
&lt;br /&gt;
=== [21.05.2014] &amp;quot;Final Term&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12177</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=12177"/>
				<updated>2014-04-30T07:11:14Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur. User can scale the intensity of blur&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF. You can use definition from blur to create a fake DOF.&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;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12176</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=12176"/>
				<updated>2014-04-30T07:10:32Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur. User can scale the intensity of blur&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF. You can use definition from blur to create a fake DOF.&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;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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 could 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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: Template&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12175</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=12175"/>
				<updated>2014-04-30T07:08:32Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur. User can scale the intensity of blur&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF. You can use definition from blur to create a fake DOF.&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;
&lt;br /&gt;
=== Exercise09 [07.05.2014] &amp;quot;Texture Mapping&amp;quot; ===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
=== Exercise10 [14.05.2014] &amp;quot;Lab exercise&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 could 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]&lt;br /&gt;
** Measure '''gloss value''' in different conditions&lt;br /&gt;
* Write your results: [[File:CG2.Ex04.Template.doc]]&lt;br /&gt;
** Guidelines are in the template&lt;br /&gt;
** Submit your results as a regular submission by mail&lt;br /&gt;
** Fill out online form with selected results:&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12171</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=12171"/>
				<updated>2014-04-26T09:35:28Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur. User can scale the intensity of blur&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF. You can use definition from blur to create a fake DOF.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12170</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=12170"/>
				<updated>2014-04-26T09:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;Antialiasing&amp;quot; ===&lt;br /&gt;
* Improve your raytracer by adding supersampling SSAA / FSAA [http://en.wikipedia.org/wiki/Supersampling].&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement blur effect&lt;br /&gt;
* ''''[1 bonus %]:''' &lt;br /&gt;
** Implement DOF&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex08.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex08.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12160</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=12160"/>
				<updated>2014-04-23T12:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;br /&gt;
&lt;br /&gt;
=== Exercise08 [30.04.2014] &amp;quot;TBA&amp;quot; ===&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12159</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=12159"/>
				<updated>2014-04-22T19:19:55Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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:''' 30.4 - 17:20&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12158</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=12158"/>
				<updated>2014-04-22T17:33:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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]. 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:''' 30.4 - 17:20&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12157</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=12157"/>
				<updated>2014-04-15T19:40:04Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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]. 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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12156</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=12156"/>
				<updated>2014-04-15T19:00:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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). The dimension is 2. Go. As usual you should use a similar functionality as in the sample application.&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12155</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=12155"/>
				<updated>2014-04-15T17:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.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). The dimension is 2. Go.&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12154</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=12154"/>
				<updated>2014-04-15T16:41:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;Make It Faster&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH). The dimension is 2. Go.&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12153</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=12153"/>
				<updated>2014-04-15T16:40:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;Make It Faster&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH). The dimension is 2. Go.&lt;br /&gt;
* Physically based rendering could help&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12152</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=12152"/>
				<updated>2014-04-15T16:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise07 [16.04.2014] &amp;quot;Make It Faster&amp;quot; ===&lt;br /&gt;
* Implement accelerating structure for ray tracing. The structure is KD Trees + surface area heuristic (SAH). The dimension is 2. Go.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex07.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex07.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12149</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=12149"/>
				<updated>2014-04-09T15:08:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e. (deadline is the end of the semester):&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12148</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=12148"/>
				<updated>2014-04-06T13:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e.:&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12147</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=12147"/>
				<updated>2014-04-06T12:45:18Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e.:&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12146</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=12146"/>
				<updated>2014-04-06T12:44:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e.:&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding reflections and refractions to render mirror and glass objects.&lt;br /&gt;
* [http://www.sccg.sk/~hudak/CG2/Ex06.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex06.Template.zip Template]&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12143</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=12143"/>
				<updated>2014-04-03T13:23:06Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e.:&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;
* Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding reflection and refraction to render mirror and glass objects.&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12142</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=12142"/>
				<updated>2014-04-03T13:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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 f.e.:&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;
Evaluation will be calculated due to the complexity of your solution. Evaluation % will be summed into % from the exercises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding reflection and refraction to render mirror and glass objects.&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12141</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=12141"/>
				<updated>2014-04-03T13:04:38Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;
=== Exercise06 [09.04.2014] &amp;quot;Even More About Shaders&amp;quot; ===&lt;br /&gt;
* Improve your tracer by adding reflection and refraction to render mirror and glass objects.&lt;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12140</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=12140"/>
				<updated>2014-04-03T13:02:43Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - 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;
&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12139</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=12139"/>
				<updated>2014-04-03T13:01:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
* Comment, errata, constructive criticism or suggestion - [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12138</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=12138"/>
				<updated>2014-04-03T13:01:07Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
* Comment, errata, constructive criticism or suggestion [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	<entry>
		<id>http://dev.dai.fmph.uniba.sk/w?title=CG2_2014/en&amp;diff=12137</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=12137"/>
				<updated>2014-04-03T12:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;Hudak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:cg2_2014.png]]&lt;br /&gt;
= Seminars on Computer Graphics 2 (Summer 2014) =&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;
* Attendance at seminars is '''optional but recommended'''.&lt;br /&gt;
* Seminars are conducted by&lt;br /&gt;
** Matej Hudak (subseth.mato@gmail.com)&lt;br /&gt;
* Schedule of seminars is&lt;br /&gt;
** Wed (17:20) - Room I-H3&lt;br /&gt;
* Other collaborators and authors: Juraj Onderik&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 50% 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;
* Homework must be submitted by email to [mailto:cg2.2014.hw@gmail.com  cg2.2014.hw@gmail.com] every week until the '''next Wednesday 17:20'''.&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;
* [https://docs.google.com/spreadsheet/ccc?key=0AhREYgn4NR6AdHgyemtJYWk0REt3SVJXMUdnQW5ockE&amp;amp;usp=sharing Make It Better]&lt;br /&gt;
== Exercises ==&lt;br /&gt;
&lt;br /&gt;
=== Exercise00 [19.02.2014] &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.mpi-inf.mpg.de/departments/irg3/ws0506/cg/index.html Computer Graphics in max planck institut 1 - Marcus Magnor]&lt;br /&gt;
** [http://www.mpi-inf.mpg.de/departments/irg3/ws0405/cg/index.html  Computer Graphics in max planck institut 2 - Marcus Magnor ]&lt;br /&gt;
** [http://www.cs.umd.edu/class/fall2011/cmsc427/Lects/cmsc427-lects.pdf Computer Graphics - David Mount] - Lecture 19&lt;br /&gt;
** [http://goo.gl/J0Igrh Computer Graphics in MIT - Durand / Cutler]&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;
** Exercise &amp;quot;Vectors and Matrices&amp;quot; - [http://www.dai.fmph.uniba.sk/w/CG1_2013/en CG1]&lt;br /&gt;
&lt;br /&gt;
=== Exercise01 [26.02.2014] &amp;quot;Ray Casting&amp;quot; ===&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://www.sccg.sk/~hudak/CG2/Ex01.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex01.Template.zip Template]&lt;br /&gt;
* '''Deadline: 12.3 - 17:20'''&lt;br /&gt;
&lt;br /&gt;
=== Exercise02 [12.03.2014] &amp;quot;Primitives&amp;quot; ===&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]. 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;
* [http://www.sccg.sk/~hudak/CG2/Ex02.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex02.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise03 [19.03.2014] &amp;quot;Shader &amp;amp; Shading &amp;amp; Shadow&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex03.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex03.Template.zip Template]&lt;br /&gt;
&lt;br /&gt;
=== Exercise04 [26.03.2014] &amp;quot;Lights &amp;amp; Shadows&amp;quot; ===&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;
* [http://www.sccg.sk/~hudak/CG2/Ex04.Sample.zip Sample] | [http://www.sccg.sk/~hudak/CG2/Ex04.Template.zip Template]&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;/div&gt;</summary>
		<author><name>Hudak</name></author>	</entry>

	</feed>