Added option to change subdivision size

This commit is contained in:
mcrcortex
2024-12-05 22:38:31 +10:00
parent d9fc4b3c05
commit 523fd89f97
5 changed files with 26 additions and 20 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -80,6 +80,15 @@ public class RenderService<T extends AbstractSectionRenderer<J, ?>, 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++) {

View File

@@ -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;
}

View File

@@ -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)"
}