- RayTracing
- Shadows
- BRDF Basic Shine
- CubeMap
Screen.Recording.2026-01-19.122043.mp4
- CMake 3.31.4+ (3.16 minimum) and Ninja
- Conan 2.x
- Vulkan SDK (LunarG) for headers/loader +
glslc - Slang compiler for
slangc(orSLANG_ROOTset) - Visual Studio with MSVC toolchain + Windows SDK
Run these commands from the x64 Native Tools Command Prompt for VS so
cl.exeis available.
cd Main
conan profile detect --force
# Recommended: use Conan preset with Ninja
conan install . -of build --build=missing -s build_type=Release -s compiler.cppstd=20 -c tools.cmake.cmaketoolchain:generator=Ninja
cmake --preset conan-release
cmake --build --preset conan-releaseIf you prefer not to use presets, configure directly:
cmake -S . -B build -G Ninja "-DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release
cmake --build buildUse a separate build folder for Debug to avoid mixing configs:
cd Main
conan install . -of build-debug --build=missing -s build_type=Debug -s compiler.cppstd=20 -c tools.cmake.cmaketoolchain:generator=Ninja
cmake --preset conan-debug
cmake --build --preset conan-debug
# go into build folder you adjust backends in the future and run the sample scene to load first
cd build-debug
./MukkiGamesEngine --backend vulkan --scene ../MukkiGamesEngine/Assets/sceneTrack.json
- abstract code from tracer rounds for basic instance and device setup
- setup Vulkan instance and device
- create window with GLFW
- create Vulkan surface with GLFW
- setup swapchain
- create image views for swapchain images
- create render pass
- create framebuffers
- create command pool and command buffers
- create synchronization objects
- basic rendering loop to clear screen with a color
- render 3d objects
- skybox
- render cubmaps
- create scene loader
- SceneObject
- Shader hot reloading
- Basic raytracing pipeline (TLAS/BLAS, SBT, rgen/rmiss/rchit shaders)
- RT lighting with shadows and BRDF
- BRDF
- [] Shadows
- RT cubemap skydome fallback
- looking into SIMD
- multithreading for rendering and resource loading
- std::async for model loading
- recreating swapchain on window resize
- validation layers errors when switching from compute to graphics and back
- Abstract Vulkan calls to a draw function that we pass the scene path too.
- RAII cleanup (tech depth)
- adding unique_ptrs to member variables in VkApplication
- fixing dangling ptrs in code after switching scenes
flowchart TD
vulkan--> renderer
subgraph renderer
subgraph core
commandPool[Command Pool]
swapchain[Swapchain]
renderPass[Render Pass]
framebuffers[Framebuffers]
syncObjects[Synchronization Objects]
end
subgraph resources
models[Models]
textures[Textures]
shaders[Shaders]
end
subgraph scene
sceneLoader[Scene Loader]
entities[Entities]
end
subgraph raytracing
raytracingAS[RT Acceleration Structures]
raytracingPipeline[RT Pipeline + SBT]
raytracingShader[RT Shaders]
end
subgraph ui
uiRenderer[UI Renderer]
end
end