The Game Engine Programming Series

None
0 comments
1 followers
40 entries
Advertisement
GameEngineSeries
June 28, 2023
Game Engine Programming 034.1 - A texture class for the Direct3D 12 render engine | C++ Game Engine

Today, I'm going to write a class that represents a texture resource in the low-level render engine. We can use this class to read form texture data while rendering objects. In addition, we can also use it to create textures that can be written to by the graphics pipeline. For example, we can use i…

6,149 views
GameEngineSeries
December 28, 2022
Game Engine Programming 033.2 - Use the free-list with utl::vector and std::vector | C++ Game Engine

Previously, I wrote a free-list container which had a vector as its buffer and I ran into the problem of conflicting destruction of items which made it necessary to write our own vector container that has an extra template parameter to control whether the items should be destructed upon deletion or…

7,223 views
GameEngineSeries
November 21, 2022
Game Engine Programming 033.1 - Free-list and vector containers | C++ Game Engine

Today's video is less related to game engine programming and more about creating utility functions that we need in order to organize the data within the engine. Of course, it's hard to go about without good containers and as we have seen in the previous episodes we're desperately in need of having …

6,273 views
GameEngineSeries
October 22, 2022
Game Engine Programming 032.2 - Using the render surface | C++ Game Engine

In the last video, I made a render surface class that uses a DXGI swap chain and today I'm going to integrate that class into our low-level renderer, so that we can create render surfaces and use them for displaying each frame. 

?(Red Episode) 

✅ Support Game Engine Series https://patreon.c…

7,563 views
GameEngineSeries
September 30, 2022
Game Engine Programming 032.1 - DirectX (DXGI) Swap Chain | C++ Game Engine

Right now we're in the middle of implementing a DirectX 12 renderer and so far we've created a d3d12 device, a command structure to submit work to GPU, and we spent the last episode writing a descriptor heap allocator which helps us to easily place descriptors in descriptor heaps. Now we've got eno…

8,421 views
GameEngineSeries
September 17, 2022
Game Engine Programming 031.2 - Finishing descriptor heap allocator | C++ Game Engine

In the last video we started implementing an allocator class for managing descriptor heaps. After writing the initialize and allocate functions, we ran into a problem caused by the fact that resources and descriptors can't be removed in an immediate fashion, because we're using a multi-frame render…

11,050 views
GameEngineSeries
September 04, 2022
Game Engine Programming 031.1 - Descriptor heap allocator | C++ Game Engine

In this new episode, I'm going to write an allocator class that keeps track of resource descriptors for our graphics resources. I'll start with a high-level explanation of resources, descriptors and descriptor heaps and will continue implementing the allocator class. (Red Episode)

Support Game Engin…

9,472 views
GameEngineSeries
June 17, 2022
Game Engine Programming 030.2 - Synchronizing CPU and GPU | C++ Game Engine

In the last video, we set up a command queue, command list and a set of command allocators to be used for multiple frame buffers in such a way that enables the CPU and GPU to work in parallel. However, because we have a limited number of frame buffers, we need to synchronize CPU and GPU. In this vi…

4,440 views
GameEngineSeries
May 26, 2022
Game Engine Programming 030.1 - GPU work submission | C++ Game Engine

Last time, we set up the graphics engine architecture, consisting of a high-level renderer and one or more low-level renderers. We also started implementing a DirectX 12 renderer and, so far, we successfully initialized a Direct3D device that represents the graphics card. In this episode, we'll be …

6,344 views
GameEngineSeries
April 24, 2022
Game Engine Programming 029.2 - Initializing DirectX 12 | C++ Game Engine

Previously, I set up the high-level renderer and defined how it would interact with a low-level renderer through an interface. I also added the required headers for DirectX 12 so that we can access its API. Today, I'm going to start with writing the initialization and shutdown code for the D3D12 lo…

8,632 views
GameEngineSeries
April 11, 2022
Game Engine Programming 029.1 - Setting up graphics rendering | C++ Game Engine

