README.md
August 16, 2026 ยท View on GitHub
Dagon Engine 2
Feature-rich, performant, easy to use, extensible desktop game development framework for D language, a work-in-progress SDL3 port of Dagon Engine 1.x. It works on Windows and Linux.
Note: this project is not connected to Dagon engine by Senscape.
Screenshots
Features
Note: Dagon 2 is still in active development. Not all features and extensions of Dagon 1.0 are ported yet.
New features and major changes from Dagon 0.x/1.x:
- Moved to SDL3
- The renderer now leverages SDL GPU, targeting Vulkan
- Reimplemented
dagon.render. Deferred renderer, post-processing renderer and presentation renderer are now combined into one - Improvements and optimizations in almost every stage of the renderer. Many new features such as irradiance mapping, multiple scattering, specular occlusion, and adjustable f0
- Shader workflow is now based on GLSL 4.60 and includes a built-in GLSL to SPIR-V compiler. SPIR-V modules are cached to disk for reuse
- Texture loader is fully based on SDL3_Image and doesn't use
dlib.image.io. KTX support is now a core feature - Built-in texture caching. Abstract resource cache (
dagon.resource.cache) that can be used for any file types - Many new DDS/DXGI formats support
- Assimp integration is now a core feature. glTF and other model formats support now rely on Assimp
- Screen-space reflections
- Temporal SSAO
- Fog effect is now applied in a separate pass. Ground fog support
- Tonemapping is entirely based on AgX. Legacy tonemappers were removed
- HDR (scRGB) output support
- Mailbox VSync mode support. CPU-friendly frame scheduler
- Direct GPUImage LUT support was removed, it now requires conversion to 3D LUT
- Radial optical distortion support
- Shadeless materials in deferred pipeline
Environmentclass is gone, all environment properties are now part of theSceneclass- Better handling of transparent objects. Transparent and opaque meshes are now differentiated per-material, not per-entity. This simplifies asset import and allows mixing transparent and opaque face groups in the same mesh
- Semantic of
SceneandWorldclasses is changed.Sceneis now just a container for Entities and other graphical data; for user input and game logicsWorldshould be used - All Entities are static by default, and their model matrices are not recalculated each frame to reduce CPU overhead. For dynamic updates enable
Entity.dynamicor use customEntityController(partly analogous to oldEntityComponent) - The renderer now uses separate irradiance cubemap
- BRDF LUT is now generated at runtime instead of loading from data/__internal
- Jolt Physics is now built-in as
dagon.joltpackage - Window minimize/restore events
- Built-in GScript3 virtual machine and scripting API
- Referencing support in *.conf files syntax. Any property can be reused like a variable
- ImGui integration (dagon2:imgui extension) now provides a built-in UI boilerplate class.
System Requirements
Realistic minimum system requirements (for Full HD rendering at 60 fps):
- CPU: Intel Core i3-10100 / AMD Ryzen 3 3100
- RAM: application-dependent, usually 8 Gb minimum
- GPU: Vulkan-capable, tested on GeForce RTX 3050
- VRAM: application-dependent, 6 Gb minimum
- OS: 64-bit Windows 10 or higher / Linux.
Usage
TODO
Runtime Dependencies
- SDL 3.4
- SDL_Image 3.2
- FreeType 2.8.1
- GLSLang
- SPIRV-Cross
- Assimp
- libktx
- Jolt Physics via joltc wrapper
- libwebp for WebP support (optional)
- libtiff for TIFF support (optional)
- Dear ImGui via cimgui wrapper (optional)
- PhysFS (optional)
Dependencies are automatically deployed on 64-bit Windows and Linux. Under Linux, if you want to use local libraries in Windows way (from application's working directory rather than from the system), add the following to your dub.json:
"lflags-linux": ["-rpath=$$ORIGIN"]
On Windows, some dependencies require Visual C++ v14 Redistributable. You can download an official installer here. It is recommended to bundle vc_redist.x64.exe with your application's installer for end users.
Known Limitations
- The engine doesn't support macOS yet.
- Although SDL GPU is a multi-backend API, Dagon 2 currently targets only Vulkan backend.
dagon:openvrextension from Dagon 1.x won't be ported because interop between SDL GPU and OpenVR is not possible; SDL deliberately abstracts and hides the underlying native graphics API handles. OpenXR support is planned for the long term, but will not happen until SDL 3.6.0.
Documentation
HTML documentation can be generated from source code using ddox (dub build -b ddox). Be aware that documentation is currently incomplete.
License
Distributed under the Boost Software License, Version 1.0 (see accompanying file COPYING or at http://www.boost.org/LICENSE_1_0.txt).

