A small DirectX 12 rendering framework for experimenting with modern real-time rendering techniques on Windows.
Implemented features:
- WinAPI window, message loop, and raw-input handling;
- DirectX 12 device, swap chain, command queue, and descriptor heaps;
- OBJ model loading with textures and materials;
- deferred rendering with a GBuffer;
- directional, point, and spot lights;
- cascaded shadow maps with PCF filtering;
- physically based rendering (PBR) with image-based lighting (IBL);
- a Sponza demo scene and a Dear ImGui debug overlay for inspecting and adjusting renderer settings.
- Windows 10 or later with DirectX 12 support;
- Visual Studio with the MSVC v145 toolset and a Windows SDK installed;
- NuGet package restore for the native dependencies: Assimp and DirectXTK12 UWP.
- Open AGFramework.slnx in Visual Studio.
- Restore the NuGet packages if Visual Studio does not do so automatically.
- Select the
x64platform and either theDebugorReleaseconfiguration. - Build and run the
AGFrameworkproject.
To perform a one-frame rendering smoke test without showing a window, run the built executable with --smoke-test.
W,A,S,D- move the camera;Shift- move faster;- hold the right mouse button inside the window - capture the mouse and look around.
The framework is organized around a small orchestration layer and focused rendering subsystems:
AGFrameworkowns the window, input device, frame loop, and renderer lifetime.DirectX12Appcoordinates per-frame updates, GPU synchronization, scene state, and rendering passes.DirectX12Contextencapsulates DirectX 12 device, command-list, swap-chain, and descriptor-heap management.RenderingSystemowns GPU resources and pipeline states for shadow, geometry, and deferred-lighting passes.- Scene, asset, lighting, material, camera, and debug-overlay modules provide data and controls to the renderer.
AGFramework/src/App— application startup, frame loop, and top-level DirectX 12 orchestration.AGFramework/src/Core— WinAPI window, message dispatch, timer, and raw input.AGFramework/src/Graphics/DX12— DirectX 12 device, swap chain, command resources, descriptor heaps, and DX12 utilities.Vendor— third-party DirectX helper and DDS-loader sources.
AGFramework/src/Graphics— rendering systems and shared rendering state.Assets,Geometry,Resources,Scene— asset paths, import, mesh data, GPU upload, and scene data.Renderer— rendering system, G-buffer, cascaded shadows, and render state.Demo— PBR-grid construction for the Sponza demonstration.UI— Dear ImGui debug UI and render diagnostics.
AGFramework/shaders— HLSL shaders for geometry, lighting, and shadow passes.AGFramework/external/imgui— bundled Dear ImGui sources and platform/rendering backends.Assets— runtime assets: Sponza model, textures, IBL maps, shared materials, and icons.
Artificial intelligence was used for:
- analyzing the codebase;
- implementing methods from architectural descriptions;
- generating diagrams;
- debugging.
- maintaining and updating in-code documentation.
This project is developed as part of the Computer Graphics course laboratory works at the School of Video Game Development, ITMO University.



