From fbcef60f67416eee2189b27c6cd333be33f61443 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Thu, 1 May 2025 14:36:28 +1000 Subject: [PATCH] change things to use the constant --- .../HierarchicalOcclusionTraverser.java | 20 ++++++++++--------- .../section/MDICSectionRenderer.java | 8 +++++--- .../lod/hierarchical/traversal_dev.comp | 4 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/HierarchicalOcclusionTraverser.java b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/HierarchicalOcclusionTraverser.java index 9f26de94..b3cfed3e 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/HierarchicalOcclusionTraverser.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical/HierarchicalOcclusionTraverser.java @@ -12,6 +12,7 @@ import me.cortex.voxy.client.core.rendering.util.HiZBuffer; import me.cortex.voxy.client.core.rendering.Viewport; import me.cortex.voxy.client.core.rendering.util.DownloadStream; import me.cortex.voxy.client.core.rendering.util.UploadStream; +import me.cortex.voxy.common.world.WorldEngine; import org.lwjgl.system.MemoryUtil; import static me.cortex.voxy.client.core.rendering.util.PrintfDebugUtil.PRINTF_processor; @@ -30,6 +31,10 @@ public class HierarchicalOcclusionTraverser { public static final int REQUEST_QUEUE_SIZE = 50; + + private static final int MAX_ITERATIONS = WorldEngine.MAX_LOD_LAYER+1; + private static final int LOCAL_WORK_SIZE_BITS = 5; + private final NodeManager nodeManager; private final NodeCleaner nodeCleaner; @@ -45,13 +50,10 @@ public class HierarchicalOcclusionTraverser { private final Int2IntOpenHashMap topNode2idxMapping = new Int2IntOpenHashMap();//Used to store mapping from TLN to array index private final int[] idx2topNodeMapping = new int[100_000];//Used to map idx to TLN id private final GlBuffer topNodeIds = new GlBuffer(100_000*4).zero(); - private final GlBuffer queueMetaBuffer = new GlBuffer(4*4*5).zero(); + private final GlBuffer queueMetaBuffer = new GlBuffer(4*4*MAX_ITERATIONS).zero(); private final GlBuffer scratchQueueA = new GlBuffer(100_000*4).zero(); private final GlBuffer scratchQueueB = new GlBuffer(100_000*4).zero(); - private static final int MAX_ITERATIONS = 5; - private static final int LOCAL_WORK_SIZE_BITS = 5; - private static int BINDING_COUNTER = 1; private static final int SCENE_UNIFORM_BINDING = BINDING_COUNTER++; private static final int REQUEST_QUEUE_BINDING = BINDING_COUNTER++; @@ -220,12 +222,12 @@ public class HierarchicalOcclusionTraverser { if (RenderStatistics.enabled) { DownloadStream.INSTANCE.download(this.statisticsBuffer, down->{ - for (int i = 0; i < 5; i++) { + for (int i = 0; i < MAX_ITERATIONS; i++) { RenderStatistics.hierarchicalTraversalCounts[i] = MemoryUtil.memGetInt(down.address+i*4L); } - for (int i = 0; i < 5; i++) { - RenderStatistics.hierarchicalRenderSections[i] = MemoryUtil.memGetInt(down.address+5*4L+i*4L); + for (int i = 0; i < MAX_ITERATIONS; i++) { + RenderStatistics.hierarchicalRenderSections[i] = MemoryUtil.memGetInt(down.address+MAX_ITERATIONS*4L+i*4L); } }); } @@ -258,12 +260,12 @@ public class HierarchicalOcclusionTraverser { glClearNamedBufferSubData(this.queueMetaBuffer.id, GL_RGBA32UI, 0, 16, GL_RGBA, GL_UNSIGNED_INT, new int[]{firstDispatchSize,1,1,initialQueueSize}); */ {//TODO:FIXME: THIS IS BULLSHIT BY INTEL need to fix the clearing - long ptr = UploadStream.INSTANCE.upload(this.queueMetaBuffer, 0, 16*5); + long ptr = UploadStream.INSTANCE.upload(this.queueMetaBuffer, 0, 16*MAX_ITERATIONS); MemoryUtil.memPutInt(ptr + 0, firstDispatchSize); MemoryUtil.memPutInt(ptr + 4, 1); MemoryUtil.memPutInt(ptr + 8, 1); MemoryUtil.memPutInt(ptr + 12, this.topNodeCount); - for (int i = 1; i < 5; i++) { + for (int i = 1; i < MAX_ITERATIONS; i++) { MemoryUtil.memPutInt(ptr + (i*16)+ 0, 0); MemoryUtil.memPutInt(ptr + (i*16)+ 4, 1); MemoryUtil.memPutInt(ptr + (i*16)+ 8, 1); diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java index e19366ea..7373b1d6 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/section/MDICSectionRenderer.java @@ -12,6 +12,7 @@ import me.cortex.voxy.client.core.rendering.util.SharedIndexBuffer; import me.cortex.voxy.client.core.rendering.util.DownloadStream; import me.cortex.voxy.client.core.rendering.util.UploadStream; import me.cortex.voxy.common.Logger; +import me.cortex.voxy.common.world.WorldEngine; import org.joml.Matrix4f; import org.lwjgl.system.MemoryUtil; @@ -230,12 +231,13 @@ public class MDICSectionRenderer extends AbstractSectionRenderer{ - for (int i = 0; i < 5; i++) { + final int LAYERS = WorldEngine.MAX_LOD_LAYER+1; + for (int i = 0; i < LAYERS; i++) { RenderStatistics.visibleSections[i] = MemoryUtil.memGetInt(down.address+i*4L); } - for (int i = 0; i < 5; i++) { - RenderStatistics.quadCount[i] = MemoryUtil.memGetInt(down.address+5*4L+i*4L); + for (int i = 0; i < LAYERS; i++) { + RenderStatistics.quadCount[i] = MemoryUtil.memGetInt(down.address+LAYERS*4L+i*4L); } }); } diff --git a/src/main/resources/assets/voxy/shaders/lod/hierarchical/traversal_dev.comp b/src/main/resources/assets/voxy/shaders/lod/hierarchical/traversal_dev.comp index f6f41d22..c78c743d 100644 --- a/src/main/resources/assets/voxy/shaders/lod/hierarchical/traversal_dev.comp +++ b/src/main/resources/assets/voxy/shaders/lod/hierarchical/traversal_dev.comp @@ -41,8 +41,8 @@ layout(binding = RENDER_TRACKER_BINDING, std430) restrict writeonly buffer rende #ifdef HAS_STATISTICS layout(binding = STATISTICS_BUFFER_BINDING, std430) restrict buffer statisticsBuffer { - uint traversalCounts[5]; - uint renderCounts[5]; + uint traversalCounts[MAX_ITERATIONS]; + uint renderCounts[MAX_ITERATIONS]; }; #endif