Skip to content

Latest commit

 

History

242 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AGFramework Banner

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.

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

Requirements

  • 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.

Build and Run

  1. Open AGFramework.slnx in Visual Studio.
  2. Restore the NuGet packages if Visual Studio does not do so automatically.
  3. Select the x64 platform and either the Debug or Release configuration.
  4. Build and run the AGFramework project.

To perform a one-frame rendering smoke test without showing a window, run the built executable with --smoke-test.

Controls

  • W, A, S, D - move the camera;
  • Shift - move faster;
  • hold the right mouse button inside the window - capture the mouse and look around.

Architecture

The framework is organized around a small orchestration layer and focused rendering subsystems:

  • AGFramework owns the window, input device, frame loop, and renderer lifetime.
  • DirectX12App coordinates per-frame updates, GPU synchronization, scene state, and rendering passes.
  • DirectX12Context encapsulates DirectX 12 device, command-list, swap-chain, and descriptor-heap management.
  • RenderingSystem owns 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.

Project Structure

  • 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.

AI Usage

Artificial intelligence was used for:

  • analyzing the codebase;
  • implementing methods from architectural descriptions;
  • generating diagrams;
  • debugging.
  • maintaining and updating in-code documentation.

Academic Attribution

This project is developed as part of the Computer Graphics course laboratory works at the School of Video Game Development, ITMO University.

About

An another DirectX 12 rendering framework for experimenting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages