Tags
Language
Tags
December 2024
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4

Graphics Programming With Vulkan And C++

Posted By: ELK1nG
Graphics Programming With Vulkan And C++

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

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