Skip to content

BennySpace/AGFramework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

165 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AGFramework Banner

AGFramework

A small DirectX 12 rendering framework for experimenting with modern real-time rendering techniques on Windows.

Implemented features:

  • custom window, message loop, and input handling;
  • core DX12 setup: device, swap chain, command queue, and descriptor heaps;
  • obj model loading with textures and materials;
  • deferred rendering with a GBuffer;
  • directional, point, and spot lighting;
  • cascaded shadow maps with PCF;
  • PBR lighting with image-based lighting;
  • Sponza demo scene.

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

Completed ITMO Computer Graphics Course Tasks

DirectX 12 Part 1 Overview

  • Implemented a custom message loop.
  • Implemented a WndProc window procedure.
  • Created a window class that encapsulates WinAPI window management.
  • Refactored input into a dedicated InputDevice with raw input handling.

DirectX 12 Part 2 Device and Resources

  • Built the application framework and timer.
  • Initialized the Device, SwapChain, and required base resources.
  • Implemented back buffer and depth buffer clearing.

DirectX 12 Part 3 Rendering

  • Added HLSL shader compilation and loading.
  • Created constant buffers, root signatures, and PSOs.

Textures

  • Added texture loading.
  • Added obj model rendering with materials.

Rendering

  • Implemented the main rendering system.
  • Implemented the GBuffer.
  • Implemented deferred rendering.
  • Added Directional, Point, and Spot lights.
  • Added the Sponza scene with multiple light sources.

Shadows

  • Added cascaded shadow maps.
  • Added PCF shadow filtering.

Physically Based Rendering

  • Switched lighting to PBR.
  • Added IBL lighting and reflections.
  • Added support for irradiance map, BRDF integration map, and prefiltered environment map.

Goal

AGFramework is organized as a small rendering framework rather than a full game engine. Its current architecture aims to keep rendering responsibilities separated into practical modules while staying simple enough to evolve incrementally.

Architectural Style

The framework does not follow one strict high-level pattern such as MVC or ECS. Instead, it currently uses a combination of:

  • layered architecture
  • subsystem decomposition
  • facade-style entry points
  • composition over inheritance

Project Structure

  • AGFramework/src/Core - window, timer, and input systems.
  • AGFramework/src/Graphics/dx12 - core DirectX 12 context and helper classes.
  • AGFramework/src/Graphics - deferred renderer, lighting, shadows, materials, and scene code.
  • AGFramework/shaders - HLSL shaders.
  • Assets - models, textures, and demo materials.

About

An another DirectX 12 rendering framework for experimenting

Resources

Stars

Watchers

Forks

Contributors