diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java index ec7bc457..87fe9059 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java @@ -27,6 +27,7 @@ public class VoxyConfig { //public int renderDistance = 128; public int serviceThreads = Math.max(Runtime.getRuntime().availableProcessors()/2, 1); public String defaultSaveConfig; + public int subDivisionSize = 128; //public int renderQuality = 256;//Smaller is higher quality diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java index 35b694dd..00e4bb32 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenFactory.java @@ -103,6 +103,13 @@ public class VoxyConfigScreenFactory implements ModMenuApi { .build()); */ + category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.subDivisionSize"), config.subDivisionSize, 32, 256) + .setTooltip(Text.translatable("voxy.config.general.subDivisionSize.tooltip")) + .setSaveConsumer(val -> config.subDivisionSize = val) + .setDefaultValue(DEFAULT.subDivisionSize) + .build()); + + category.addEntry(entryBuilder.startIntSlider(Text.translatable("voxy.config.general.serviceThreads"), config.serviceThreads, 1, Runtime.getRuntime().availableProcessors()) .setTooltip(Text.translatable("voxy.config.general.serviceThreads.tooltip")) .setSaveConsumer(val -> config.serviceThreads = val) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java index 216600d0..c287e5a3 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java @@ -80,6 +80,15 @@ public class RenderService, J extends Vi //this.nodeManager.insertTopLevelNode(WorldEngine.getWorldSectionId(4, 0,0,0)); + /* + for (int x = 0; x <= 25000>>9; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = 0; z <= 25000>>9; z++) { + this.nodeManager.insertTopLevelNode(WorldEngine.getWorldSectionId(4, x, y, z)); + } + } + }*/ + final int H_WIDTH = 10; for (int x = -H_WIDTH; x <= H_WIDTH; x++) { for (int y = -1; y <= 0; y++) { diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical2/HierarchicalOcclusionTraverser.java b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical2/HierarchicalOcclusionTraverser.java index 619fbf65..fa3a07e6 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/hierachical2/HierarchicalOcclusionTraverser.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/hierachical2/HierarchicalOcclusionTraverser.java @@ -1,6 +1,7 @@ package me.cortex.voxy.client.core.rendering.hierachical2; import me.cortex.voxy.client.Voxy; +import me.cortex.voxy.client.config.VoxyConfig; import me.cortex.voxy.client.core.gl.GlBuffer; import me.cortex.voxy.client.core.gl.shader.Shader; import me.cortex.voxy.client.core.gl.shader.ShaderType; @@ -39,8 +40,8 @@ public class HierarchicalOcclusionTraverser { private final GlBuffer renderList = new GlBuffer(100_000 * 4 + 4).zero();//100k sections max to render, TODO: Maybe move to render service or somewhere else private final GlBuffer queueMetaBuffer = new GlBuffer(4*4*5).zero(); - private final GlBuffer scratchQueueA = new GlBuffer(20_000*4).zero(); - private final GlBuffer scratchQueueB = new GlBuffer(20_000*4).zero(); + private final GlBuffer scratchQueueA = new GlBuffer(50_000*4).zero(); + private final GlBuffer scratchQueueB = new GlBuffer(50_000*4).zero(); private static final int LOCAL_WORK_SIZE_BITS = 5; private static final int MAX_ITERATIONS = 5; @@ -116,7 +117,7 @@ public class HierarchicalOcclusionTraverser { MemoryUtil.memPutInt(ptr, (int) (this.renderList.size()/4-1)); ptr += 4; - final float screenspaceAreaDecreasingSize = 100 * 100; + final float screenspaceAreaDecreasingSize = VoxyConfig.CONFIG.subDivisionSize*VoxyConfig.CONFIG.subDivisionSize; //Screen space size for descending MemoryUtil.memPutFloat(ptr, (float) (screenspaceAreaDecreasingSize) /(viewport.width*viewport.height)); ptr += 4; } diff --git a/src/main/resources/assets/voxy/lang/en_us.json b/src/main/resources/assets/voxy/lang/en_us.json index 70d32836..0f2f9a6f 100644 --- a/src/main/resources/assets/voxy/lang/en_us.json +++ b/src/main/resources/assets/voxy/lang/en_us.json @@ -7,25 +7,13 @@ "voxy.config.general.enabled": "Enable Voxy", "voxy.config.general.enabled.tooltip": "Fully enables or disables voxy", + "voxy.config.general.ingest": "Chunk Ingest", "voxy.config.general.ingest.tooltip": "Enables or disables voxies ability to convert new chunks into LoDs", - "voxy.config.general.quality": "LoD Quality", - "voxy.config.general.quality.tooltip": "How big of an area a section should be on screen before it subdivides (pixels^2)", - "voxy.config.general.geometryBuffer": "Geometry Buffer Quads", - "voxy.config.general.geometryBuffer.tooltip": "How many quads the geometry buffer can hold", - "voxy.config.general.maxSections": "Max Sections", - "voxy.config.general.maxSections.tooltip": "The max number of sections the renderer can contain", - "voxy.config.general.renderDistance": "Render Distance", - "voxy.config.general.renderDistance.tooltip": "The render distance in chunks (set to -1 to disable chunk unloading)", - "voxy.config.general.nvmesh": "Use nvidia mesh shaders", - "voxy.config.general.nvmesh.tooltip": "Use nvidia mesh shaders if possible to render LoDs", - "voxy.config.threads.ingest": "Ingest", - "voxy.config.threads.ingest.tooltip": "How many threads voxy will use for ingesting new chunks", - "voxy.config.threads.saving": "Saving", - "voxy.config.threads.saving.tooltip": "How many threads voxy will use for saving sections to the storage backend", - "voxy.config.threads.render": "Render", - "voxy.config.threads.render.tooltip": "How many threads voxy will use for generating render data", + "voxy.config.general.serviceThreads": "Service threads", "voxy.config.general.serviceThreads.tooltip": "Number of threads the ServiceThreadPool can use", - "voxy.config.general.serviceThreads": "Service threads" + + "voxy.config.general.subDivisionSize": "Pixels^2 of subdivision size", + "voxy.config.general.subDivisionSize.tooltip": "Maximum size in pixels (squared) of screenspace AABB before subdiving to smaller LoDs (Smaller being higher quality)" } \ No newline at end of file