## MTAT.03.015 Computer Graphics

**Lectures**: Tuesday 16:15, Liivi 2 - 111**Practice sessions**:- Basic I (JavaScript), Basic II: Thursday 12:15, Liivi 2 - 003.
- Basic I (C++), Game Engines: Thursday 14:15, Liivi 2 - 003.

**Questions**:- Raimond Tunnel (jee7@ut.ee)
- Margus Luik (mar6@ut.ee)
- Ats Kurvet (akurvet@ut.ee)
- Jaanus Jaggo (jjaggo@ut.ee)
- Timo Kallaste (timo.kallaste@gmail.com)

**Mailing list**: aine.ati.arvutigraafika@lists.ut.ee**CGLearn**:**cglearn.codelight.eu**

The course presents an introduction to the basic methods of computer graphics. The primary focus is on 3D graphics (geometry transformations, projection, lighting, texturing, raytracing). Course is organized in a mixed bottom-up top-down approach. We start with the basic concepts in the Basic I module. Mid-semester students have an opportunity to continue with the Basic II module or rather get to know high-level modeling software (Blender) and game engines (Unreal Engine 4) in the Game Engines module.

By the end of the course students should have a solid understanding of the layout and use of a modern graphics system. Also they should be able to implement themselves an OpenGL/WebGL based application together with rendering modifications or make use of higher level software (Unreal Engine 4) to achieve the same result.

Course requires some previous experience with linear algebra and basic programming skill in either C/C++ or JavaScript. In the first half of the semester, practice sessions will cover Basic I topics and will be in C++ and JavaScript. In the second half of the semester, one practice session will cover Basic II topics, another will use Blender and Unreal Engine 4.

**Things you can do in this course:** Reel 2015, Reel 2016,

### Grading

To successfully complete the course the student will need to:

**Attend the lectures and read the material in CGLearn**.

Lectures are meant to provide you with an opportunity of us explaining the computer graphics concepts, you to ask questions if there are difficult parts, and us to have an discussion. Hopefully lectures will be fun and give you a better understanding of the material (vs solitary study). CGLearn environment should have enough material and examples for you to understand the concepts more clearly and thoroughly at home.**Solve tasks**.

There will be a number of programming tasks under each topic in CGLearn. Practice sessions are there to help you with those tasks. This means that we will try to explain the concepts behind the tasks and perhaps solve some of them together. Solutions to tasks should be uploaded in CGLearn.**Complete a programming project**.

To try applying and extending the knowledge you gain in the course the students are required to complete a small-scale programming project of their own choice in teams of 2-3 (up to 4 in exceptional cases) people. Successful completion will result in 30 points. You lose points by missing deadlines.**Pass a written exam.**The exam will consist of about 20-30 short questions, aiming to test the overall understanding of the theoretical material covered during the course. For those who attend the lectures and read material from CGLearn, it will hopefully be trivial to solve. The maximum score for the exam is 30 points.**Game jam bonus.**You can earn additional 10 bonus points to count towards you overall grade if you participate in the Ludum Dare 37 game jam in December. This applies if you do not get credits for LD37 participation in any other course.

The final score is obtained as the sum of all points (i.e., the nominal amount is 40 practice + 30 project + 30 exam. There will be plenty of opportunities for bonus points as well). Point score is then mapped to the F-A scale in the traditional manner (91+ = A, 81-90 = B, etc)