Git Product home page Git Product logo

vulkanizer's Introduction

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.

vulkanizer's People

Contributors

milkru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vulkanizer's Issues

Linux compilation and VMA issue

Hi, in linux I just get this easy fix issue:

vulkanizer/src/core/buffer.cpp: In function ‘Buffer createBuffer(Device&, BufferDesc)’:
vulkanizer/src/core/buffer.cpp:44:25: error: ‘memcpy’ was not declared in this scope
   44 |                         memcpy(buffer.pMappedData, _desc.pContents, buffer.byteSize);
      |                         ^~~~~~
vulkanizer/src/core/buffer.cpp:3:1: note: ‘memcpy’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
    2 | #include "buffer.h"
  +++ |+#include <cstring>
    3 |
make[3]: *** [CMakeFiles/vulkanizer.dir/build.make:109: CMakeFiles/vulkanizer.dir/src/core/buffer.cpp.o] Error 1

After adding the include all is fine. But I get this error from vma

$ ./build/vulkanizer 3rdparty/meshoptimizer/demo/pirate.obj

vulkanizer: vulkanizer/3rdparty/VulkanMemoryAllocator/src/../include/vk_mem_alloc.h:2780: void* vma_aligned_alloc(size_t, size_t): Assertion `0 && "Could not implement aligned_alloc automatically. Please enable C++17 or later in your compiler or provide custom implementation of macro VMA_SYSTEM_ALIGNED_MALLOC (and VMA_SYSTEM_ALIGNED_FREE if needed) using the API of your system."' failed. Aborted (core dumped)

any hint about it ?

not inssue, but fix mb?

Hi.
In func "getAspectMask" in "texture.cpp"
"return _format == VK_FORMAT_D32_SFLOAT ? VK_IMAGE_ASPECT_DEPTH_BIT : VK_IMAGE_ASPECT_COLOR_BIT;"
but this func also used in "createHzbTexture" which used VK_FORMAT_R16_SFLOAT, so mb
"return _format == VK_FORMAT_D32_SFLOAT || VK_FORMAT_R16_SFLOAT ? VK_IMAGE_ASPECT_DEPTH_BIT : VK_IMAGE_ASPECT_COLOR_BIT;" be better?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.