Skip to content

milkru/vulkanizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

Rendering engine prototype made with Vulkan 1.3 which can render billions of triangles in just a couple of milliseconds. Code is written using a simpler C++ coding style. Project is written for the C++20 standard and x64 system. Currently the code is tested only on Windows, using MSVC (Visual Studio) and MINGW (Visual Studio Code) compilers. Linux is not completely supported at the moment, but it should be easy to port, since all third party libraries are cross platform.

Screenshots

Demo

Demo

Demo

Features

  • Vulkan meta loading with volk
  • Window handling with glfw
  • Mesh loading with fast_obj
  • Mesh optimizations with meshoptimizer
  • GPU memory allocator with VulkanMemoryAllocator
  • CPU profiling with easy_profiler
  • GPU profiling with query timestamps and pipeline statistics
  • Custom Dear ImGui Vulkan backend with Performance and Settings windows
  • Multiple mesh rendering
  • Programmable vertex fetching with 14 byte vertices
  • Sampler caching
  • Mesh LOD system
  • Mesh GPU frustum and two-pass occlusion culling with draw call compaction
  • NVidia Mesh Shading Pipeline support, with traditional pipeline still supported
  • Meshlet cone and frustum culling
  • Depth buffering with reversed-Z
  • Automatic descriptor set layout creation with SPIRV-Reflect
  • Vulkan's dynamic rendering, indirect draw count, push descriptors, descriptor update templates and debug marker support
  • In-flight frames

Installation

This project uses CMake as a build tool. Since the project is built using Vulkan, the latest Vulkan SDK is required.

Requirements

Make sure that your graphics card can support listed Vulkan features and make sure you have updated graphics card driver.

License

Distributed under the MIT License. See LICENSE for more information.