{"id":16734617,"url":"https://github.com/scallyw4g/bonsai","last_synced_at":"2026-01-24T17:35:38.369Z","repository":{"id":47433133,"uuid":"74796411","full_name":"scallyw4g/bonsai","owner":"scallyw4g","description":"The procedural generation voxel engine","archived":false,"fork":false,"pushed_at":"2025-12-30T17:40:27.000Z","size":111891,"stargazers_count":1143,"open_issues_count":28,"forks_count":34,"subscribers_count":9,"default_branch":"master","last_synced_at":"2026-01-03T13:42:06.111Z","etag":null,"topics":["engine","game","game-engine","gameengi","gameengine","gles3","graphics","multithreading","opengl","opengl-es","procedural-generation","voxel","voxel-editor","voxel-engine","voxel-game","voxel-game-engine","voxel-terrain","webgl"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scallyw4g.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-11-26T00:55:02.000Z","updated_at":"2026-01-02T11:15:35.000Z","dependencies_parsed_at":"2024-05-28T12:15:08.556Z","dependency_job_id":"1af1e1e2-3552-4518-bce7-7e0350c44a4b","html_url":"https://github.com/scallyw4g/bonsai","commit_stats":null,"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"purl":"pkg:github/scallyw4g/bonsai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scallyw4g%2Fbonsai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scallyw4g%2Fbonsai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scallyw4g%2Fbonsai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scallyw4g%2Fbonsai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scallyw4g","download_url":"https://codeload.github.com/scallyw4g/bonsai/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scallyw4g%2Fbonsai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28732723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["engine","game","game-engine","gameengi","gameengine","gles3","graphics","multithreading","opengl","opengl-es","procedural-generation","voxel","voxel-editor","voxel-engine","voxel-game","voxel-game-engine","voxel-terrain","webgl"],"created_at":"2024-10-13T00:00:48.993Z","updated_at":"2026-01-24T17:35:38.361Z","avatar_url":"https://github.com/scallyw4g.png","language":"C","funding_links":[],"categories":["Uncategorized","C"],"sub_categories":["Uncategorized"],"readme":"\n\u003cp align='right' style='margin-bottom:-80px;'\u003e\n  \u003cimg style='width=180px; height=180px;' src='screenshots/logo_256.png' /\u003e\n\u003c/p\u003e\n\n# Welcome to Bonsai!\n\nBonsai is a voxel engine in a pot.  It's been tended to with love and\ncare over the years.  It started out as a learning excercise, and has taught me\nthe value of simplicity.\n\nBonsai supports massive worlds.  The current version supports a maximum world\nsize of ~1 billion blocks, cubed.  At one block per meter, that's the distance\nfrom earth to the moon, 2600 times, in every direction.  The view distance is\nthe entire world, all the time.  Yes, you read that right.  In Bonsai, you can\nsee in a straight line from Jupiter to the sun.\n\nBonsai terrain generation is fully procedural, and user configurable.  Terrain\nis generated on the GPU using regular glsl shaders.  Anything you can do in a\nshader, you can do in a Bonsai terrain generator.\n\n### 2.0.0-alpha Note\n\nThe engine has recently undergone a large rewrite of many core systems,\nincluding the world generator and editor.  This rewrite is still in the process\nof being finalized and releases will be marked with `alpha` until core systems\nare completely ported and considered stable.\n\nFor details on remaing work, see [Roadmap to v2.0.0](https://github.com/scallyw4g/bonsai/issues/82).\n\n![banner](screenshots/two_doors.png)\n\n# Getting Started\n\nBonsai, and nearly all it's dependencies, are written completely from scratch.\nOne external dependency is the C runtime library for program startup. There is\na back-burner task to remove the CRT entirely, athough it's unclear when/if\nanyone will ever get around to it.\n\nThe only external requirements to build Bonsai are clang++ (\u003e= version 18.1)\nand a few appropriate system headers.\n\n## Quickstart\n\nGrab pre-built binaries \u0026 assets from the [Latest Releases](../../releases/latest)\nfor your platform of your choice (as long as your platform of choice is Windows or Linux) ;)\n\n### [Getting Started](docs/00_getting_started.md)\n\n### [Build From Source](docs/01_build_process.md)\n\n### [Controls](docs/controls.md)\n\n### [Discord Server](https://discord.gg/kmRpgXBh75)\n\n\n![banner](screenshots/orks.png)\n\n# Reviews from Random Denizens of the Internet\n\n:small_orange_diamond: like, dude. straigth up magic. this is like, hundreds of millions of blocks, and it runs great.\n\n:star: :star: :star: :star: :star:\n\n:small_orange_diamond: Oh that's lowkey fucking genius actually\n\n:star: :star: :star: :star: :star:\n\n:small_orange_diamond: This person totally nailed it. Bravo\n\n:star: :star: :star: :star: :star:\n\n\n# Feature Sets\n\n## Renderer\n\n* Deferred Shading\n* HDR Lighting\n* Order-independant Transparency\n* Lighting Bloom\n* Shadow Mapping\n* Screen Space Ambient Occlusion\n\n![banner](screenshots/abandoned_workshop.png)\n\n## Engine\n\n* Hot Shader \u0026 Game-code Reloading\n* Async Job System\n* Entities\n* Collision\n* Transparent \u0026 Emissive Particles\n* UI Framework\n* Asset Loaders\n* Primitive Physics\n\n\n![banner]( screenshots/mountain.png)\n\n## Terrain Generation\n\n* Fully programmable GPU-based terrain generation\n* Batteries-included library of pre-built terrain shaders\n* 1D, 2D and 3D noise library\n* Terrain derivitives available in second-stage terrain \"decoration\"\n\n![banner](screenshots/keyhole.png)\n\n## Editing\n\n* CSG-like SDF world editing\n* Library of primitive shapes (rect, sphere, line, cylinder .. etc)\n* SDF brush-based texturing of primitives\n\n![banner](screenshots/ork_aerial.png)\n\n## SDF Brushes\n\n* Layer-based brush GUI\n* (coming soon) glsl brush shaders\n\n![banner](screenshots/brush.png)\n\n## Performance Profiler\n\n* Manual Instrumentation\n* Memory allocation tracking\n* Multithreaded callgraph tracing\n* Context Switches (windows only)\n* Physical Core  (windows only)\n\n![banner](screenshots/profiler.png)\n\n# Gallery\n\n![banner](screenshots/3_skele.png)\n\n![banner](screenshots/ridgeline.png)\n\n![banner](screenshots/grass.png)\n\n![banner](screenshots/8_skele.png)\n\n\n# Wishlist\n\n-------------------------------------------------------------------------------\n## Renderer\n\n[ ] HRC : https://github.com/entropylost/amitabha\n\n[ ] SSR : https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html\n\n[ ] Screen-space lines : https://mattdesl.svbtle.com/drawing-lines-is-hard\n\n[ ] Better shadows : https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps\n\n[ ] Screen Space Shadows : https://panoskarabelas.com/posts/screen_space_shadows/\n\n[ ] Motion Blur : https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-27-motion-blur-post-processing-effect\n\n[ ] TAA?\n\n[ ] FXAA : http://blog.simonrodriguez.fr/articles/2016/07/implementing_fxaa.html\n\n[ ] Water : https://www.youtube.com/watch?v=5yhDb9dzJ58\n\n[ ] Fluids : https://andrewkchan.dev/posts/fire.html\n\n[ ] Remove meshing entirely? https://www.youtube.com/watch?v=4xs66m1Of4A\n\n[ ] Lumen-style GI screen-space radiance caching : https://www.youtube.com/watch?v=2GYXuM10riw\n\n![banner]( screenshots/platapus.png)\n\n-------------------------------------------------------------------------------\n## Terrain\n\n[ ] Erosion simulation\n* https://inria.hal.science/hal-01262376/document\n* https://xing-mei.github.io/files/erosion.pdf\n* https://nickmcd.me/2020/04/15/procedural-hydrology/\n\n[ ] Biomes\n* https://en.wikipedia.org/wiki/Holdridge_life_zones\n\n[ ] Meshing\n* Isotropic surface meshing\n* https://graphics.stanford.edu/courses/cs164-10-spring/Handouts/isotropic.pdf\n* https://inria.hal.science/inria-00071612/document\n\n![banner](screenshots/pillar.png)\n\n-------------------------------------------------------------------------------\n## Assets\n\n[ ] MCA importer\n* https://github.com/GabeRundlett/gvox/blob/old/src/formats/minecraft.cpp\n\n[ ] Sound : mp3, ogg, ..? decompresser\n\n\n![banner](screenshots/5_skele.png)\n\n-------------------------------------------------------------------------------\n## Datastructures\n\n[ ] Better low-discrepency sequences : https://blog.demofox.org/2017/05/29/when-random-numbers-are-too-random-low-discrepancy-sequences/\n\n[ ] Better disk/sphere sampling patterns : https://extremelearning.com.au/how-to-generate-uniformly-random-points-on-n-spheres-and-n-balls/\n\n[ ] Better hash function! : https://nullprogram.com/blog/2018/07/31/\n\n[ ] Better GPU hashing! : https://arugl.medium.com/hash-noise-in-gpu-shaders-210188ac3a3e\n\n[ ] Hash-trie as alternative to a table : https://nullprogram.com/blog/2023/09/30/\n\n[ ] Octree ? https://graphics.tudelft.nl/Publications-new/2020/CBE20/ModifyingCompressedVoxels-main.pdf\n\n[ ] Better floating-point rng : https://www.corsix.org/content/higher-quality-random-floats\n\n[ ] Better greedy meshing? https://www.youtube.com/watch?v=4xs66m1Of4A\n\n[ ] More interpolation goodies : https://paulbourke.net/miscellaneous/interpolation/\n\n\n![banner](screenshots/dusk_defence.png)\n\n## Goodies\n\n[ ] Better (faster) Sin/Cos ? https://www.shadertoy.com/view/432yWW\n\n[ ] Look into using this Intel tooling for dual CPU/GPU world-gen?\n    https://www.intel.com/content/dam/develop/external/us/en/documents/spir-vtointe-ispcgpu-compute-on-the-cpu.pdf\n    https://ispc.github.io/\n\n-------------------------------------------------------------------------------\n## Profiler\n\n[ ] Improve the ETW layer : https://github.com/bombomby/optick/blob/master/src/optick_core.win.h\n\n[ ] GPU Profiling : https://www.khronos.org/opengl/wiki/Query_Object\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscallyw4g%2Fbonsai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscallyw4g%2Fbonsai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscallyw4g%2Fbonsai/lists"}