A real-time 3D renderer built with DirectX 11, featuring physically-based rendering (PBR), image-based lighting (IBL), and a deferred rendering pipeline. Inspired by Marmoset Toolbag.
- Deferred Rendering Pipeline - Compute shader-based lighting for efficient multi-light scenes
- Physically-Based Rendering (PBR) - Cook-Torrance BRDF with metallic-roughness workflow
- Image-Based Lighting (IBL) - HDR environment maps with irradiance and prefiltered specular
- Z-Prepass - Early depth testing for overdraw reduction
- Hierarchical Scene Graph - Parent-child transform propagation
- glTF Import - Load 3D models with materials and textures
- Multiple Light Types - Point, directional, and spot lights
- Object Picking - GPU-based selection via object ID buffer
- ImGui Interface - Scene hierarchy, material editing, light properties
- Gizmo Manipulation - Translate, rotate, scale objects
- Undo/Redo System - Command pattern with transaction support
- BVH Visualization - Debug view of bounding volume hierarchy
- Windows 10/11
- Visual Studio 2022 (or compatible compiler with C++20 support)
- CMake 3.10+
- DirectX 11 compatible GPU
git clone https://github.com/efimco/DOCXEngineDirectX.git
cd DOCXEngineDirectXmkdir build
cd build
cmake ..Or use CMake presets:
cmake --preset=defaultUsing Visual Studio:
- Open
build/TimeToDX.sln - Set
TimeToDXas the startup project - Build and run (F5)
Using Command Line:
cmake --build build --config ReleaseThe executable expects resources to be at ../../res/ relative to the working directory. When running from Visual Studio, the working directory is automatically set.
cd build/Release
TimeToDX.exe┌─────────────┐
│ ZPrePass │ Depth-only rendering
└──────┬──────┘
▼
┌─────────────┐
│ GBuffer │ Albedo, Normal, Position, Metallic/Roughness, ObjectID
└──────┬──────┘
▼
┌─────────────┐
│ CubeMap │ IBL: Irradiance, Prefiltered env, BRDF LUT
└──────┬──────┘
▼
┌─────────────┐
│ Deferred │ Compute shader lighting (PBR + IBL)
└──────┬──────┘
▼
┌─────────────┐
│ FSQuad │ Fullscreen blit to backbuffer
└──────┬──────┘
▼
┌─────────────┐
│ ImGui │ UI overlay
└─────────────┘
| Input | Action |
|---|---|
| RMB + WASD | Fly camera |
| RMB + Mouse | Look around |
| Scroll | Zoom |
| LMB | Select object |
| W/E/R | Translate/Rotate/Scale gizmo |
| Ctrl+Z | Undo |
| Ctrl+Y | Redo |
All dependencies are included in thirdparty/Include/:
- GLM - Mathematics library
- Dear ImGui - Immediate mode GUI
- ImGuizmo - 3D gizmos
- tinygltf - glTF 2.0 loader
- stb_image - Image loading
See the doc/ folder for detailed documentation:
Add your license here
- HDR environment maps from Poly Haven
- Inspired by Marmoset Toolbag
