An experimental DirectX 12 renderer
About
·
Building
·
Dependencies
·
Similar Projects
Warning
This project is highly experimental.
- This project is mainly a learning exercise to explore graphics techniques and will probably have many bugs or unsupported features.
Jar is a DirectX 12 only renderer built as a personal playground for exploring computer graphics. Currently, it features a PBR pipeline, Slang shader compilation, and a minimal editor interface. The initial abstraction was inspired by the Microsoft MiniEngine. The goal of this project is to provide an easy to use tool for 3D model viewing.
This is a learning project and personal renderer, prioritizing experimentation over production readiness.
- Windows only
- Visual Studio 2022
- C++23
- CMake 3.22+
- Ninja
- vcpkg for Windows-specific dependencies
The project uses a PowerShell build.ps1 script that automatically downloads all dependencies (assuming vcpkg installed).
# Build and run
.\build.ps1 -run
.\build.ps1 -build
.\build.ps1 -build -release
.\build.ps1 -clean
.\build.ps1 -tests| Library | Purpose |
|---|---|
| SDL3 | Window management and input |
| Slang | Shader compiler with reflection |
| D3D12MemoryAllocator | GPU memory allocation |
| VectorMath | SIMD-optimized math |
| spdlog | Logging |
| nlohmann/json | JSON parsing |
| Dear ImGui | UI (docking branch) |
| GoogleTest | Unit testing |
vcpkg install directxtk12:x64-windows
vcpkg install directxmesh:x64-windows- Microsoft.Direct3D.D3D12 (Agility SDK)
- WinPixEventRuntime (PIX profiling support)
These are the major features that have higher priority and will get more development time. This table will get updated as needed with more or less features.
| Feature | Status |
|---|---|
| Compute Shaders | |
| Slang Integration | |
| Bindless | ✅ |
| Deferred rendering | ✅ |
| Image based lighting | ❌ |
| Cluster rendering | ❌ |
Note
Features marked
- Microsoft MiniEngine - Microsoft's example of the DirectX 12 API with an engine.
MIT License - See LICENSE file for details.