Skip to content

Latest commit

 

History

153 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MukkiGamesEngine

Progress

  • RayTracing
Screenshot 2026-07-20 163526 Screenshot 2026-07-16 181014
  • Shadows
image
  • BRDF Basic Shine
Screenshot 2026-07-16 181129 image

Uploading Screenshot 2026-07-16 181129.png…

  • CubeMap
Screen.Recording.2026-01-19.122043.mp4

Build (Windows)

Prerequisites

  • CMake 3.31.4+ (3.16 minimum) and Ninja
  • Conan 2.x
  • Vulkan SDK (LunarG) for headers/loader + glslc
  • Slang compiler for slangc (or SLANG_ROOT set)
  • Visual Studio with MSVC toolchain + Windows SDK

Configure & build (Release)

Run these commands from the x64 Native Tools Command Prompt for VS so cl.exe is 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-release

If 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 build

Debug build

Use 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

Current Progress

  • 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

Fixes

  • 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

Architecture Diagram

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
Loading

About

Personal Game Engine, using Vulkan Backend with C++ 20

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages