Releases: scallyw4g/bonsai
v2.0.0-alpha-rc8
Drop a bogus error message
v2.0.0-alpha-rc7
Turn off occlusion queryies
v2.0.0-alpha-rc4
- 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
-
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
Changelog
v1.6.1
-
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
.chunkassets 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
Mark chunk_flag as a @bitfield
v1.6.1-rc4
Fix a couple failed assertions
v1.6.1-rc3
Remove an annoying assertion
V1.6.1-rc2
Merge pull request #74 from scallyw4g/develop Develop