Skip to content

Releases: scallyw4g/bonsai

v2.0.0-alpha-rc8

16 Dec 17:27

Choose a tag to compare

Drop a bogus error message

v2.0.0-alpha-rc7

16 Dec 17:10

Choose a tag to compare

Turn off occlusion queryies

v2.0.0-alpha-rc4

12 Dec 00:44

Choose a tag to compare

  • 2.0.0-alpha

This is a major version change that encloses major rewrites of many core
systems. Being an alpha release comes with the caveat that several core
engine systems are broken and in the process of being ported or having bugs
ferretted out. See Future Work at the end of this Changelog entry

Notable feature improvements are as follows.

  • Terrain Generation now happens on the GPU
    This was a pretty big change. I was initially motivated by performance,
    however the real value of the feature is in having terrain gen in regular
    glsl shaders. More info and instructions for operating the terrain
    generation pipeline is available in docs/

  • Editing now happens on the GPU
    Following terrain generation, editing also had to be ported to work on the
    GPU. This is not necessarily for performance or usability, but for
    maintainability. I did not want to maintain a GPU terrain generation
    pipeline, and a CPU editing pipeline.

    The editor capabilities have also been significantly upgraded.
    Comprehensive documentation for the editor is WIP, but what's been started
    can be found in docs/

  • World storage is octree-based
    As a more robust answer to LoD, the world is now stored hierarchically as an
    octree. This unlocks huge view distances for a stable, linear cost in
    performance.

  • Many smaller improvements, optimizations and fixes
    This update is way too large to address every change; it took many months,
    hundreds of commits and and tens of thousands of lines changed.

  • Future work
    Several systems remain broken or unstable in the wake of this large change.
    Notable systems include:

    • Asset Loaders
    • Collision Detector
    • Shadow Mapping
    • Transparent and Emissive materials

    These systems are slated to be finished in priority order as listed here.

v1.6.2

10 Sep 14:14

Choose a tag to compare

  • Change color from a 16-bit palette index to 16-bit HSV encoded color
    Handling color in the same way MagicaVoxel does (by using a fixed 255 element palette)
    turned out to be a bad idea for several reasons. Firstly, if you import
    multiple models from different sources, and those sources have more than 255
    combined colors, what do you do? I opted to go for a 16-bit palette, but at
    that point you might as well just do 16-bit color and be done with it. So,
    that's what I did here.

    This change ended up being pretty sweeping, affecting world gen, asset/level
    loading, particle systems, rendering.

  • Implement HSV color picker

  • Implement a Modal widget in the UI

  • Change "SeedBrushWithSelection" to work with destructive brush previews

  • Fix a race condition sometimes causing the main thread to unlock before the render thread had completed

  • Fix some edge cases with negatively offset brushes and small selection regions

  • Fix v3_u8 normal data being incorrectly encoded on negative edge

  • Fix a frame of lag when changing the selection region with a brush active

v1.6.2-rc1

10 Sep 14:00

Choose a tag to compare

v1.6.2-rc1 Pre-release
Pre-release
Changelog

v1.6.1

31 Aug 22:51

Choose a tag to compare

  • Change untextured_3d_geometry_buffer to have a data_type Type
    This is a pretty major internal change. untextured_3d_geometry_buffers can
    now switch between 32-bit float and 8-bit int. When loading a model from
    disk, the size of the model is taken into account and the appropriate type
    is chosen dynamically.

    This required a fair rewrite of the low-level vertex buffering routines to
    be able to handle the permutations. This is still somewhat of a WIP; I
    didn't finish all of them and the ones not done fall-back to the most
    general routine, which is the slowest. I expect I'll rewrite/delete this
    code again before performance in that code is the biggest problem I have.

  • Change world updates to happen in serial on a dedicated thread
    Previous to this, multiple world updates could be in-flight at any given
    time, which if overlapping would stomp on each other. Serializing updates
    onto a single thread ensures that:
    a) Updates are correct
    b) Updates happen in the order they were issued
    c) Chunks affected by multiple updates on a single frame only have their
    mesh rebuilt once

    (c) is accomplished by completing all queued update jobs and then issuing
    the chunk mesh rebuild jobs, one per unique chunk updated.

  • Add ability to create new assets from a world selection and serialize .chunk assets to disk
    The selection region is saved out as a world_chunk

  • Add ability to load asset .chunks from disk

  • Add abiltiy to render AssetType_WorldChunk

  • Fix layered brush previews crashing the program

  • Fix crash in AreEqual if null pointers were passed

  • Fixed failing tests, added test runs to CI/CD

v1.6.1-rc5

31 Aug 22:17

Choose a tag to compare

v1.6.1-rc5 Pre-release
Pre-release
Mark chunk_flag as a @bitfield

v1.6.1-rc4

31 Aug 21:35

Choose a tag to compare

v1.6.1-rc4 Pre-release
Pre-release
Fix a couple failed assertions

v1.6.1-rc3

31 Aug 18:59

Choose a tag to compare

v1.6.1-rc3 Pre-release
Pre-release
Remove an annoying assertion

V1.6.1-rc2

31 Aug 18:40
04e9d6e

Choose a tag to compare

V1.6.1-rc2 Pre-release
Pre-release
Merge pull request #74 from scallyw4g/develop

Develop