BindlessVK icon indicating copy to clipboard operation
BindlessVK copied to clipboard

Vulkan renderer with bindless design and render graphs.

BindlessVK


"Perfection is achieved, not when there is nothing left to add but when there is nothing left to take away..."

-Antoine de St. Exupery, Wind, Sand, and Stars, 1939

What's all this?

BindlessVK is a physically based renderer(PBR) written in modern C++ using Vulkan API, it utilizes a bindless design to minimize the state changes.

Development Guideline

Getting started:

git clone --recurse-submodules '[email protected]:light7734/bindlessvk.git' bindlessvk
mkdir bindlessvk/build
cd bindlessvk/build
cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_BUILD_TYPE=DEBUG
cmake --build . -j`nproc`
cd ..
ln -s ./build/compile_commands.json ./compile_commands.json

Commit syntax (almost) follows the conventional commits specification:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Commit types:

  • beh: Changes to the behavior.

    • beh(bvk): add multi sample anti-aliasing
    • beh(demo): randomize objects' transformation
    • beh(asset-loader): add progress logging
    • beh(profiler): output will be prettified
  • fix: Changes that fix a malfunction in behavior.

    • fix(asset-loader): file handle left open
    • fix(demo): incorrect lights' parameters
    • fix(profiler): missing closing brackets
  • ref: Changes that improve the internal structure of the code without altering its external behavior.

    • ref(bvk): optimize render loop
    • ref(bvk): rename methods & variables
    • ref(profiler): remove unused variables
    • ref(asset-loader): split large class 'a' into 'a', 'b' & 'c'
  • sty: Aesthetic changes that won't affect the structure or the behavior of the code.

    • sty: update .clang-format
    • sty: tidy up CMakeLists
    • sty: change naming convention for 'some type'
    • sty(bvk): remove extra whitespaces
    • sty(profiler): re-order methods
  • doc: Changes to the documentations.

    • doc: update repository readme
    • doc(bvk): fix spelling errors
    • doc(profiler): add docs for class 'a'
    • doc(asset-loader): remove comments
  • ass: Changes to the assets.

    • ass(branding): add bindlessvk logo
    • ass(demo): fix player weight paintings
    • ass(demo): remove unused files

Branches:

  • main: the main development branch.

Contact

Feel free to HMU anytime on matrix @light7734:matrix.org to chat about programming or whatever. ♥️