This commit is contained in:
mcrcortex
2025-12-15 10:47:28 +10:00
parent c4f799ff53
commit b7f5798ecd
3 changed files with 5 additions and 185 deletions

View File

@@ -1,184 +0,0 @@
package me.cortex.voxy.client.config;
import com.google.common.collect.ImmutableList;
import me.cortex.voxy.client.RenderStatistics;
import me.cortex.voxy.client.VoxyClientInstance;
import me.cortex.voxy.client.core.IGetVoxyRenderSystem;
import me.cortex.voxy.client.mixin.sodium.AccessorSodiumWorldRenderer;
import me.cortex.voxy.common.util.cpu.CpuLayout;
import me.cortex.voxy.commonImpl.VoxyCommon;
import net.caffeinemc.mods.sodium.client.gui.options.*;
import net.caffeinemc.mods.sodium.client.gui.options.control.SliderControl;
import net.caffeinemc.mods.sodium.client.gui.options.control.TickBoxControl;
import net.caffeinemc.mods.sodium.client.render.SodiumWorldRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import java.util.ArrayList;
import java.util.List;
/*
public abstract class VoxyConfigScreenPages {
private VoxyConfigScreenPages(){}
public static OptionPage voxyOptionPage = null;
public static OptionPage page() {
List<OptionGroup> groups = new ArrayList<>();
VoxyConfig storage = VoxyConfig.CONFIG;
//General
groups.add(OptionGroup.createBuilder()
.add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.enabled"))
.setTooltip(Component.translatable("voxy.config.general.enabled.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v)->{
s.enabled = v;
if (v) {
if (VoxyClientInstance.isInGame) {
VoxyCommon.createInstance();
var vrsh = (IGetVoxyRenderSystem) Minecraft.getInstance().levelRenderer;
if (vrsh != null && s.enableRendering) {
vrsh.createRenderer();
}
}
} else {
var vrsh = (IGetVoxyRenderSystem) Minecraft.getInstance().levelRenderer;
if (vrsh != null) {
vrsh.shutdownRenderer();
}
VoxyCommon.shutdownInstance();
}
}, s -> s.enabled)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.build()
).build()
);
groups.add(OptionGroup.createBuilder()
.add(OptionImpl.createBuilder(int.class, storage)
.setName(Component.translatable("voxy.config.general.serviceThreads"))
.setTooltip(Component.translatable("voxy.config.general.serviceThreads.tooltip"))
.setControl(opt->new SliderControl(opt, 1,
CpuLayout.CORES.length, //Just do core size as max
//Runtime.getRuntime().availableProcessors(),//Note: this is threads not cores, the default value is half the core count, is fine as this should technically be the limit but CpuLayout.CORES.length is more realistic
1, v->Component.literal(Integer.toString(v))))
.setBinding((s, v)->{
s.serviceThreads = v;
var instance = VoxyCommon.getInstance();
if (instance != null) {
instance.updateDedicatedThreads();
}
}, s -> s.serviceThreads)
.setImpact(OptionImpact.HIGH)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.useSodiumBuilder"))
.setTooltip(Component.translatable("voxy.config.general.useSodiumBuilder.tooltip"))
.setControl(TickBoxControl::new)
.setImpact(OptionImpact.VARIES)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.setBinding((s,v)->{
s.dontUseSodiumBuilderThreads = !v;
var instance = VoxyCommon.getInstance();
if (instance != null) {
instance.updateDedicatedThreads();
}
}, s->!s.dontUseSodiumBuilderThreads)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.ingest"))
.setTooltip(Component.translatable("voxy.config.general.ingest.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v) -> s.ingestEnabled = v, s -> s.ingestEnabled)
.setImpact(OptionImpact.MEDIUM)
.build()
).build()
);
groups.add(OptionGroup.createBuilder()
.add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.rendering"))
.setTooltip(Component.translatable("voxy.config.general.rendering.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v)->{
s.enableRendering = v;
var vrsh = (IGetVoxyRenderSystem)Minecraft.getInstance().levelRenderer;
if (vrsh != null) {
if (v) {
vrsh.createRenderer();
} else {
vrsh.shutdownRenderer();
}
}
}, s -> s.enableRendering)
.setImpact(OptionImpact.HIGH)
.build()
).add(OptionImpl.createBuilder(int.class, storage)
.setName(Component.translatable("voxy.config.general.subDivisionSize"))
.setTooltip(Component.translatable("voxy.config.general.subDivisionSize.tooltip"))
.setControl(opt->new SliderControl(opt, 0, SUBDIV_IN_MAX, 1, v->Component.literal(Integer.toString(Math.round(ln2subDiv(v))))))
.setBinding((s, v) -> s.subDivisionSize = ln2subDiv(v), s -> subDiv2ln(s.subDivisionSize))
.setImpact(OptionImpact.HIGH)
.build()
).add(OptionImpl.createBuilder(int.class, storage)
.setName(Component.translatable("voxy.config.general.renderDistance"))
.setTooltip(Component.translatable("voxy.config.general.renderDistance.tooltip"))
.setControl(opt->new SliderControl(opt, 2, 64, 1, v->Component.literal(Integer.toString(v * 32))))//Every unit is equal to 32 vanilla chunks
.setBinding((s, v)-> {
s.sectionRenderDistance = v;
var vrsh = (IGetVoxyRenderSystem)Minecraft.getInstance().levelRenderer;
if (vrsh != null) {
var vrs = vrsh.getVoxyRenderSystem();
if (vrs != null) {
vrs.setRenderDistance(v);
}
}
}, s -> s.sectionRenderDistance)
.setImpact(OptionImpact.LOW)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.environmental_fog"))
.setTooltip(Component.translatable("voxy.config.general.environmental_fog.tooltip"))
.setControl(TickBoxControl::new)
.setImpact(OptionImpact.VARIES)
.setBinding((s, v)-> s.useEnvironmentalFog = v, s -> s.useEnvironmentalFog)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.vanilla_fog"))
.setTooltip(Component.translatable("voxy.config.general.vanilla_fog.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v)-> s.renderVanillaFog = v, s -> s.renderVanillaFog)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Component.translatable("voxy.config.general.render_statistics"))
.setTooltip(Component.translatable("voxy.config.general.render_statistics.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v)-> RenderStatistics.enabled = v, s -> RenderStatistics.enabled)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.build()
).build()
);
return new OptionPage(Component.translatable("voxy.config.title"), ImmutableList.copyOf(groups));
}
private static final int SUBDIV_IN_MAX = 100;
private static final double SUBDIV_MIN = 28;
private static final double SUBDIV_MAX = 256;
private static final double SUBDIV_CONST = Math.log(SUBDIV_MAX/SUBDIV_MIN)/Math.log(2);
//In range is 0->200
//Out range is 28->256
private static float ln2subDiv(int in) {
return (float) (SUBDIV_MIN*Math.pow(2, SUBDIV_CONST*((double)in/SUBDIV_IN_MAX)));
}
//In range is ... any?
//Out range is 0->200
private static int subDiv2ln(float in) {
return (int) (((Math.log(((double)in)/SUBDIV_MIN)/Math.log(2))/SUBDIV_CONST)*SUBDIV_IN_MAX);
}
}
*/

View File

@@ -26,7 +26,7 @@ import static org.lwjgl.opengl.GL45C.*;
public class IrisVoxyRenderPipeline extends AbstractRenderPipeline {
private final IrisVoxyRenderPipelineData data;
private final FullscreenBlit depthBlit = new FullscreenBlit("voxy:post/blit_texture_depth_cutout.frag");
public final DepthFramebuffer fbTranslucent = new DepthFramebuffer(this.fb.getDepthTex().getFormat());
public final DepthFramebuffer fbTranslucent = new DepthFramebuffer(this.fb.getFormat());
private final GlBuffer shaderUniforms;

View File

@@ -62,4 +62,8 @@ public class DepthFramebuffer {
public void bind() {
glBindFramebuffer(GL_FRAMEBUFFER, this.framebuffer.id);
}
public int getFormat() {
return this.depthType;
}
}