Vulkan renderer for personal prototyping purpose
  • C++ 84%
  • GLSL 11.7%
  • CMake 4.3%
Find a file
2026-06-22 21:48:45 +10:00
assets A new debug_renderer module 2026-06-17 22:55:09 +10:00
cmake Create symlink for asset folder 2026-06-06 14:53:17 +10:00
deps DebugRenderer: draw AABB 2026-06-20 22:14:59 +10:00
engine Fix build errors on Windows 2026-06-22 21:48:45 +10:00
projects Fix build errors on Windows 2026-06-22 21:48:45 +10:00
test Fix build errors on Windows 2026-06-22 21:48:45 +10:00
.clang-format More work on the task system 2023-10-11 21:18:14 +08:00
.clang-tidy Convert beyond::core to C++20 modules 2026-05-26 13:34:11 +10:00
.gitattributes vk_mini_path_tracer: Update README 2026-06-13 15:11:18 +10:00
.gitignore rename third-party folder to deps 2023-12-15 11:40:30 +08:00
.gitmodules rename third-party folder to deps 2023-12-15 11:40:30 +08:00
cmake-format.yaml Initial commit 2021-05-08 09:33:43 -06:00
CMakeLists.txt Rename /Charlie to /engine 2026-06-15 15:04:04 +10:00
LICENSE Shadow mapping 2023-10-24 00:51:40 +08:00
README.md A new debug_renderer module 2026-06-17 22:55:09 +10:00
vcpkg.json Upgrade VMA and support buffer allocation with minimum alignment 2026-06-06 01:13:42 +10:00

Charlie3D

Mirrors: git.lesleylai.info | Codeberg

Charlie 3D is my personal R&D rendering framework in Vulkan. It is constructed on top of my beyond-core library.

Amazon Bistro

It is designed as a modular rendering playground. Reusable modules living in /engine. Those modules can be pulled into any projects under /projects.

Features

Main Features

  • Render Graph: automatic barrier placement and pass reordering
  • Shader hot reloading: Set up shader modules and pipeline like normal and shader files will be automatically watched for changes.
  • Vulkan helpers that simplifies object creation and debug name setting

Rendering

Asset

Interactions

  • A versatile camera implementation that support both arcball and first-person control
  • Dear Imgui integration

Utilities

  • Tracy Profiler integration

Projects

Charlie 3D comes with multiple projects sharing its shared abstractions.

Project Info Screenshot
Model Viewer The "main" project of Charlie 3D. Showcases a GLTF model viewer with various features Amazon Bistro
Compute Drawing Interactive rendering with compute shader. Can be useful starting point Compute Drawing Screenshot
Compute Toy A simple ShaderToy clone using compute shader Compute Toy Gallery
vk_mini_path_tracer Me implementing vk_mini_path_tracer vk_mini_path_tracer screenshot

Build Instruction

Important

This project uses git-submodules. And it also uses git-lfs for asset management. Please follow the setup instructions carefully to ensure everything is initialized correctly.

Install git-lfs if you haven't

If you haven't done this before, make sure to install git-lfs and run git lfs install before cloning the repository to ensure all large assets are correctly downloaded.

If you've already cloned the repository without git-lfs, then install it and run:

git lfs fetch --all
git lfs pull

to download the missing assets.

Install vcpkg

If you havent already installed vcpkg. Goto a new directory where you want to install vcpkg, and do:

git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh  # or bootstrap-vcpkg.bat on Windows

Clone the repository

git clone https://github.com/LesleyLai/Charlie3D.git --recurse-submodules
cd Charlie3D

If you forget the --recurse-submodules argument, do

git submodule update --init --recursive

Configure CMake and Build

At this point, you can either use your IDEs CMake integration or run the following commands from the terminal. The key is to provide the vcpkg toolchain file to CMake:

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build

Tip

Replace /path/to/vcpkg with the actual path to the local vcpkg installation.