Realtime Graphics on GPU - labs (2017/2018)

Current tasks

015. GPU benchmark (C++, 13. 5. 2018) - 25+ points

Compare several variants how to render massive data (106 triangles) on a modern GPU. Write a report about it.

003. Procedural texture using noise (C++/C#, 20. 5. 2018) - 25+ points

Noise function implementation on GPU (fragment shader) + implementation of actual "natural" texture (wood, marble, ..). 2D or 3D approach.

006. Crystal ball (C#/C++, 10. 6. 2018) - 18+ points

Fragment shader implementing light refraction in a crystal ball.

005. Terrain with LoD (C++/C#, 1. 7. 2018) - 30+ points

Implementation of a LoD (Level of Detail) system for potentially infinite terrain. The surface will be rendered from low altitudes (land vehicle, hovercraft with limited speed).

016. Hovercraft mini-game (C++/C#, 1. 7. 2018) - 25+ points

A simple interactive game simulating a hovercraft flying above terrain surface (see the task 005). User interaction, certain motion simulation fidelity, game "achievements", 3rd person view, ...

012. Laser show in CUDA (C#/C++, 1. 7. 2018) - 20 to 48 points

CUDA/OpenCL simulation of a laser show with disco balls etc. Ray-triangle intersection implemented in a CUDA/OpenCL kernel, OpenGL interop for rendering.

Some old tasks for reference

004. Trackball (C++, 23. 4. 2017) - 12 to 28 points

Intuitive 3D object rotation using mouse + some nice 3D object. Momentum.

010. Texture animation using shaders (C++/C#, 7. 5. 2017) - 15 to 28 points

Any interesting effect involving texture animation using fragment shader. Bitmap texture can be used as well.

007. Vinyl surface shader (C++/C#, 21. 5. 2017) - 20 to 32 points

Vinyl record groove simulation in a fragment shader.

014. Pool simulation (C++/C#, 2. 7. 2017) - 18 to 50 points

Simulation of a small pool (waves, tiling, light refraction and absorbtion/coloring) using fragment shader only.

013. Ocean waves (C++, 15. 5. 2016)

Realtime simulation of ocean waves in vertex shader (Gerstner formula or better).

008. Particle system in CUDA (C#/C++, 3. 7. 2016)

CUDA implementation of simple particle system with statical obstacles. Particle vs. obstacle collisions, no inter-particle interaction.

Credit requirements

Students have to earn a total of at least 50 points, upper limit is 80 points (at least 16 points have to be from 3D graphics assignments).
Deadline for winter-term credit is 3. 3. 2024 !
Deadline for summer-term credit is 31. 6. 2024 !

Credit points will be added to examination result (max 100 points) and the final grade will be determined using the following Grading Table:
150+ points A (výborně)
130 to 149 points B (velmi dobře)
110 to 129 points C (dobře)
less than 110 points F (nevyhověl(a))

How to earn credit points

A1. assignments running through the whole term NPGR003 (implemented in C#)

Assignments are given in the labs (practicals), one assignment will be given in each lab. Students will have at least two weeks to deliver a solution. Number of points awarded for a solution depends on the difficulty, solution quality, robustness, and elegance. Additional bonus points can be given, e.g. in case of a contest.

A2. semester project NPGR004 (C#)

The project you will be working on throughout the entire semester. For detailed information, step-by-step instructions, and checkpoints, see the detailed pages of the exercise.

B. transfer from previous year

90% of last-year points could be transferred from the previous year (upon explicit student's request via email).

Contests

Some assignments have a well-defined quantitative criterion for solution comparison, based on which one can assemble a chart of best solutions. Such tasks will be marked as "CONTEST" and there will be a public chart displaying the best achieved results. In case the assignment is handed in by at least 10 students/teams, the three best solutions will obtain a premium of 10, 6, and 3 pts, respectively. (In case the solution was done in a team, all its members get the premium.) Only solutions submitted before the deadline are allowed to enter the contest!

Rules

Since grading of the assignments is very time consuming, your are kindly requested to follow several simple rules:
  • Mail messages have to be sent from an e-mail identity where your civil first name and surname can be easily determined.
    (Use something like "Malcolm Reynolds" <captain.mal@gmail.com>.)
  • Message subject has to contain a task number (NPGR003 ... two-digit decimal number). Everything else is optional.
  • TEST functionality of your code. When grading, the code could be run in conditions slightly different from the obvious ones. If it fails, points go down. So make sure to produce robust code! Handle all (even weird) input conditions well. This is especially true if you have the code generated by an AI assistant!

Submission of assignment solutions

We will use your GIT "copy" ... details are specified in the public GIT repository.

Penalty for late submission

There is a penalty of 1 point for every day of delay after an assignment deadline.

Lab schedule

See lab schedule on the SIS server - Monday 12:20 SW1 (two alternating groups, the Czech one starts on 26 Feb, the English one on 5 Mar)


Copyright (C) 2000-2018 J.Pelikán, last change: 2019-05-09 17:52:59 +0200 (Thu, 09 May 2019)