Graphics Programming With Vulkan And C++
Published 2/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 5.88 GB | Duration: 6h 6m
Published 2/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 5.88 GB | Duration: 6h 6m
Learn graphics programming now using the most popular graphics API
What you'll learn
Create graphics applications
Apply common rendering math
Use Vulkan for graphics programming
Apply good coding standards
Creating and managing windows
Writing shader code using GLSL
Setting up a project using CMake
Setup a graphics pipeline
Basic graphics theory
Requirements
Good Understanding of modern C++ (pointers, references, lambdas)
Basic Understanding of OOP
Knowledge of the Standard C++ Library & Algorithms
Description
WelcomeVulkan is the newest and most popular graphics API out there. It is the successor of the already deprecated OpenGL and it is the future for any kind of cross-platform graphical applications. It is extremely performant which makes it perfect for game and game engine development.With this course I aim to teach you the very basics of computer graphics with Vulkan in some short and simple lessons. I believe everyone can learn and it is especially important to have easy to understand chunks that can be consumed in short bursts.This course will cover: setting up your C++ project, creating a window, initializing vulkan, rendering a simple triangle, compiling shaders, debugging issues, rendering vertices, basic transformations for 3D.I will not go as far as to teach complex topics like post-processing or shadows since the course aims to be short and accessible. The course will get regular updates though that will cover any major changes in the specification.The course is tought on Microsoft Windows but most of the knowledge gained can be used on any platform.Technologies UsedVulkan SDK - the main topic of the course is the vulkan graphics library specification. This is what "talks" to the GPU of your PC and renders any graphical information that you send to it.GLFW - Abstracts handling windows so that we don't have to call native platform functions. This way the course would be mostly accessible to people on any platform.GLM - A mathematical library that will help with transformation of 3D information.CMake - for managing and compiling the project. We will use a modern setup that is easy to understand and use.
Overview
Section 1: Introduction
Lecture 1 Promo
Lecture 2 Welcome
Lecture 3 FAQ
Lecture 4 Course Overview
Lecture 5 Installing Vulkan SDK
Lecture 6 Can I Run It?
Section 2: Setup
Lecture 7 Software Used
Lecture 8 Installing Visual Studio
Lecture 9 Installing Ninja
Lecture 10 Installing CMake
Lecture 11 Installing Git
Section 3: CMake Configuration
Lecture 12 Creating "Hello, World!"
Lecture 13 CMake Dependencies & Vulkan
Section 4: Coding Standards
Lecture 14 Coding Standard: Numbers
Lecture 15 Coding Standard: Microsoft GSL
Lecture 16 Commonly Used Types
Lecture 17 Coding Style: Google & Clang Formatting
Lecture 18 Coding Style: Course Overrides
Lecture 19 Coding Style: EditorConfig
Lecture 20 Styling is Important!
Section 5: Window Creation & Management
Lecture 21 What is a Window?
Lecture 22 Initializing GLFW
Lecture 23 Using Precompiled Headers
Lecture 24 The Coordinate System & 2D Vectors
Lecture 25 What are Monitors?
Lecture 26 Monitor Functions
Lecture 27 Extracting Monitor Functionallity
Lecture 28 Creating the Window Class
Lecture 29 Adding Precompiled Headers Everywhere
Lecture 30 Preparing the Window for Vulkan
Section 6: Vulkan Pipeline
Lecture 31 What is Vulkan?
Lecture 32 Vulkan Architecture
Section 7: The Vulkan Instance
Lecture 33 Creating the Vulkan Instance
Lecture 34 Checking Existing Extensions
Lecture 35 Refactoring Extensions Check
Lecture 36 Functional Programming Tricks
Lecture 37 The Instance: Summary
Section 8: Error Handling & Validation Errors
Lecture 38 Basic Validation Layers
Lecture 39 Adding the Spdlog Library
Lecture 40 Setting Up the Debug Messenger
Lecture 41 Creating a Glfw Error Callback
Lecture 42 Reorganize Code Into Regions
Lecture 43 Validation Errors: Summary
Section 9: Devices & Queues
Lecture 44 What Are Physical Devices?
Lecture 45 Getting Physical Devices
Lecture 46 Checking for Queue Family Support
Lecture 47 Creating Logical Device
Lecture 48 Getting the Graphics Queue
Lecture 49 Devices & Queues: Summary
Section 10: Presentation & Swap Chain
Lecture 50 Creating the Surface
Lecture 51 Creating the Presentation Queue
Lecture 52 Checking Device Extension
Lecture 53 Getting Swap Chain Capabilities
Lecture 54 Choosing Swap Chain Capabilities
Lecture 55 Creating the Swap Chain
Lecture 56 Getting Swap Chain Images
Lecture 57 Creating Image Views
Lecture 58 Presentation & Swap Chain: Summary
Section 11: Graphics Pipeline
Lecture 59 What is a Vertex?
Lecture 60 What is the Graphics Pipeline?
Lecture 61 Basic Shader Compilation
Lecture 62 CMake Shader Setup
Lecture 63 Vertex & Fragment Shaders
Lecture 64 Visual Studio Extension for GLSL
Lecture 65 Shader Includes
Lecture 66 Loading Shaders
Lecture 67 Viewport & Scissoring
Lecture 68 Vertex Input & Rasterizer
Lecture 69 Color Blending & Layout
Lecture 70 Render Pass
Lecture 71 Creating the Pipeline
Lecture 72 Graphics Pipeline: Summary
Section 12: Drawing the Triangle
Lecture 73 Framebuffers
Lecture 74 Command Pool & Command Buffer
Lecture 75 Rendering Commands
Lecture 76 Creating Semaphores
Lecture 77 Rendering
Lecture 78 Resizing the Window
Lecture 79 Shader Communication
Lecture 80 Shader Variables: Adding Color
Lecture 81 Color Blending & Transparency
Lecture 82 Rendering Commands: Summary
Section 13: Data Buffers
Lecture 83 The Vertex Input Class
Lecture 84 Rendering Vertex Buffers
Lecture 85 Transient Command Buffers
Lecture 86 Abstracting Buffer Creation
Lecture 87 Staging & GPU Buffers
Lecture 88 Index Buffer
Lecture 89 Push Constants
Lecture 90 Uniform Buffer
Lecture 91 Uniform Descriptor Set
Lecture 92 Data Buffers: Summary
Section 14: Textures
Lecture 93 Passing UVs to the Shader
Lecture 94 Descriptor Pool for Images
Lecture 95 Creating the Sampler
Lecture 96 Laying Out the Texture Setup
Lecture 97 Texture Resource
Lecture 98 Loading the Image to Staging
Lecture 99 Creating the Image
Lecture 100 Transfering the Texture to the GPU
Lecture 101 Image View & Descriptor Set
Lecture 102 Textures: Summary
Section 15: Advanced
Lecture 103 Depth Problem
Lecture 104 Enable Depth Testing
Section 16: What now…
Lecture 105 Where to go next?
Lecture 106 Bonus Materials
Junior C++ programmers,Game engine programmers,3D graphics programmers switching to Vulkan