Bamboo is a lightweight simulation engine that supports high-fidelity graphics rendering, and will mainly focus on AIGC and cloud rendering technologies in the future. Bamboo uses vulkan as the only graphics/computing api, and is written in C++17.
- UE-like Editor
- Static/Skeletal mesh rendering
- Asset System
- Pixel-perfect picking and outlining
- 3D translation/rotation/scale gizmos
- Reflection and serialization system
- Physically-Based Rendering
- Deferred and forward mixing rendering paths
- Multiple light types(Directional/Sky/Point/Spot)
- Postprocessing(Color Grading)
- Play in Editor(PIE)
- Physicis System
- Texture Compression
- Engine/Editor/Game code isolation
I just wanna give it a try
Well, if you're using Windows, you can download the prebuild package(Release.zip) in the latest release page:)
Supported Platforms
- Windows
- Linux(WIP)
- MacOS(TODO)
Prerequites
- Git.
- CMake. Version 3.20.0 or later is required.
- Vulkan Sdk. Verison 1.3 or later is prefered.
- Visual Studio. Version 2022 is prefered.
Step 1. Clone the Bamboo repository. Now the engine and editor modules will be compiled to two static libraries rather than one engine library and one editor executable.
git clone https://github.com/Code-Guy/Bamboo.git
Step 2. Download the lastest version's Project.zip file, unzip to somewhere. It's a demo project which relies on the engine and editor sources to compile, and contains "asset" "config" "source" and "CMakeLists.txt" four items.
Step 3. Open "CMakeLists.txt" file, modify TARGET_NAME property to whatever you want, and modify BAMBOO_DIR to the absolute path of where you put Bamboo repository. (That's very important!)
Step 4. Go to Project folder, use CMake to generate build files using any desired generator. The generating command maybe like this:
cmake -G "Visual Studio 17 2022" -A x64 -S . -B build
Step 5. Then you can use any IDE according to you selected generator, but you can also just build straight from CMake.
cmake --build build --config Release
All external libraries' source codes have been integrated into this repo, so there is no need to clone those libraries manually:)
- vma(vulkan resource management)
- glm(math)
- glfw(window and input)
- imgui(gui)
- spdlog(logging)
- yaml-cpp(config)
- tinygltf(model loading)
- ktx(texture compression and loading)
- cereal(serialization)
- json(required by cereal)
- rttr(reflection)
- eventpp(event system)
- jolt(physics system)
- random(random number generator)