Marc Gilleron
c6199563c8
Split data request
2022-02-02 23:12:59 +00:00
Marc Gilleron
b7e56c6bec
Moved other tasks out of VoxelServer
2022-02-02 21:03:09 +00:00
Marc Gilleron
0ad7be9281
Moved BlockMeshRequest out of VoxelServer
2022-02-02 01:11:28 +00:00
Marc Gilleron
d1250ef0ad
Added support functions to help setting up basic multiplayer with VoxelTerrain
.
...
These might change in the future. Will have to test that later,
when Godot 4 gets more stable.
2022-01-31 21:23:39 +00:00
Marc Gilleron
f838adf26a
Renamed emerge/imerge_block => load_voxel_block/save_voxel_block
2022-01-16 04:21:02 +00:00
Marc Gilleron
9c6118806f
Namespaced remaining stuff
2022-01-09 22:46:26 +00:00
Marc Gilleron
774adfca3c
VoxelServer no longer inherits Object.
...
The Godot-facing singleton is now a different class in gd:: namespace.
Moved the updater to its own file.
2022-01-09 04:53:33 +00:00
Marc Gilleron
e53dcf7c84
Re-namespaced VoxelConstants
2022-01-09 03:06:58 +00:00
Marc Gilleron
5ece3b840e
Namespace VoxelMemoryPool
2022-01-03 23:20:38 +00:00
Marc Gilleron
e20684ce69
Namespaced math funcs
2022-01-03 23:14:18 +00:00
Marc Gilleron
30feecaa46
Don't crash if mesh requests are created without mesher (need to fix this in VoxelLodTerrain)
2021-12-31 19:02:46 +00:00
Marc Gilleron
0be0fb19b0
Moved task stuff to utilities
2021-12-29 19:08:23 +00:00
Marc Gilleron
12caefe577
Renamed VoxelThreadPool => ThreadedTaskRunner and namespace it
2021-12-29 18:25:47 +00:00
Marc Gilleron
8bf7a3695f
Mark profiler frame inside frame_post_draw
signal
2021-12-29 17:31:31 +00:00
Marc Gilleron
0f67513a29
Move TimeSpreadTaskRunner to its own file and namespace
2021-12-29 15:12:28 +00:00
Marc Gilleron
541af4a4ad
Spread out mesh destruction in attempt to workaround slow Vulkan buffer deallocation
2021-12-28 18:19:41 +00:00
Marc Gilleron
922f361cb0
Made it compile in Godot 4
...
- Made a bunch of changes to comply with Godot 4 API
- Use Godot's Vector3i and add the missing stuff with helper functions
- Transvoxel uses custom attributes API, the old way would not work
- Wrap MeshOptimizer in a unique namespace (see build script why)
- Added clang-format file for the module as some rules now differ
- Prevent thirdparty code and lookup tables from being clang-formatted
- Very likely full of runtime bugs that need fixing
2021-12-13 21:38:10 +00:00
Marc Gilleron
380e295d94
Merge branch 'master' into full_load_mode
...
# Conflicts:
# meshers/transvoxel/transvoxel.h
# server/voxel_server.cpp
# terrain/voxel_lod_terrain.cpp
2021-12-11 22:59:24 +00:00
Scott Wadden
6625db2d70
Fixed clang build
2021-11-03 00:17:20 -03:00
Marc Gilleron
ca7ac42cde
Merge branch 'master' into full_load_mode
...
# Conflicts:
# edition/voxel_tool_lod_terrain.cpp
# generators/graph/voxel_generator_graph.cpp
# terrain/voxel_lod_terrain.cpp
2021-10-31 16:17:27 +00:00
Marc Gilleron
6441d1b864
Deprecate Vector3i(Vector3) constructor, make conversions explicit
...
Some conversions were wrong/unintented.
This is also in prevision of using Godot 4 Vector3i,
which default behavior differs from this module.
2021-10-31 16:01:47 +00:00
Marc Gilleron
a226111818
Run edits after preloads without a sync point on the main thread
...
- Still room for improvement, more parallelism is possible
- Started moving the data into its own structure
- Added locks to secure access to the data map (not truly used yet)
- Tasks with a tracker can schedule next ones when they complete
- Data loading responses also come with a callback, no buffer anymore
- Use new data grid to cache map access
2021-10-13 20:28:20 +01:00
Marc Gilleron
c5b0ac43fb
Semi-async do_sphere() implementation. May change though.
...
It is a lot better than the fully synchronous do_sphere(),
but it would be a lot better if we could move everything async
2021-10-04 19:20:36 +01:00
Marc Gilleron
e04091f3cb
Added full load mode to VoxelLodTerrain
...
With this mode enabled, editing anywhere becomes possible.
All edited blocks are loaded at once when the stream is assigned.
The generator is used on the fly to fill the gaps, instead of being
pre-emptively cached only nearby the viewer to allow editing.
Editing is still on the main thread, so this can cause stalls if
the generator is complex. There is also no controlled limit on how
much data gets loaded, so if edited data is larger than RAM, it will
not be playable. The feature is already quite usable, but more work
may be done for wider viability.
2021-10-03 01:48:07 +01:00
Marc Gilleron
c6b2275738
Fix some stats and add VoxelMemoryPool info
2021-10-02 18:31:48 +01:00
Marc Gilleron
30db0c5193
Split VoxelBuffer in two, script-facing wrapper and internal.
...
The internal is the main use within the voxel engine,
and does not inherit Reference.
2021-09-26 04:14:50 +01:00
Marc Gilleron
6faf5b29f3
Allow to configure main thread time limit
2021-09-25 02:13:03 +01:00
Marc Gilleron
3197eaba35
Move main thread tasks into one runner in VoxelServer
...
So the timing budget is better respected even if there are multiple
voxel nodes in the scene
2021-09-25 00:02:41 +01:00
Marc Gilleron
18e0a23d46
Fix task count when a stream is used
2021-09-24 02:06:00 +01:00
Marc Gilleron
94bb985704
Automatic thread count computation and project settings
2021-09-21 21:50:06 +01:00
Marc Gilleron
176f46440f
Merge meshing and generation thread pools, expecting better usage of available threads
2021-09-21 19:32:29 +01:00
Marc Gilleron
0b4204f5be
Put task result processing into virtual functions and remove downcasts
2021-09-19 20:13:29 +01:00
Marc Gilleron
c9b1840e99
Added max_lod_hint
return value to block generators
2021-09-16 20:33:45 +01:00
Marc Gilleron
df33a77f72
Unnecessary includes
2021-09-05 22:48:50 +01:00
Marc Gilleron
411be94559
Renamed ArraySlice -> Span
2021-05-31 16:48:49 +01:00
Marc Gilleron
d53e7dd530
Fixed several bugs related to VoxelTool::paste()
...
- One of the Rect3i constructors was wrong
- Rewrite clipping logic of VoxelBuffer::copy_from
- Fix VoxelDataMap::paste to provide correct offsets
- Fix meshing data copy to account for clipping adjustments
2021-05-07 18:38:02 +01:00
Marc Gilleron
1449560f29
Implemented decoupling on VoxelTerrain (no setter yet)
2021-04-13 23:48:35 +01:00
Marc Gilleron
9a131ed4ff
Merge branch 'master' into block_size_decoupling
...
# Conflicts:
# server/voxel_server.cpp
2021-04-06 22:00:55 +01:00
Marc Gilleron
c746031eba
Fix used channels when copying data for meshing
2021-04-06 21:59:36 +01:00
Marc Gilleron
758e3bd227
Allow to use block size 32 for mesh blocks while using 16 for data blocks
...
Still hardcoded but a config should be added
2021-04-03 20:39:37 +01:00
Marc Gilleron
c86feda259
Replace lod_split_scale with lod_distance for better clarity
2021-03-27 16:38:20 +00:00
Marc Gilleron
4e1442cb0b
Added clipping debug option
2021-03-27 01:46:07 +00:00
Marc Gilleron
fc9a1be3ab
Use square root in distance-based priority
...
Otherwise it would not work with LOD modifier
2021-03-12 23:31:20 +00:00
Marc Gilleron
76ec90fe34
Moved constants and tables under a folder
2021-02-21 23:58:00 +00:00
Marc Gilleron
d1207bdd96
Reorganized some utility files
2021-02-17 20:34:35 +00:00
Marc Gilleron
4639b8de3d
Give names to threads so they show up in debugging tools
2021-02-09 00:52:26 +00:00
Marc Gilleron
b65b0b8045
Implemented saving and loading of modified instances in SQLite
2021-02-07 17:22:50 +00:00
Marc Gilleron
c6b169b978
Upgraded block serialized format, added some error handling
2021-01-30 01:36:37 +00:00
Marc Gilleron
01e5e18922
Implemented VoxelStreamSQLite
2021-01-28 22:02:49 +00:00
Marc Gilleron
3a0ebc73a7
Request saving of generated blocks if the option is enabled in VoxelStream
2021-01-17 22:22:10 +00:00