🚀 Read this awesome post from Hacker News 📖
📂 Category:
📌 Here’s what you’ll learn:
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.
The current version is 2.0.0-prealpha-rc0, which can be found by joining the
Discord. This version is a large rewrite of
several core systems, including the world generation, editor and parts of the
renderer.
In its current state, the engine is effectively a terrain generator and editor.
For details on remaing work, see Roadmap to v2.0.0.

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.
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) 😉

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

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

- 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”

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

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

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





[ ] 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

[ ] Erosion simulation
[ ] Biomes
[ ] Meshing

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

[ ] 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/

[ ] 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/
[ ] 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
🔥 What do you think?
#️⃣ #scallyw4gbonsai #procedural #generation #voxel #engine
🕒 Posted on 1765872503
