Computer graphics programming
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
BI-PGR.1 | Z,ZK | 5 | 2P+2C | Czech |
- Course guarantor:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Software Engineering
- Synopsis:
-
Students are able to program a simple interactive 3D graphical application like a computer game or scientific visualisation, to design the scene, add textures imitating geometric details and materials (like wall surface, wood, sky), and set up the lighting. At the same time, they understand the fundamental principles and terms used in computer graphics, such as graphical pipeline, geometric transformations, or lighting model. They gain knowledge allowing orientation in computer graphics, and representing solid fundamentals for your professional development, e.g. for GPU programming and animations. They get used to techniques utilised in geometric modelling, modelling of curves and surfaces, and scientific visualisation.
- Requirements:
-
Basic knowledge of C/C++, programming and debugging of source codes, linear algebra.
- Syllabus of lectures:
-
1. Introduction to computer graphics. Introduction to GLUT
2. Writing shaders in OpenGL I – fundamentals
3. Writing shaders in OpenGL II – data & buffers
4. Transformations I (coordinate systems, model, view)
5. Transformations II (projection, viewport, gimbal lock)
6. Light and color, illumination and shading models, light and materials in OpenGL
7. Textures and texturing (texture mapping and filtering)
8. Rendering pipeline and framebuffer, operations with fragments.
9. Interaction techniques - input methods, object selection, virtual trackball,
Fog and antialiasing
10. Interpolating and approximating curves and surfaces I
11. Interpolating and approximating curves and surfaces II
12. Representation of rotation, quaternions
13. Advanced rendering methods and global illumination
- Syllabus of tutorials:
-
1. Introduction, semestral projects, a compilation of assignments
2. Fundamentals of shader programming. Semester project selection.
3. Structure of a program in GLUT, buffers (VBO and VAO)
4. Graphical elements
5. Transformations
6. Shading, lights, and materials
7. Seminar on transformations, first seminar projects check
8. Textures
9. Curves
10. Selection and interaction
11. Individual consultations of semestral projects
12. Student projects delivery
13. Fast presentation + choice of the best student works. Assignment
- Study Objective:
-
The module's goal is to explain the basic notions and principles of computer graphics (e.g., textures, lighting, transformations), learn simple interactive graphical applications using OpenGL library, and introduce the techniques used in geometric modeling, curve and plane modeling, and data visualization.
- Study materials:
-
[1] Gortler, S.: Foundations of 3D Computer Graphics, The MIT Press, 2012, 9780262017350.
[2] Dave Shreiner, Graham Sellers, John Kessennich, Bill Licea-Kane: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 4.2 (8th Edition), 2012/2013.
[3] Wolf, D.: OpenGL 4.0 Shading Language Cookbook, Packt Publishing Ltd, 2011, 978-1-849514-76-7,
- Note:
- Further information:
- https://courses.fit.cvut.cz/BI-PGR/
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Bachelor program Informatics, unspecified branch, in Czech, 2015-2020 (VO)
- Bachelor branch Security and Information Technology, in Czech, 2015-2020 (elective course)
- Bachelor branch Computer Science, in Czech, 2015-2020 (elective course)
- Bachelor branch Computer Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Information Systems and Management, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Software Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Web Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Computer Graphics, in Czech, 2015-2020 (compulsory course of the branch)
- Bachelor branch Knowledge Engineering, in Czech, 2018-2020 (elective course)