Wild engine
Personal DirectX 12 framework for researching rendering techniques like volumetric fog, procedural island generation, ocean rendering, and procedural grass.
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.
Link to the github page: Wild engine
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.
