IntegratedQuantum
9b51d3e47d
Add new stone texture
...
Co-Authored-By: careeoki <122191047+careeoki@users.noreply.github.com>
2024-01-15 19:59:08 +01:00
IntegratedQuantum
25e4ba6b84
Split up chunk.zig and renderer.zig
...
I'm getting tired of scrolling around in those large files.
2024-01-15 18:55:33 +01:00
IntegratedQuantum
5160f22e5c
Don't break/place blocks while in the inventory.
2024-01-12 22:59:56 +01:00
IntegratedQuantum
a542fb73e4
Configure glass to correctly absorb light from the lighting system.
2024-01-12 21:55:47 +01:00
IntegratedQuantum
8fc7641d16
Quick and Dirty block breaking, and fixed a lighting bug when breaking blocks.
2024-01-12 21:45:23 +01:00
IntegratedQuantum
8a8af8e46f
Update zig version
2024-01-12 20:58:58 +01:00
IntegratedQuantum
d3ad1b4d01
Use bitwise operations to extract data from gl_vertexID.
...
This seems to fix problems for some people, probably fixing some rare hardware bug here.
2023-12-30 23:22:47 +01:00
IntegratedQuantum
e8f62d5660
Fix #244 and improve performance of light updates.
2023-12-23 20:22:02 +01:00
IntegratedQuantum
4330f33d36
Improve priority calculation for light maps so it always generates the light maps before the contained terrain.
...
Fixes #243
2023-12-21 22:10:55 +01:00
IntegratedQuantum
f774ccf370
Remove lighting when breaking blocks.
...
fixes #221
2023-12-21 21:22:39 +01:00
IntegratedQuantum
89438a2e2a
Fix problem with negative item colors, which mostly come from the java version.
2023-12-20 19:58:58 +01:00
IntegratedQuantum
3eb3e2b358
Add sunlight.
2023-12-20 14:25:56 +01:00
IntegratedQuantum
dcb76a77a8
Add void caverns.
2023-12-10 13:27:19 +01:00
IntegratedQuantum
05bc3720eb
Improve log message when the download process is finished.
2023-12-09 19:55:00 +01:00
IntegratedQuantum
2728e053a5
Avoid loading meshes twice, when receiving a chunk twice from the server (which happens when going out of render distance of a chunk for a short period of time). This caused a ton of problems.
...
Fixes #208
Should fix #224
2023-12-07 21:11:13 +01:00
IntegratedQuantum
7c1ec82b03
Placing blocks is actually doable (no lagspikes)
...
Moving the mesh update at high priority into the threadpool, allows for faster and more efficient(previously meshes may have been updated multiple times in a row) updates.
fixes #223
2023-12-07 19:57:51 +01:00
IntegratedQuantum
451cac2923
Use a CircularBufferQueue for lighting instead of a PriorityQueue.
...
A CircularBufferQueue means that we might revisit some points, for example when there is a dim and a bright light source.
However in practice the performance impact of using a PriorityQueue is huge, so this edge case doesn't matter really.
This makes light propagation about 20 times faster and should help with #223 , but it doesn't seem to actually make a difference. There is likely something else going on here.
2023-12-07 16:58:50 +01:00
IntegratedQuantum
048b48e5c7
Update lights when placing emissive blocks and fix ambient occlusion
...
The ground had no absorption. Fixes #222
Helps with #221
2023-12-05 20:09:52 +01:00
IntegratedQuantum
58b2a2627b
Implement light propagation.
...
Fixes #61
2023-12-04 21:49:54 +01:00
IntegratedQuantum
77716b4679
Change how emission textures work. Also fixed a bug in block placing.
...
Emission now work as a base light, rather than adding to the ambient light.
This makes them produce the same light strength and bloom regardless of the environment.
2023-12-01 19:45:51 +01:00
IntegratedQuantum
91a52e6dae
Add anisotropic filtering and make leaves transparent again.
2023-12-01 16:29:32 +01:00
IntegratedQuantum
7d23411a22
Goodbye voxel models 👋
...
Fixes #215
Closes #164
Closes #162
Closes #160
Closes #150
Closes #145
2023-12-01 15:50:31 +01:00
IntegratedQuantum
2a46592454
Fix integer overflows when the chunk mesh memory gets past 2 GiB.
...
This was causing corrupt and missing meshes.
2023-11-30 00:38:49 +01:00
IntegratedQuantum
8d561dfff2
Old meshes must be freed before creating new meshes.
...
Otherwise issues might happen on teleportation.
2023-11-29 17:20:35 +01:00
IntegratedQuantum
76384d1e4d
Fix problems with transparency sorting and other data races.
...
Fixes #207
2023-11-29 15:44:10 +01:00
IntegratedQuantum
6dcfc5d3c9
Bypass the network for local connections when sending chunks.
...
Fixes #206
Fixes #189
2023-11-29 13:10:55 +01:00
IntegratedQuantum
6b1ba8bbe5
Write directly to the mapped buffer to avoid an extra copy of the mesh data.
2023-11-29 12:48:33 +01:00
IntegratedQuantum
f758ba4c2e
Restructure the mesh so it doesn't need to recalculate lighting info in the render thread.
...
Fixes #204
2023-11-29 12:34:05 +01:00
IntegratedQuantum
4623df4af2
Cleanup some stuff that isn't needed anymore.
2023-11-28 21:49:56 +01:00
IntegratedQuantum
00f8b79ec4
Debug mode is now a slide show.
...
Mesh generation is much faster though, especially in release.
Additionally a few concurrency bugs, a deadlock and some other minor issues were fixed.
2023-11-28 21:30:58 +01:00
IntegratedQuantum
a61fe26fab
Update zig: Andrew broke it all.
2023-11-28 00:04:01 +01:00
IntegratedQuantum
a028d22029
Calculate some available neighbor mesh borders outside the render thread.
...
While pretty insignificant on its own, this is an important step towards #168 and #61
2023-11-27 21:12:00 +01:00
IntegratedQuantum
e65928fd09
Make the log function work properly when logging in a defer that comes after the stackAllocator is freed.
2023-11-27 21:00:04 +01:00
IntegratedQuantum
d95b19c263
No longer use persistent mapping for the larger gpu buffer.
...
Apparently there is still some weird synchronization issue in there?
I tried many things to make it work, but ultimately I gave up.
I'm now using glMapBufferRange, which doesn't seem to have any issues.
Fixes #181
2023-11-26 22:55:46 +01:00
m-m-0-m
5a2c3936e5
Update README.md ( #196 )
...
* Update README.md
I fixed grammar, capitalization, formality and I altered the YouTube link at the end, so that it skips the intro (not the video will start at the 11 second mark).
* Update README.md
Changed "(AKA a Minecraft clone)" to "(inspired by Minecraft)," as this is more fitting.
2023-11-26 21:23:12 +01:00
IntegratedQuantum
d5dcc4d9be
Fix calculation of used memory in LargeBuffer, which caused a crash in the debug window.
2023-11-26 20:41:27 +01:00
IntegratedQuantum
e0ac22668b
Fix a stupid bug in the gpu allocator. It maximized fragmentation instead of minimizing it.
...
Fixes #175
2023-11-26 18:22:46 +01:00
IntegratedQuantum
410db62d85
Prepare some interfaces for multithreaded mesh access.
2023-11-26 17:07:21 +01:00
IntegratedQuantum
a6248dc5c2
Dynamically switch to higher lod chunks, when otherwise a high-to-low lod border would be drawn(I have no mesh data for these).
...
This required dynamically re-uploading some chunk meshes.
Fixes #130
2023-11-25 16:20:05 +01:00
IntegratedQuantum
0b8c4b455b
Keep the faces to lod neighbors stored even if a neighbor of the same lod exists.
...
This is required for #130 to allow swapping between lod and non-lod connections on demand.
2023-11-23 23:03:04 +01:00
IntegratedQuantum
0c4f705082
Floor the pixel positions of the text to the nearest integer.
...
Seems like multisampling, which appears to be enabled by default for some people even if disabled in glfw, does weird stuff when the positions are not pixel aligned.
Should fix #177
2023-11-22 21:41:10 +01:00
IntegratedQuantum
e6b08081b2
Remove meshes from the updatelist when they get outside of the render distance.
...
fixes #182
2023-11-22 19:53:49 +01:00
IntegratedQuantum
c1c6aa7138
Further improve allocator usage in the network thread.
...
This finally fixes #171 (although CPUs with even more threads, or a future game with even better optimized terrain generation will still have this problem)
2023-11-21 22:19:52 +01:00
IntegratedQuantum
2d8f964ad9
Implement network statistics.
...
Fixes #153
2023-11-21 17:32:53 +01:00
IntegratedQuantum
4f789c4cca
Update zig, forcing constness
2023-11-21 16:23:24 +01:00
IntegratedQuantum
e61709cb69
Rethink the allocation strategy.
...
Instead of one general purpose allocator per thread, there now is one stack allocator per thread, which behaves like a basic stack.
Using this allocator for all the trivial allocations, makes the game overall more efficient, even if some larger allocations now require going through the global allocator.
Maybe in the future the stack allocator could be extended with a temporary arena allocator functionality?
This should help with #171 by almost halfing the CPU usage of the receiving network thread. However the issue remains.
2023-11-21 16:06:19 +01:00
IntegratedQuantum
498222d3a8
Properly check if a mesh is in render distance before generating it.
...
Fixes a weird bug that happened when travelling too fast.
2023-11-20 21:45:07 +01:00
IntegratedQuantum
0adfbbc79e
We don't need 64 bits for timer queries.
...
32 bits is enough as long as the time is less than 4 seconds, and 64 bit isn't supported everywhere.
2023-11-20 10:38:24 +01:00
IntegratedQuantum
80a6a53170
Don't crash on thread renaming errors.
...
These happen sometimes, like name too long and on mac you can only rename a thread from within.
And since the thread name is really only used for debugging, there is no need to crash the game in that case.
2023-11-19 22:49:31 +01:00
IntegratedQuantum
35b436f26c
Don't use tabs in comments.
2023-11-19 19:39:58 +01:00