An experimental C++ hex-world renderer using SDL3's GPU API. It includes procedural terrain generation, instanced hex and glTF model rendering, hex picking, and integration with RmlUi for GUI.
- CMake 3.26 or newer
- Ninja, if using the included presets
- SDL 3.4 and SDL_image 3.4 development packages
- Vulkan SDK, including
glslc, for shader compilation - Git for fetching the dependencies during first configure
SDL, SDL_image, and Vulkan are discovered using paths stored in CMakeUserPresets.json, for example:
{
"version": 6,
"configurePresets": [
{
"name": "local-dev",
"inherits": "dev",
"cacheVariables": {
"SDL3_DIR": "/path/to/SDL3/cmake",
"SDL3_image_DIR": "/path/to/SDL3_image/cmake"
},
"environment": {
"VULKAN_SDK": "/path/to/VulkanSDK"
}
}
]
}Configure the local preset, then build and test through the shared presets:
cmake --preset local-dev
cmake --build --preset dev
ctest --preset devThe release preset disables benchmarks. Tests are controlled by CMake's
standard BUILD_TESTING option, and benchmarks by
HEX_RENDERER_BUILD_BENCHMARKS.
Fetches FreeType, RmlUi, fastgltf, doctest, and nanobench from pinned commit hashes. Point SDL, SDL_image, and the Vulkan SDK remain external toolchain dependencies.
Three small source dependencies are vendored under third_party: Handmade Math,
SimplexNoise, and tph_poisson. See those files for the associated licences.
EB Garamond (assets/fonts/EB_Garamond) is redistributed under
the SIL Open Font License. Runtime shaders and assets are
staged beside the executable by CMake.