← back

DirectX 12 Model Renderer

A real-time model renderer built with DirectX 12 and C++, featuring Assimp model loading, advanced lighting, shadow mapping, and material systems.

DirectX 12 Model Renderer

Overview

This project builds upon a custom DirectX 12 rendering framework and extends it with full -model rendering-, -advanced lighting-, and a flexible -material system-. It integrates -Assimp- for asset importing and supports modern real-time rendering techniques such as shadow mapping, normal mapping, and parallax mapping.

The renderer is designed with a modular architecture, allowing models, materials, and lighting systems to scale while maintaining real-time performance.

Screenshot

Screenshot

Features

  • Full DirectX 12 rendering pipeline with modular design
  • Model loading via Assimp (OBJ, FBX, GLTF)
  • Mesh abstraction for vertex and index buffers
  • Material system supporting multiple texture maps
  • Directional, Point, and Spot Lights
  • Phong and Blinn-Phong shading models
  • Shadow Mapping using depth textures
  • Normal and Parallax Mapping for surface detail
  • Enhanced camera system with free movement
  • Custom logger for categorized runtime messages
  • Real-time FPS counter in the window title

Concepts Demonstrated

  • Assimp-based model importing and processing
  • Vertex attributes (position, normals, tangents, UVs)
  • Descriptor heap management for textures
  • Multiple lighting models and light types
  • Shadow map generation and projection
  • Tangent space calculations for normal/parallax mapping
  • Material abstraction and texture binding
  • Camera transformations and view/projection matrices
  • Command list recording and GPU synchronization
  • Frame timing and performance monitoring

Requirements

  • Language: C++17 or later
  • Graphics API: DirectX 12
  • IDE: Visual Studio / Visual Studio Code

Logging and FPS

A custom logging system provides categorized output (INFO, WARN, ERROR) to console and file. An FPS counter is calculated per frame and displayed in the window title.

Technologies

DirectX 12C++Graphics ProgrammingRenderingAssimp