Today, after almost a year of game engine programming videos, I'm really excited to finally start working on the graphics renderer! So far we've been defining a lot of general architecture for the game engine and I think that will help us a lot with not getting too distracted during implementation …

11,208 views
GameEngineSeries
April 09, 2022
Game Engine Programming 028.2 - Generating icons for asset files | C++ Game Engine

Today, we'll finish writing the code that saves the geometry to asset files. The main thing that's left to do is to generate an icon for the 3D object and write everything to a file. 

(Green Episode)

Support Game Engine Series: https://patreon.com/gameengineseries

Discord: https://discord.gg/75Z…

5,959 views
GameEngineSeries
March 21, 2022
Game Engine Programming 028.1 - Saving geometry to asset file | C++ Game Engine

We spent the last couple of episodes setting up the asset pipeline and started with the geometry asset. We created the content tools to generate and process meshes and also made a control in the editor to visualize the generated geometry. The last remaining part of the pipeline is the ability to sa…

5,360 views
GameEngineSeries
September 04, 2021
Game Engine Programming 027.2 - UV mapping the UV Sphere | C++ Game Engine

Last time, we wrote a function that successfully generates a mesh for a UV sphere. We also made a user control which we can use to set the properties of the sphere, such as segmentation and size. Today, I'll continue and add a control for the smoothing angle, so that we can have smooth UV spheres. …

6,853 views
GameEngineSeries
July 27, 2021
Game Engine Programming 027.1 - Procedurally generated UV Sphere | C++ Game Engine

Today I'd like to add a new type of primitive mesh to the geometry pipeline, which is a UV sphere. I think this is an interesting exercise to also more thoroughly test the geometry routines. In the first part of this new episode, I'll write the code that will generate the mesh for the UV sphere and…

5,851 views
GameEngineSeries
July 16, 2021
Game Engine Programming 026.4 - Camera movement for the WPF 3D mesh renderer | C++ Game Engine

Previously, we started visualizing the 3D geometry that we got from content tools, the last step of which was being able to move the camera around the object. So, today I'm going to add this functionality to the geometry viewer. But first I'm going to briefly explain a bit about spherical coordinat…

8,042 views
GameEngineSeries
July 06, 2021
Game Engine Programming 026.3 - WPF 3D mesh renderer view | C++ Game Engine

In the last two videos, we set up the geometry pipeline to accept a geometry asset class from the content tools and started working on a WPF renderer so that we'll be able to inspect the generated or imported geometry content. Today, we'll add the viewer control and hopefully see the fruits of our …

8,121 views
GameEngineSeries
June 24, 2021
Game Engine Programming 026.2 - WPF 3D mesh renderer viewmodel  | C++ Game Engine

Today, we're going to start working on an asset editor class for geometry assets. We'll also prepare for viewing a geometry asset by writing a mesh renderer class. This class will serve as a viewmodel for the WPF 3D viewer that we'll write in the next video. (Green Episode) 

Support Game Engine…

5,335 views
GameEngineSeries
May 24, 2021
Game Engine Programming 026.1 - Primitive mesh dialog window  | C++ Game Engine

In the previous episode we wrote some of the functionality that we need in the geometry asset class in order to further process the generated or imported 3D meshes. Starting with this video, we'll create a new dialog window that will allow us to tell the content tools what kind of primitive mesh we…

6,384 views
GameEngineSeries
May 10, 2021
Game Engine Programming 025.3 - Reading data into the geometry asset class | C++ Game Engine

Now that we have the data structures in place for geometry asset, we can go ahead and unpack the imported geometry so that we can process it further in the level editor and finally save it to an asset file. (Green Episode) 

Support Game Engine Series: https://patreon.com/gameengineseries

Discor…

7,036 views
GameEngineSeries
April 16, 2021
Game Engine Programming 025.2 - The geometry asset class | C++ Game Engine

In this video, we're going to define the geometry asset class which we can use to unpack imported mesh data. (Green Episode) 

Support Game Engine Series: https://patreon.com/gameengineseries

