Moritz Zwerger
faa2b10b51
array float lists: make min grow step a power of 2
2025-02-09 20:01:40 +01:00
Moritz Zwerger
dbd4752d09
section occlusion: set invalid region for full opaque blocks
...
No need to check if the block is full opaque multiple times.
Benchmark time goes down from 18s to 15s, so 17% improvement. Not bad.
2025-02-09 20:01:38 +01:00
Moritz Zwerger
3fadadd441
fragmented array list: optimize batch adding for 6 floats, clean up
...
6 floats are added during chunk meshing, this does improve performance because it adds a special case for the most likely case (the buffer has enough capacity left)
2025-02-09 20:01:34 +01:00
Moritz Zwerger
434cc7bacb
dns util: don't resolve ip addresses
...
This just times out. Not needed.
2025-02-09 19:47:07 +01:00
Moritz Zwerger
ff68fcaac0
chunk meshing: prioritize very close chunks
2025-02-08 21:28:51 +01:00
Moritz Zwerger
fce6bc27c9
fix tests
2025-02-08 21:06:22 +01:00
Moritz Zwerger
d3dfcb2a92
chunk reading: check early if data is empty
...
Now it does not allocate chunk data when the section is truly empty (servers sometimes send the opposite and then it turns out that they are empty)
2025-02-08 21:06:05 +01:00
Moritz Zwerger
1b869e4761
ambient occlusion: on demand
...
This is way faster now and almost disappeared in the cpu profiling.
It also renders ao only on touching faces
2025-02-08 20:40:38 +01:00
Moritz Zwerger
b174638aaf
outsource allocator, section occlusion: reuse memory
2025-02-08 19:55:48 +01:00
Moritz Zwerger
d2dfe2b7f6
world visibility graph: remove dynamic allocation
2025-02-08 19:39:36 +01:00
Moritz Zwerger
128ced029d
linux: force x11
...
Wayland simply crashes and does not work at all.
2025-02-08 19:32:39 +01:00
Moritz Zwerger
a8fa9a304c
fluid mesher: reduce allocation a bit
...
Still a big fucking mess
2025-02-08 19:32:23 +01:00
Moritz Zwerger
555252d123
long array allocator: remove array that is in use
2025-02-08 19:31:57 +01:00
Moritz Zwerger
8e1855f10a
network: paletted container reading: reuse long array
...
Now it stores all allocated long arrays in a weak list and reuses them if they were not collected by the gc yet
2025-02-08 19:18:15 +01:00
Moritz Zwerger
055b015390
limit time for gpu chunk transfers
...
"Smooth FPS"
Adds an option to the config, and limits to time the chunk renderer has to transfer to about 3ms. This works good and feels a lot smoother now.
2025-02-08 18:22:11 +01:00
Moritz Zwerger
f20f2b5e0b
option to disable ambient occlusion
2025-02-07 23:52:34 +01:00
Moritz Zwerger
0db46ff41f
ambient occlusion: real greyscale
2025-02-07 23:43:36 +01:00
Moritz Zwerger
6a9cc77879
ambient occlusion
...
west + east
2025-02-07 23:33:28 +01:00
Moritz Zwerger
b6d14b3a9b
wip ambient occlusion
...
already working for top/bottom faces
2025-02-07 23:11:16 +01:00
Moritz Zwerger
f22935b5f1
arm render: enable face culling
...
Looks pretty shitty otherwise
2025-02-07 22:14:47 +01:00
Moritz Zwerger
095b537578
chunk renderer: pack uv
...
Cleans up uv with its own inlined datatype.
UV took 2*32bits but that was just overkill. Now it takes 2*12 bits and fits into one 32 bit float and leaves an additional
8 bits left, 2 of them will be used for ambient occlusion in the future.
2025-02-07 15:38:49 +01:00
Moritz Zwerger
68728bb1d8
baked face: don't allocate Int object when not tinted
...
Reduces some allocation during chunk meshing
2025-02-07 13:34:40 +01:00
Moritz Zwerger
89c164b360
block flags
...
This caches some properties that might be "complex" to calculate and are needed all over. Costs some memory, but we got enough, right?
2025-02-07 13:30:27 +01:00
Moritz Zwerger
63ff882512
reduce meshes per frame, reduce some latency
2025-02-06 22:11:59 +01:00
Moritz Zwerger
f1596c53ff
block entity receiving: don't process empty nbt
2025-02-06 22:11:43 +01:00
Moritz Zwerger
2e202bd6fc
benchmark section occlusion
2025-02-06 21:54:12 +01:00
Moritz Zwerger
b2963ca1bd
occlusion: cache short array
...
Reduces memory allocations a lot and slightly the performance
2025-02-06 21:47:52 +01:00
Moritz Zwerger
c6892e4bd3
chunk section: only keep track if section has fluids and not how many, improvements
...
A lot faster now and the count is not really needed, it will change rarely.
2025-02-06 21:37:15 +01:00
Moritz Zwerger
d2d83d85dc
MobSpawnerBlockEntity::isPlayerInRange: don't wait forever
...
This workarounds a deadlock.
2025-02-06 21:06:29 +01:00
Moritz Zwerger
be5dffcc0a
some more freeze dump improvements
2025-02-06 18:57:26 +01:00
Moritz Zwerger
e077192eb2
freeze dump: print lock details
...
This way it is clear who is holding the lock and probably causing the thread lock by not unlocking/releasing it again
2025-02-06 18:43:29 +01:00
Moritz Zwerger
c1bcfbe982
fix kutil version
...
my bad, called the local build version 1.27.0
2025-02-06 13:49:54 +01:00
Moritz Zwerger
c2b7890b2f
optimize entity attribute calculation
...
Armor stands (living entities) need that to weather it is possible to target them. Reduces memory usage (enum map, only on demand, skip empty map).
2025-02-06 13:44:35 +01:00
Moritz Zwerger
9555ff19ea
render prepare: run Renderer::postPrepareDraw as soon as async is possible
...
Now it is not waiting for the previous stage (async prepare) anymore and can start with tasks asap. This reduces the frame time, because it does not need to waiting blocked most times.
2025-02-06 12:51:24 +01:00
Moritz Zwerger
13037f4e0a
renderer manager: enqueue async preparing directly after sync preparing and wait after all were enqueued.
...
Async renderers can now already complete their preparing when others are still preparing in their sync phase. This should reduce the frame time a bit. It can even be enhanced with some feedback/task scheduler (track what time it takes avg and queue that one first next frame or so).
2025-02-06 10:00:29 +01:00
Moritz Zwerger
88df92ce84
chunk renderer: work on meshing queue async
...
Then it does not block the render preparing pipeline anymore. Same for sky renderer.
2025-02-06 09:58:03 +01:00
Moritz Zwerger
995e4be2eb
fix building with java 11
...
Those functions are not available there and should be imported.
2025-02-06 09:56:35 +01:00
Moritz Zwerger
52c3f7372e
local chunk manager: only update when position changed
2025-02-05 14:36:38 +01:00
Moritz Zwerger
ba8353d1f0
fragmented array list: fix bad return
2025-02-04 22:06:04 +01:00
Moritz Zwerger
20f4733771
benchmark solid section mesher
2025-02-04 21:56:48 +01:00
Moritz Zwerger
c21e1cb852
WeightedBlockRender: unpack if total weight < 20
...
This makes it a bit faster to lookup the model. It can even be more enhanced by unpacking the whole section once (every model) and then running culling and stuff afterwards. In the future...
2025-02-04 21:47:49 +01:00
Moritz Zwerger
a6cf950e29
FragmentedArrayFloatList: optimize
...
Just for adding 7 floats, that method is used during chunk meshing. The case that the first incomplete list has more than 7 floats available is probably in 99% of cases the case and not trying to push the buffer every time improves performance (it is way faster, meshing a random chunk is now twice as fast)
2025-02-04 20:24:27 +01:00
Moritz Zwerger
c11d64f2d7
meshes/float lists: make size a power of 2
...
This way it is way more likely to be page aligned and memory access should be faster
2025-02-04 20:21:20 +01:00
Moritz Zwerger
7229f9c06e
render stats: reduce avg
...
Otherwise fps are building up when joining?
2025-02-03 22:21:27 +01:00
Moritz Zwerger
8dca129517
bump dependencies
2025-02-03 22:20:33 +01:00
Moritz Zwerger
b2480980e9
port to kutil 1.27
...
This update has some qol updates and a lot of juicy performance updates. Locking now uses javas integrated ReentrantLock which is 10 times faster than the synchronized lock (benchmarked it). Due to minosofts async nature, a lot of locking is needed (especially for time critical parts like in rendering). Locking is already reduced to a minimum, but it should still give a small performance boost.
(more ports in there)
2025-02-03 22:12:37 +01:00
Moritz Zwerger
6659a0fef9
exclude dnsjava service
...
This is pretty bad, but it breaks minosoft for java18+ atm.
https://github.com/Bixilon/Minosoft/issues/33
2024-12-22 17:31:00 +01:00
Moritz Zwerger
6f9c83d3e5
bump gradle: 8.11.1
2024-12-16 14:00:07 +01:00
Moritz Zwerger
dcaa5eea4d
bump dependencies
2024-12-16 13:59:33 +01:00
Moritz Zwerger
3a608abe2d
bump kutil: 1.26.4
2024-10-29 23:53:15 +01:00