Skip to content

Kataglyphis/Kataglyphis-BeschleunigerBallett

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,166 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

logo

Kataglyphis-BeschleunigerBallett

A modern graphics engine built on top of Vulkan+OpenGL. Serves also as playground for learning various best practices in Graphic APIs, CMake, Rust, Modern C++ ... πŸŒ‹πŸŒ‹πŸŒ‹


VulkanEngine VulkanEngine VulkanEngine OpenGLEngine

see also Official homepage.

Linux build + test + coverage on Ubuntu 24.04 ARM Linux build + test + coverage on Ubuntu 24.04 x86 Windows Server 2025 build x86 MSVC and Clang
CodeQL Automatic Dependency Submission TopLang
Donate Twitter YouTube

Table of Contents

About The Project


VulkanEngine VulkanEngine VulkanEngine

VulkanEngine VulkanEngine
VulkanEngine VulkanEngine

This project provides me a solid Vulkan/OpenGL renderer starting point for implementing modern established rendering techniques and getting quickly started in own research topics.
As this project evolved it gained additional functionality:

  • collecting/using CMake best practices
  • collecting/using C++ best practices and testing new lang features 😊
  • collecting experience in fuzzy/benchmark testing in C++
  • collecting experience in integrating πŸ’Œ Rust πŸ’Œ code in Cmake projects

I frequently test under Linux and Windows.
For more information regarding the build environment refer to my Kataglyphis-ContainerHub repository.

Key Features

Category Feature Implement Status
Vulkan Render agnostic Rasterizer βœ”οΈ
Raytracing βœ”οΈ
Path tracing βœ”οΈ
PBR support (UE4, Disney, etc.) βœ”οΈ
.obj Model loading βœ”οΈ
Mip Mapping βœ”οΈ
OpenGL Render agnostic
Directional Lights βœ”οΈ
Point Lights βœ”οΈ
Spot Lights βœ”οΈ
Directional Shadow Mapping βœ”οΈ
Omni-Directional Shadow Mapping βœ”οΈ
Cascaded Shadow Mapping βœ”οΈ
Cloud system βœ”οΈ
3D-worley noise generation βœ”οΈ
.obj Model loading βœ”οΈ
PBR support (UE4,disney,phong, etc.) βœ”οΈ
Support for #include directives in shaders. βœ”οΈ
Sky box βœ”οΈ
Supporting compute shader βœ”οΈ
On the fly 3D worley/perlin noise creation βœ”οΈ
C++/CMake agnostic Code coverage for Clang βœ”οΈ
Advanced unit testing πŸ”Ά
Advanced performance testing πŸ”Ά
Advanced fuzz testing πŸ”Ά

Legend:

  • βœ”οΈ - completed
  • πŸ”Ά - in progress
  • ❌ - not started

Dependencies

Optional

Useful tools (you might also considering :) )

Benchmarking

VSCode Extensions

Getting Started

Specific version requirements

C++23 or higher required.
C17 or higher required.
CMake 4.2.0 or higher required.

Installation

NOTE: On Windows use Git Bash

  1. Clone the repo
    git clone --branch develop --recurse-submodules git@github.com:Kataglyphis/Kataglyphis-BeschleunigerBallett.git
  2. Use the scripts (in the Scripts folder for installing dependencies on your system)
  3. Then build your solution with [CMAKE] (https://cmake.org/)
    You can follow my steps from my CMake best practices repo.
    For now the features in Rust are experimental. If you want to use them install Rust and set RUST_FEATURES=ON on your CMake build.

Alternatively you can use the build scripts I use for my standard configuration:

  • [buildEngine.sh]
  • [buildEngine.bat]
$ {WORKING_DIR}/GraphicsEngineVulkan/buildEngine[.sh/.bat]

Packaging

On Linux, binary packages are generated with CPack (TGZ and DEB). Use this repeatable workflow after a clean checkout or after deleting build folders:

  1. Configure and build in Release mode
  2. Generate release packages (TGZ, DEB)
  3. Generate AppImage packages as standard packaging step
# 1) Release configure + build
bash ./Scripts/Linux/cmake-configure-build.sh \
  --vulkan-setup-script /opt/vulkan/1.4.341.1/setup-env.sh \
  --preset linux-release-clang \
  --build-dir build-release \
  --build-config Release

# 2) CPack package target (TGZ + DEB)
bash ./Scripts/Linux/cmake-configure-build.sh \
  --vulkan-setup-script /opt/vulkan/1.4.341.1/setup-env.sh \
  --build-dir build-release \
  --skip-configure true \
  --build-target package

# 3) Standard AppImage packaging
cmake -S . -B build-release-appimage \
  --preset linux-release-clang \
  -DCPACK_ENABLE_APPIMAGE=ON
cmake --build build-release-appimage --config Release --target package

Generated artifacts are written to the selected build folder (for example *.tar.gz, *.deb, and AppImage artifacts). For AppImage builds, appimagetool must be available in your PATH.

Shaders

I provide two ways for compiling shaders with. Hence if you want to add new files as #include in your shaders you have to modify the files: (should be self-explanatory)

  • [include/vulkan_base/ShaderIncludes.hpp]
  • [cmake/CompileShadersToSPV.cmake]

appropriately.

Tests

I follow the test setup as descriped in: CMake best practices

Docker

You can find all details in my Kataglyphis-ContainerHub repository.

Linux

If you want to run it on NVIDIA GPUs you will have to
install the NVIDIA Container Toolkit
before you proceed with the next steps.

Windows

NOTE: Pls for GPU accelerated Windows Docker have a look here

Roadmap

Watch the refman generated by doxygen.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

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

Contact

Jonas Heinle - @Cataglyphis_ - renderdude@jotrockenmitlocken.de

Project Link: https://github.com/Kataglyphis/GraphicsEngineVulkan

Acknowledgements

You will find important links to information in the code. But here in general some good sources of information:

Thanks for free 3D Models:

Literature

Some very helpful literature, tutorials, etc.

OpenGL

Clouds

Noise

Vulkan

Physically Based Shading

Path tracing

Docker

Common issues

  • Problem: If Validation Layers could not be found:
    A value given directly by extern c function 322
    [XXXX-XX-XX 10:30:40.877] [error] Validation layers requested, but not available!
    [XXXX-XX-XX 10:30:40.879] [error] Failed to create a Vulkan instance!
    [XXXX-XX-XX 10:30:40.880] [error] Validation layers requested, but not available!
    [XXXX-XX-XX 10:30:40.882] [error] Failed to create a Vulkan instance!
    ERROR:             vkGetInstanceProcAddr: Invalid instance [VUID-vkGetInstanceProcAddr-instance-parameter]
    Solution for linux:
    sudo apt install libvulkan1 vulkan-tools vulkan-validationlayers
    Otherwise you would have to install them via sdk.

About

πŸš€ C++23 based acceleration playground. Contains renderer with Vulkan/OpenGL support. Serves as playground for me to test new CMake/C++/Vulkan/... features.πŸš€

Topics

Resources

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.rtf

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors