- The baking code no longer depends on Transvoxel
- Moved usage out of the Transvoxel mesher, but still uses its fastpath
for cells. There is still no "generic" path because there is no need yet.
- Moved settings on VoxelLodTerrain.
- The option for having it separate is hardcoded and both code paths still
exist. Not sure if that will be exposed or removed entirely.
- Still need to limit the frequency at which normalmaps are updated
- Would be nice to make this mesher-independent,
Transvoxel is just a fastpath
- Task priority might need improvement, it's a bit messy. Maybe use bands?
- Project samples on triangles to make cells more seamless,
instead of a box of samples on a quad. Requires 2x more samples.
- Don't sample when there is no triangle for a given pixel
- Dilate normalmaps to reduce artifacts on edge of triangles
- Moved math functions about triangles in their own file
Adds enough stuff to test the approach. It is not correct at the
moment, probably needs to project to triangles to make cells line up,
currently it's using planes. There might be incorrect coordinates too,
did that with bit of guessing. A grid-like pattern is also showing, so
might have to make tiles a bit larger to account for filtering.
- Less draw calls
- Much faster rendering updates (about 5x),
although colliders are still the biggest bottleneck so when collision is
enabled this improvement isn't noticeable
- A shader is now always required to render Transvoxel properly.
TODO: integrate a default one when no material is assigned?
This effectively creates them after ALL main meshes have been built,
resulting in a seemingly faster convergence of LOD, however when moving
around it causes some cracks to appear briefly. This can be bad if the
terrain is dark and the underlying skybox is bright. Might need to be
optional, or find a different approach.
- VoxelLodTerrain no longer caches generated voxels by default, so
generating on the fly is no longer exclusive to full load mode.
Might add an option later, but not for now (VoxelTerrain is still
unaffected and keeps caching them)
- The "Cached" state is represented with blocks having no voxel data,
so it needs extra checks in some areas to avoid null access
- Fix generate task was not including modifiers after the base generator
- The "save_generator_output" option on streams now means such blocks are
considered edited
- Modifying modifiers now clears cached generated blocks
intersecting with them.
- Fix "re-generate" was erasing the internal stack of modifiers
- Added docs