Project

Wild engine

Personal DirectX 12 framework for researching rendering techniques like volumetric fog, procedural island generation, ocean rendering, and procedural grass.

🚀 Personal 🔧 DirectX 12 👤 Solo 💻 PC ⏱️ In Progress

This is my custom DirectX 12 rendering engine built from scratch in C++, designed as a personal playground for implementing real-time rendering techniques inspired by games like The Legend of Zelda: Breath of the Wild and Sea of Thieves. The engine fully abstracts the DirectX 12 API, from device and swapchain management to command lists, root signatures, pipeline state objects, and descriptor heaps, providing a clean interface for building render passes without touching raw D3D12 calls. Built over six months as a solo project, whenever I see a cool feature in a game I play, I wan’t to know how it is created.

The project uses G-Buffer style rendering with PBR shading and image-based lighting. All textures are accessed via bindless techniques. Shaders are written in HLSL, compiled with Slang, and the project is built with CMake.

Tools

  • PIX and RenderDoc integration for GPU debugging with command list event markers
  • Built-in profiler for all render passes and debug line rendering
  • ImGui integration for engine layout, allowing real-time modifications

My contributions

Cascaded shadow maps

Directional shadow maps rendered across multiple cascades, each capturing the appropriate level of detail for its distance range. Sampled using PCF filtering for extra sharp edges.

Volumetric fog

Ray marched volumetric fog with god rays sampled from cascaded shadow maps. I'm currently working on froxel-based volumetric fog to improve performance.

Procedural terrain system

Island generation with layered noise, colored based on slope steepness combined with height-based coloring. The textures are sampled using tri-planar methods to ensure they are not stretched out. To achieve the island look I reduce the noise on the edge of the height map.

Modified my procedural grass system to integrate with the height map of the island

The grass system's blades are offset by the height map and are only drawn on the grass texture.