📦scallyw4g / bonsai
← 返回首页
The procedural generation voxel engine
⚖️ WTFPL#game-engine#multithreading#engine#game#graphics📅 创建于 2016-11-26🔄 更新于 2026-10-19

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有

Welcome to Bonsai!

Bonsai is a voxel engine in a pot. It's been tended to with love and care over the years. It started out as a learning excercise, and has taught me the value of simplicity.

Bonsai supports massive worlds. The current version supports a maximum world size of ~1 billion blocks, cubed. At one block per meter, that's the distance from earth to the moon, 2600 times, in every direction. The view distance is the entire world, all the time. Yes, you read that right. In Bonsai, you can see in a straight line from Jupiter to the sun.

Bonsai terrain generation is fully procedural, and user configurable. Terrain is generated on the GPU using regular glsl shaders. Anything you can do in a shader, you can do in a Bonsai terrain generator.

2.0.0-alpha Note

The engine has recently undergone a large rewrite of many core systems, including the world generator and editor. This rewrite is still in the process of being finalized and releases will be marked with alpha until core systems are completely ported and considered stable.

For details on remaing work, see Roadmap to v2.0.0.

banner

Getting Started

Bonsai, and nearly all it's dependencies, are written completely from scratch. One external dependency is the C runtime library for program startup. There is a back-burner task to remove the CRT entirely, athough it's unclear when/if anyone will ever get around to it.

The only external requirements to build Bonsai are clang++ (>= version 18.1) and a few appropriate system headers.

Quickstart

Grab pre-built binaries & assets from the Latest Releases for your platform of your choice (as long as your platform of choice is Windows or Linux) ;)

Getting Started

Build From Source

Controls

Discord Server

banner

Reviews from Random Denizens of the Internet

:small_orange_diamond: like, dude. straigth up magic. this is like, hundreds of millions of blocks, and it runs great.

:star: :star: :star: :star: :star:

:small_orange_diamond: Oh that's lowkey fucking genius actually

:star: :star: :star: :star: :star:

:small_orange_diamond: This person totally nailed it. Bravo

:star: :star: :star: :star: :star:

Feature Sets

Renderer

  • Deferred Shading
  • HDR Lighting
  • Order-independant Transparency
  • Lighting Bloom
  • Shadow Mapping
  • Screen Space Ambient Occlusion

banner

Engine

  • Hot Shader & Game-code Reloading
  • Async Job System
  • Entities
  • Collision
  • Transparent & Emissive Particles
  • UI Framework
  • Asset Loaders
  • Primitive Physics

banner

Terrain Generation

  • Fully programmable GPU-based terrain generation
  • Batteries-included library of pre-built terrain shaders
  • 1D, 2D and 3D noise library
  • Terrain derivitives available in second-stage terrain "decoration"

banner

Editing

  • CSG-like SDF world editing
  • Library of primitive shapes (rect, sphere, line, cylinder .. etc)
  • SDF brush-based texturing of primitives

banner

SDF Brushes

  • Layer-based brush GUI
  • (coming soon) glsl brush shaders

banner

Performance Profiler

  • Manual Instrumentation
  • Memory allocation tracking
  • Multithreaded callgraph tracing
  • Context Switches (windows only)
  • Physical Core (windows only)

banner

Gallery

banner

banner

banner

banner

Wishlist


Renderer

[ ] HRC : https://github.com/entropylost/amitabha

[ ] SSR : https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html

[ ] Screen-space lines : https://mattdesl.svbtle.com/drawing-lines-is-hard

[ ] Better shadows : https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps

[ ] Screen Space Shadows : https://panoskarabelas.com/posts/screen_space_shadows/

[ ] Motion Blur : https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-27-motion-blur-post-processing-effect

[ ] TAA?

[ ] FXAA : http://blog.simonrodriguez.fr/articles/2016/07/implementing_fxaa.html

[ ] Water : https://www.youtube.com/watch?v=5yhDb9dzJ58

[ ] Fluids : https://andrewkchan.dev/posts/fire.html

[ ] Remove meshing entirely? https://www.youtube.com/watch?v=4xs66m1Of4A

[ ] Lumen-style GI screen-space radiance caching : https://www.youtube.com/watch?v=2GYXuM10riw

banner


Terrain

[ ] Erosion simulation * https://inria.hal.science/hal-01262376/document * https://xing-mei.github.io/files/erosion.pdf * https://nickmcd.me/2020/04/15/procedural-hydrology/

[ ] Biomes * https://en.wikipedia.org/wiki/Holdridge_life_zones

[ ] Meshing * Isotropic surface meshing * https://graphics.stanford.edu/courses/cs164-10-spring/Handouts/isotropic.pdf * https://inria.hal.science/inria-00071612/document

banner


Assets

[ ] MCA importer * https://github.com/GabeRundlett/gvox/blob/old/src/formats/minecraft.cpp

[ ] Sound : mp3, ogg, ..? decompresser

banner


Datastructures

[ ] Better low-discrepency sequences : https://blog.demofox.org/2017/05/29/when-random-numbers-are-too-random-low-discrepancy-sequences/

[ ] Better disk/sphere sampling patterns : https://extremelearning.com.au/how-to-generate-uniformly-random-points-on-n-spheres-and-n-balls/

[ ] Better hash function! : https://nullprogram.com/blog/2018/07/31/

[ ] Better GPU hashing! : https://arugl.medium.com/hash-noise-in-gpu-shaders-210188ac3a3e

[ ] Hash-trie as alternative to a table : https://nullprogram.com/blog/2023/09/30/

[ ] Octree ? https://graphics.tudelft.nl/Publications-new/2020/CBE20/ModifyingCompressedVoxels-main.pdf

[ ] Better floating-point rng : https://www.corsix.org/content/higher-quality-random-floats

[ ] Better greedy meshing? https://www.youtube.com/watch?v=4xs66m1Of4A

[ ] More interpolation goodies : https://paulbourke.net/miscellaneous/interpolation/

banner

Goodies

[ ] Better (faster) Sin/Cos ? https://www.shadertoy.com/view/432yWW

[ ] Look into using this Intel tooling for dual CPU/GPU world-gen? https://www.intel.com/content/dam/develop/external/us/en/documents/spir-vtointe-ispcgpu-compute-on-the-cpu.pdf https://ispc.github.io/


Profiler

[ ] Improve the ETW layer : https://github.com/bombomby/optick/blob/master/src/optick_core.win.h

[ ] GPU Profiling : https://www.khronos.org/opengl/wiki/Query_Object

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR