EmaMaker
e593696af3
restore seamless chunk borders
2023-10-03 20:47:53 +02:00
EmaMaker
df933bebdd
refactor message-sending system between main and update thread
...
restores blockpicking with new multithread system
2023-10-03 18:43:33 +02:00
EmaMaker
950e8c68ab
separate input handling from main
2023-10-03 18:16:45 +02:00
EmaMaker
4c46811a25
delete meshes relative to deleted chunks
2023-10-03 18:04:06 +02:00
EmaMaker
bc3c5587f8
calculateIndex belongs to Chunk namespace
2023-10-03 15:42:01 +02:00
EmaMaker
b95ea49c93
gpu printed in debug window
2023-10-03 15:35:56 +02:00
EmaMaker
90fabf73ee
add to queues only if completely free
2023-10-03 15:35:34 +02:00
EmaMaker
da6ceeb605
set generation/meshing queue flags before pushing to queues
2023-10-03 12:31:02 +02:00
EmaMaker
ca44c0f284
initial update/mesh/render thread communication refactor
...
Quirks to iron out:
- Some stuff is rendered wrong/not rendered (chunks missing)
- Still no way to delete stuff from ChunksToRender
2023-10-03 12:27:01 +02:00
EmaMaker
a05d019c69
use concurrent_hash_map and parallel_for for chunk update
...
memory VIRT is higher, RES is the same. memory usage stabilizes after a while
2023-10-01 19:45:51 +02:00
EmaMaker
49edf2de85
move chunk update back to secondary thread
2023-10-01 18:12:14 +02:00
EmaMaker
8a3c963721
solve some memory leaks regarding thread communication queues
...
also temporarly move chunk update in primary thread
2023-10-01 18:11:54 +02:00
EmaMaker
1ec529fae5
fallimentary attempt at fixing memory management with onetbb
2023-09-30 15:09:26 +02:00
EmaMaker
00cdd22e10
renderer: try frustum culling only if chunk has vertices
2023-09-22 09:06:48 +02:00
EmaMaker
a65fc44069
renderer: correct distance check
2023-09-21 17:13:21 +02:00
EmaMaker
3f02ca91db
chunkmgr: proper use of int instead of uint in chunk indices
2023-09-21 16:58:18 +02:00
EmaMaker
01f1f9da16
squashed commits
...
erase chunk buffers only after marking as to be deleted
update chunks around player with a cube instead of concentric spheres
only generate chunks around player, update all chunks use onetbb::parallel_for
2023-09-21 15:49:50 +02:00
EmaMaker
50bc52a679
debug window: use wireframe from checkbox in rendering
2023-09-20 12:42:05 +02:00
EmaMaker
07068d740a
debug window: use block type from slider in block picking
2023-09-20 12:42:05 +02:00
EmaMaker
52696f2dde
debug window: use crosshair type from slider in shader
2023-09-20 12:42:05 +02:00
EmaMaker
9d2d0c8772
debug window: populate with data
2023-09-20 12:42:05 +02:00
EmaMaker
f526e9b152
create debug window with imgui
2023-09-20 12:42:05 +02:00
EmaMaker
e7c4b2d56b
lib: add dearimgui lib
2023-09-20 12:42:05 +02:00
EmaMaker
a6a419fdff
hud: crosshair with fragment shader
2023-09-20 12:42:05 +02:00
EmaMaker
3f61a6a753
renderer: screenshot by saving render texture to file
2023-09-20 12:37:32 +02:00
EmaMaker
00a4b8e1e2
renderer: properly handle framebuffer resizing
2023-09-20 12:37:32 +02:00
EmaMaker
1c0ee1315f
renderer: render scene to a texture
...
And then render the texture onto a quad that fills the screen
The screen-filled quad upon which the texture is rendered must never be rendered in wireframe. Rendering in wireframe only makes sense when rendering the world on the texture
2023-09-20 12:37:32 +02:00
EmaMaker
41275486a6
blockpicking: eventually mesh nearby chunks when destroying a block
...
this prevents stray floating quads when destroy a block near the chunk border
2023-08-12 08:44:46 +02:00
EmaMaker
3d0d8b7593
chunkmgr: chunk can be meshed if all neighbors are generated
...
(Restores seemless chunk borders)
2023-08-08 17:54:20 +02:00
EmaMaker
1bea6c835c
separate mesh and generation threads, with priority queues for input
...
Allows blockpicking while the world is generating, without hiccups
2023-07-30 12:17:51 +02:00
EmaMaker
b0cf413baf
generator: add comments + a bit of refactor
2023-07-30 12:17:48 +02:00
EmaMaker
baa8d14bb3
generator: optimize leaves generation routine with LUT
2023-07-30 12:17:00 +02:00
EmaMaker
381cd698c7
Initial tree generation
...
Still very slow because multiple noise evaluations are needed
2023-07-30 12:16:32 +02:00
EmaMaker
9bc5bab3b2
mountain terrain with multiple octaves of noise
2023-07-30 12:13:08 +02:00
EmaMaker
950c43b163
refactor chunk meshing routine
2023-07-19 12:56:55 +02:00
EmaMaker
e7fc35ec47
create chunk mesh as cloud of points
2023-07-19 12:42:23 +02:00
EmaMaker
bff9e6ad4f
move normal data to own array
2023-07-18 21:18:12 +02:00
EmaMaker
a7b4671517
toggle wireframe with F
2023-07-18 20:12:25 +02:00
EmaMaker
4ada24e0d5
chunkmesher: check for NULLBLK to avoid holes at chunkborders
2023-07-18 20:02:37 +02:00
EmaMaker
393e5ca9b2
chunkmesher: seamless chunkborders by checking neighbouring chunks
2023-06-01 21:31:18 +02:00
EmaMaker
f798575cac
chunkmanager: add function getBlockAtPos, returns block at world pos
...
Returns Block::NULLBLK only to signal an invalid position
2023-06-01 21:31:18 +02:00
EmaMaker
0ebbb897dc
chunk: handle special cases for getBlocks
...
Returning Block::AIR when chunk is not yet generated (CHUNK_STATE_GENERATED set to false) is also a way to avoid thread-unsafe concurrent
access to the IntervalMaps data structure, since CHUNK_STATE_GENERATED is set to false before
generating the Chunk and set again to true after generation is complete
2023-06-01 21:31:18 +02:00
EmaMaker
105fff0029
write number of triangles to Chunk only when sending to GPU
...
previously the current number of vertices was stored in the chunk, and the same variable got later reused for the number of triangles. This modification increases clarity and avoid glitches when blockpicking
2023-05-26 23:07:04 +02:00
EmaMaker
6113886117
multithreaded blockpicking
2023-05-26 23:03:18 +02:00
EmaMaker
0acb8c7c1e
free chunks from memory
2023-05-20 22:15:32 +02:00
EmaMaker
e225babb0c
chunkmesher: external queue of chunk mesh data
...
instead of every chunk having its own queue
This decreases usage of ram
2023-05-20 22:15:32 +02:00
EmaMaker
78e3bc11e6
initial update and render with concurrent DS
2023-05-20 22:15:15 +02:00
EmaMaker
1d3132cf3c
use oneTBB library
2023-04-29 14:54:09 +02:00
EmaMaker
52537715ef
chunks: make chunk state atomic
2023-04-23 16:28:36 +02:00
EmaMaker
3daf994ac3
opengl: disable vsync
...
This way I can better watch how changes affect FPS/frame times, rather than have it capped at
60FPS/16.6ms
Does not introduce visible tearing.
The engine runs at about 170 FPS on my Tesla M40, and so does minecraft. It never goes past that, I think this is a
limitation of using prime offloading. Runs at 300FPS on average on the Radeon HD6850 to which I
normally offload the Tesla to
2023-04-10 00:45:25 +02:00