Discord: https://discord.gg/75ZmXwz

keywords: mesh, geometry, vertices, asset pipeline, level of detail

b…

5,524 views
GameEngineSeries
April 05, 2021
Game Engine Programming 025.1 - Writing geometry data to a memory buffer | C++ Game Engine

Now that we're able to generate geometry using the content tools, we need to send the data back to the level editor so that it can be processed further and saved to an asset file. In this video, I'll finish the last part in the C++ side that's needed to pack and send the data to the C# side. (Red E…

5,596 views
GameEngineSeries
March 20, 2021
Game Engine Programming 024.4 - Processing vertex UVs and packing for GPU | C++ Game Engine

Today I'd like to continue and finish the vertex processing routine. First, I'll write a function to process the UV coordinates similar to what we did for vertex normals. Then I'll pack the resulting vertices in a final format which will be loaded to the GPU and used in the vertex shader. (Red Epis…

5,703 views
GameEngineSeries
March 14, 2021
Game Engine Programming 024.3 - Processing vertex normals | C++ Game Engine

Now that we have some initial data for a mesh, we can go ahead and write the processing part of the geometry pipeline. In this video, I'm going to write a function that determines what the normal vector should be at each vertex. Using this function and a smoothing angle we can define soft edges and…

5,465 views
GameEngineSeries
March 06, 2021
Game Engine Programming 024.2 - Generating a plane grid procedurally | C++ Game Engine

Previously, we defined most of the data structures that we need when we want to import or generate 3D geometry and we also set up the primitive mesh generation and defined some functions that we can use to generate meshes. Today, I'd like to write the simplest one of those functions which will gene…

6,977 views
GameEngineSeries
February 20, 2021
Game Engine Programming 024.1 - Setting up the geometry pipeline | C++ Game Engine

In this video, I'll set up the foundation for Primal Engine's asset pipeline and we'll start with defining data structures needed for importing and generating 3D mesh geometry. (Red Episode)

Support Game Engine Series: https://patreon.com/gameengineseries

Discord: https://discord.gg/75ZmXwz

keywords…

4,972 views
GameEngineSeries
February 13, 2021
Game Engine Programming 023.3 - Finish hosting Win32 windows in WPF | C++ Game Engine

Today we'll finish pretty much everything that we need to do to host and interact win32 windows in the level editor. 

(Green Episode) 

Support Game Engine Series: https://patreon.com/gameengineseries

Discord: https://discord.gg/75ZmXwz

by Arash Khatami

---------------------------------------…

4,011 views
GameEngineSeries
January 30, 2021
Game Engine Programming 023.2 - Handling resize for hosted windows | C++ Game Engine

In the last video, we managed to host a native Win32 window in the level editor which is a .Net Core application. Because we're doing this to render graphics, we need to update the dimensions of the hosted window whenever it's resized. Today, we're going to look at how we can receive windows messag…

5,842 views
GameEngineSeries
January 11, 2021
Game Engine Programming 023.1 - Hosting a Win32 window in WPF | C++ Game Engine

In this video, we're going to use HwndHost class to host a Win32 window in the level editor which is a WPF .Net Core application. We're also going to fix a couple of small issues in the windows platform implementation.

(Red Episode)


Support Game Engine Series: https://patreon.com/gameengineseries

Dis…

5,125 views
GameEngineSeries
December 31, 2020
Game Engine Programming 022.4 - Open a window for the game application

Previously, we kind of finished writing the window framework and also made a program to test it. Today, I'd like to spend a little time cleaning up that code and, in addition, enable the game application to open a main window for displaying graphics. 

(Red Episode) 

Support Game Engine Seri…

2,998 views
Advertisement

Popular Blogs

shawnhar
Generalist
101 Entries
9 Followers
15 Entries
10 Followers
johnhattan
Programmer
1,277 Entries
47 Followers
ApochPiQ
Generalist
628 Entries
44 Followers
dgreen02
Generalist
338 Entries
56 Followers
Advertisement