Skip to main content

3D Graphics Programming (6cr)

Course unit code: LUD2046

General information


Credits
6 cr
Teaching language
English
Responsible person
Anssi Gröhn, Vastuuopettaja

Objective

Understand what 3d real-time rendering is about
Understand what graphics pipeline is
Understand how graphics pipeline works
Understand what vertices are
Understand what shaders are
Understand what scenes are
Understand what scene graph is
Understand what primitives are used to draw 3D graphics
Understand what OpenGL is
Understand what OpenGL ES is
Understand what WebGL is
Understand what Three.js is
Understand how 3D graphics are animated
Understand what skeletal animation is
Understand what textures are
Understand what matrices are
Understand what vectors are
Understand what transforms are
Be able to set up development environment
Be able to write your first program in your development environment
Able to render triangle lists, strips and fans
Able to render line lists, strips and loops
Able to render point sprites
Able to utilize vertex buffer contents in sequential order
Able to utilize vertex buffer contents in arbitrary order
Able to write GLSL vertex shaders
Able to write GLSL fragment shaders
Able to create GLSL shader programs
Able to explain how shaders work in WebGL
Able to pass uniform parameters to GLSL shaders
Able to pass vertex attributes to GLSL shaders
Able to define varying variables in GLSL
Able to utilize varying variables in GLSL
Able to define uniform parametrs in GLSL
Able to utilize uniform parameters in GLSL
Able to write functions in GLSL
understand what textures are
be able to define texture coordinates for vertices in WebGL
be able to define textures for rendered primitives in WebGL
be able to use textures in Three.js objects
be able to write GLSL shaders that use textures
understand what hierarchical transform is
understand how camera analogy works
understand how transformations work
understand the importance of transformation order
understand what gimbal lock is
understand the advantage using quaternions
be able to write code that loads 3D meshes in Three.js
be able to construct complex scene hierarchies in code
know what Gouraud and Blinn-Phong shading models are
know what kind of light types exist in OpenGL ES
know why surface normal matters
be able to calculate surface normal
be able to create per-vertex lighting in shader
be able to create per-fragment lighting in shader
be able to write lighting algorithm for spot light
be able to write lighting algorithm for point light
be able to write lighting algorithm for directional light
be able to define material properties in Three.js
be able to pass material properties to shaders
be able to pass light properties to shaders
Understand what blending is
Understand how blending equations work
Understand what framebuffer operations exist
Understand what particles are
Understand what particle systems are
Understand fundamental functionality of particle systems
Be able to use particles via Three.js
Be able to construct particle system for any application
Be able to write a shader for alpha transparency
Be able to control object rendering order in Three.js
Be able to control depth buffer writing in Three.js
Be able to control depth testing in Three.js

Content

About 3D Graphics and OpenGL
Shaders and Graphics Pipeline
Textures
Scene Management
Lighting and materials
Texture effects and particles

Go back to top of page