Commit Graph

11 Commits (6ea3fbc8aa180d8520e06fa4f6d333b05b9f3fe2)

Author SHA1 Message Date
EmaMaker 6ea3fbc8aa world benchmark 2022-08-22 17:34:43 +02:00
EmaMaker 3cb0a0529c use hilbert curve for better compression
space filling curves better preserve spatial locality compared to nested iteration
2022-08-22 17:34:43 +02:00
EmaMaker dd4732c1c1 only generate and mesh one chunk per loop cycle
add setup for voxel size

modeling/meshing needs optimization

switch to using a bitfield instead of queues
2022-08-22 17:34:25 +02:00
EmaMaker a96c09df4b try new approach based on interval maps
they resolve the problems and the redundancies of interval trees, while giving a serius memory usage benefit (20% of the one used by interval trees in test scene)

test scene is a world made of a cube of sides RENDER_DISTANCE*2 with player at the center
2022-08-16 21:45:26 +02:00
EmaMaker f8a31093cd chunkrenderer: generate only one mesh per chunk 2022-08-11 23:30:59 +02:00
EmaMaker 61838a93b2 chunk: handle setting blocks via Chunk
Instead of directly calling IntervalTree. This allows clamping indices to avoid out of bounds when converting to and from an array
2022-08-11 18:50:18 +02:00
EmaMaker 5bff4bc367 chunk: handle intervaltree<->array conversion 2022-08-11 16:34:12 +02:00
EmaMaker 9c6cf30120 intervaltree: support for single-unit intervals
The structure is still not perfect and needs revising in some edge cases where unneeded child nodes are left instead of being added in the parent
2022-08-11 16:05:56 +02:00
EmaMaker 83beccc48c chunkrenderer: greedy meshing like 0fps/roboleary
Also includes face culling to avoid rendering faces that are hidden by other blocks
2022-08-11 15:26:49 +02:00
EmaMaker 8fb2af285c chunk: change generation tests 2022-08-11 15:01:28 +02:00
EmaMaker 5dc4978f48 initial commit
working interval trees and stupid meshing
2022-08-08 23:37:16 +02:00