From cce96fc86791f5e6a6c4301b300bdae1ac82d11e Mon Sep 17 00:00:00 2001 From: mcrcortex <{ID}+{username}@users.noreply.github.com> Date: Sun, 14 Apr 2024 04:05:07 +1000 Subject: [PATCH] made it 62 quad in size --- .../Gl46MeshletsFarWorldRenderer.java | 9 +++--- .../core/rendering/SharedIndexBuffer.java | 14 +++++++++ .../rendering/building/RenderDataFactory.java | 31 ++++++++++--------- .../voxy/client/core/util/IndexUtil.java | 19 ++++++++++++ .../voxy/shaders/lod/gl46mesh/cmdgen.comp | 2 +- .../voxy/shaders/lod/gl46mesh/quads.vert | 2 +- 6 files changed, 55 insertions(+), 22 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/Gl46MeshletsFarWorldRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/Gl46MeshletsFarWorldRenderer.java index 99b79e2a..769bd7b3 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/Gl46MeshletsFarWorldRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/Gl46MeshletsFarWorldRenderer.java @@ -58,7 +58,7 @@ public class Gl46MeshletsFarWorldRenderer extends AbstractFarWorldRenderer= 1<<8) { + throw new IllegalArgumentException("Quad count to large"); + } + MemoryBuffer buffer = new MemoryBuffer(quadCount * 6L); + long ptr = buffer.address; + for(int i = 0; i < quadCount*4; i += 4) { + MemoryUtil.memPutByte(ptr + (0), (byte) i); + MemoryUtil.memPutByte(ptr + (1), (byte) (i + 1)); + MemoryUtil.memPutByte(ptr + (2), (byte) (i + 2)); + MemoryUtil.memPutByte(ptr + (3), (byte) (i + 1)); + MemoryUtil.memPutByte(ptr + (4), (byte) (i + 3)); + MemoryUtil.memPutByte(ptr + (5), (byte) (i + 2)); + + ptr += 6; + } + + return buffer; + } public static MemoryBuffer generateQuadIndicesShort(int quadCount) { if ((quadCount*4) >= 1<<16) { throw new IllegalArgumentException("Quad count to large"); diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46mesh/cmdgen.comp b/src/main/resources/assets/voxy/shaders/lod/gl46mesh/cmdgen.comp index a00d0047..0094118c 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46mesh/cmdgen.comp +++ b/src/main/resources/assets/voxy/shaders/lod/gl46mesh/cmdgen.comp @@ -7,7 +7,7 @@ #import #define extractMeshletStart extractQuadStart layout(local_size_x = 64) in; -#define QUADS_PER_MESHLET 126 +#define QUADS_PER_MESHLET 62 void emitMeshlets(inout uint mli, inout uint meshletPtr, uint mskedCnt, uint cnt) { for (;mskedCnt != 0; mskedCnt--,mli++) { diff --git a/src/main/resources/assets/voxy/shaders/lod/gl46mesh/quads.vert b/src/main/resources/assets/voxy/shaders/lod/gl46mesh/quads.vert index 8db9ceb7..8241f8d3 100644 --- a/src/main/resources/assets/voxy/shaders/lod/gl46mesh/quads.vert +++ b/src/main/resources/assets/voxy/shaders/lod/gl46mesh/quads.vert @@ -1,8 +1,8 @@ #version 450 #extension GL_ARB_gpu_shader_int64 : enable +#define QUADS_PER_MESHLET 62 #define MESHLET_ACCESS readonly -#define QUADS_PER_MESHLET 126 //There are 16 bytes of metadata at the start of the meshlet #define MESHLET_SIZE (QUADS_PER_MESHLET+2) #import