- Vulkan swapchain and presentation
- GLFW window and Vulkan surface
- Dynamic rendering with
VK_KHR_dynamic_rendering - Render-target abstraction
- Sponza glTF scene loading
- Texture loading and upload
- Mesh remapping with
meshoptimizer - Fly camera controls
- G-buffer rendering
- SSAO
- SSAO blur pass
- Cascaded shadow mapping
- Shadow depth rendering
- GPU triangle filtering
- GPU frustum culling
- Per-cascade triangle filtering
- Composition pass
- FXAA
- CMake shader compilation to SPIR-V
- SSAO blur improvements
- Deferred lighting pass
- GPU occlusion culling with a depth pyramid
- Meshlet generation with
meshoptimizer - Meshlet culling pass
- Runtime LOD selection
- Particle system
- Particle collision against depth
- Point light shadow cubemaps
- Deferred lighting pass
- Tiled or clustered lighting
- PBR material shader
- Alpha-tested material pass
- Transparent material pass
- Bilateral SSAO blur
- Temporal anti-aliasing pass
- Skybox pass
- Image-based lighting
- Screen-space reflections
- Volumetric fog pass
- Render graph for pass ordering and resource tracking
- Shader hot reload
- ImGui debug panel
- GPU timestamp profiler
- Asset manifest for scenes, meshes, materials, and textures
- Material cache
- Texture cache
- Async asset loading jobs
- Screenshot capture
- README screenshots
- CMake 3.20 or newer
- C++20 compiler
- Vulkan SDK or Vulkan development packages
glslc- Development packages for
assimp,SDL2,glm, andglfw3 - Vulkan-capable GPU and driver
- Checked-in
external/assets and third-party folders
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -jThe build creates vkml and compiles shaders into build/shaders/*.spv.
Run from inside the build directory because the executable loads shaders from shaders/*.spv and assets from ../external/....
cd build
./vkmlcmake -S . -B build-release -DCMAKE_BUILD_TYPE=Release
cmake --build build-release -j
cd build-release
./vkmlcmake --build build --target shaders
cmake --build build --target vkml
cmake --build build --target clean