Custom engine with voxel renderer
Real time voxel raymarcher in a custom engine/editor
Project overview
Scope:
This was my first engine/graphics project. It consisted of 2 stages, the first 8 weeks were spend researching and developing a custom a engine framework along with a simple particle system using Data Orientated Design, serialisation and simple Lua scripting integration.
It featured raymarched primary visibility for arbitrarily transformed voxels objects, raymarched shadows and direct lighting, raymarched ambient occlusion, and single bounce global illumination.
Tech Stack & Workflow:
Languages & APIs: C++, OpenGL
Shaders: GLSL
Build & Tools: Visual Studio & MSBuild, GitHub (version control), Nsight graphics for profiling and RenderDoc for debugging.
External Dependencies: EnTT, ImGui, GLFW, Cereal, XSR (University provided renderer used to render the GLTF's)
Key Achievements:
Voxel Rendering Framework: Developed a rendering pipeline for multiple, arbitrarily-oriented voxel objects (dense 3D grids) using DDA with data loaded via .vox importing.
Editor: Built a custom Dear ImGui editor with an interactive viewport, ImGuizmo for precise object manipulation, scene-graph inspector and custom resource/entity inspection panel.
Optimized Scene Management (EnTT & Cereal): Utilized EnTT (ECS) for entity managemen with Cereal-based binary serialization for fast scene load/save.
Modular Engine Systems: Architected a system interface with managed execution ordering via a sorted vector for dependency management.
Asset management and Asset importing pipeline: Developed a GLTF asset importing pipeline using tinyGLTF and a extendable custom resource manager with asset reference counting.
Raymarched Rendering Pipeline: Implemented raymarched soft shadows, raymarched voxel AO(ambient occlusion) and single-bounce GI, with temporal accumulation/reprojection for denoising.
Extensibility & Prototyping: Created a data-oriented particle system and integrated Lua scripting for gameplay logic.