Lecture 20: Next steps in computer graphics

Computer graphics in Game development

Ivan Belyavtsev


Select your next development branch

  • Rasterization
  • Raytracing
  • DirectX 12
  • Vulkan
  • Game development

Rasterization branch

  1. Read Fundamentals of Computer Graphics by Peter Shirley [1]
  2. Read Introduction to 3D Game Programming with DirectX 12 by Frank Luna [2]
  3. Read GPU gems 1 [3]
  4. Read GPU gems 2 [4]
  5. Read GPU gems 3 [5]

Raytracing branch

  1. Read Ray tracing in one weekend series by Peter Shirley [6]
  2. Read DX12 Raytracing tutorial from https://developer.nvidia.com/rtx/raytracing/dxr/dx12-raytracing-tutorial-part-1 [7]
  3. Read Ray tracing gems [8]
  4. Read Ray tracing gems 2 [9]

DirectX 12 branch

  1. Dive into official DirectX 12 samples: https://github.com/microsoft/DirectX-Graphics-Samples
  2. Read Introduction to 3D Game Programming with DirectX 12 by Frank Luna [2]

Vulkan API + GLTF branch

  1. Read Vulkan guide https://github.com/KhronosGroup/Vulkan-Guide
  2. Dive into Vulakn samples https://github.com/khronosGroup/Vulkan-samples
  3. Implement your own GLTF viewer https://github.com/KhronosGroup/glTF/blob/master/README.md
  4. Avoid Sasha Williams’s samples=)

Game development branch

Creativity showcase: refactoring

const float MAX_FLOAT_COLOR_VALUE = 255.f;
const int MAX_COLOR_VALUE = 255;
const int LEAST_COLOR_VALUE = 0;

static unsigned_color from_color(const color& color)
    unsigned_color out{};
    out.r = std::clamp(float_to_int(MAX_FLOAT_COLOR_VALUE * color.r), LEAST_COLOR_VALUE, MAX_COLOR_VALUE);
    out.g = std::clamp(float_to_int(MAX_FLOAT_COLOR_VALUE * color.g), LEAST_COLOR_VALUE, MAX_COLOR_VALUE);
    out.b = std::clamp(float_to_int(MAX_FLOAT_COLOR_VALUE * color.b), LEAST_COLOR_VALUE, MAX_COLOR_VALUE);
    return out;

by Fedor Krasilnikov

Creativity showcase: models

by Danil Meshcherekov, Egor Kuziakov, Gleb Kirillov, Gleb Miroshin, Grigorii Fil, Ivan Chernakov, Vladislav Urzhumov

Creativity showcase: lighting

by Grigorii Fil, Maxim Insapov

Creativity showcase: animation and window

by Georgiy Sapronov (and an attempt by Vitaliy Alifanov)


The official date of the exam is 22.07.2022.

The actual date of the exam is today.

Before exam

Please give feedback about this course


Go Moodle and pass the test:


Thank you for the participation


Shirley P., Marschner S. Fundamentals of computer graphics. 3rd ed. USA: A. K. Peters, Ltd., 2009.
Luna F. Introduction to 3D game programming with DirectX 12. Dulles, VA, USA: Mercury Learning & Information, 2016.
Fernando R. GPU gems: Programming techniques, tips and tricks for real-time graphics. Pearson Higher Education, 2004.
GPU gems 2: Programming techniques for high-performance graphics and general-purpose computation / ed. Pharr M. Addison Wesley, 2005.
Nguyen H. Gpu gems 3. First. Addison-Wesley Professional, 2007.
Shirley P. Ray tracing in one weekend. second. Amazon.com Services LLC, 2019. Vol. 1.
Lefrançois M.-K., Gautron P. DX12 raytracing tutorial - part 2 [Electronic resource]. URL: https://developer.nvidia.com/rtx/raytracing/dxr/DX12-Raytracing-tutorial-Part-2.
Haines E., Akenine-Moller T. Ray tracing gems: High-quality and real-time rendering with DXR and other APIs. USA: Apress, 2019.
Ray tracing gems II / ed. Adam Marrs Peter Shirley, Wald I. Apress, 2021.
// reveal.js plugins