Back to projects

Project

DX12-FPS

A first-person shooter demo built on a custom DirectX 12 renderer with data-driven levels, component-based gameplay, skeletal meshes, and GPU instancing.

Source & README
FPS scene rendered by the custom DirectX 12 engine
First-person weapon, instanced vegetation, and point lighting. Capture from the project report.

Project overview

Role
Solo Programmer
Engine
Custom DirectX 12 Renderer
Language
C++ / HLSL
Platform
Windows PC

Engine architecture

The engine separates platform/rendering services, scene components, and FPS gameplay. Text-based level configuration assembles resources and objects through a component factory, making scene changes possible without hardcoding each object in the main loop.

  • Cached textures/models and material instances share reusable resources.
  • Shader reflection exposes named constant-buffer updates for transforms, lighting, and bones.
  • Input, camera, collision, animation, weapon, and rendering components provide separate responsibilities.

Rendering and animation

The DirectX 12 backend manages descriptors, render targets, resource transitions, and per-frame command resources. Fences coordinate CPU resource reuse with GPU execution. Skeletal sampling, interpolation, and skinning drive characters and weapons; normal mapping, alpha testing, point lights, and instancing complete the scene.

Tree-trunk shading comparison with and without normal mapping.
Tree-trunk shading comparison with and without normal mapping.

Gameplay validation

The FPS scene exercises first-person movement, AABB collision, ray-based shooting, weapon-state transitions, and enemy hit/death feedback. It provides an integration test for the engine systems in a playable setting.

Collision debug volumes in the running FPS scene.
Collision debug volumes in the running FPS scene.

Explore the implementation

Built for Windows with C++20, HLSL, and the MSVC x64 toolchain. GamesEngineeringBase is supplied course infrastructure; scene models and textures are external assets.

Source and build instructions · Technical report

View all projects