Config option for enabling/disabling vanilla fog (only applies when the voxy renderer is active)

This commit is contained in:
mcrcortex
2025-04-11 09:24:09 +10:00
parent 198f0f9c31
commit 2a128bd69c
5 changed files with 40 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ public class VoxyConfig implements OptionStorage<VoxyConfig> {
public int sectionRenderDistance = 16;
public int serviceThreads = Math.max(Runtime.getRuntime().availableProcessors()/2, 1);
public float subDivisionSize = 128;
public boolean renderVanillaFog = false;
public static VoxyConfig loadOrCreate() {
var path = getConfigPath();

View File

@@ -133,6 +133,7 @@ public class VoxyConfigScreenPages implements ModMenuApi {
}
}
}, s -> s.enableRendering)
.setImpact(OptionImpact.HIGH)
.build()
).add(OptionImpl.createBuilder(int.class, storage)
.setName(Text.translatable("voxy.config.general.subDivisionSize"))
@@ -157,6 +158,12 @@ public class VoxyConfigScreenPages implements ModMenuApi {
}, s -> s.sectionRenderDistance)
.setImpact(OptionImpact.LOW)
.build()
).add(OptionImpl.createBuilder(boolean.class, storage)
.setName(Text.translatable("voxy.config.general.vanilla_fog"))
.setTooltip(Text.translatable("voxy.config.general.vanilla_fog.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((s, v)-> s.renderVanillaFog = v, s -> s.renderVanillaFog)
.build()
).build()
);
return new OptionPage(Text.translatable("voxy.config.title"), ImmutableList.copyOf(groups));

View File

@@ -0,0 +1,27 @@
package me.cortex.voxy.client.mixin.minecraft;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import me.cortex.voxy.client.config.VoxyConfig;
import me.cortex.voxy.client.core.IGetVoxyRenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.BackgroundRenderer;
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.Fog;
import org.joml.Vector4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.Inject;
@Mixin(BackgroundRenderer.class)
public class MixinBackgroundRenderer {
@WrapMethod(method = "applyFog")
private static Fog voxy$overrideFog(Camera camera, BackgroundRenderer.FogType fogType, Vector4f color, float viewDistance, boolean thickenFog, float tickProgress, Operation<Fog> original) {
var vrs = (IGetVoxyRenderSystem)MinecraftClient.getInstance().worldRenderer;
if (VoxyConfig.CONFIG.renderVanillaFog || vrs == null || vrs.getVoxyRenderSystem() == null) {
return original.call(camera, fogType, color, viewDistance, thickenFog, tickProgress);
} else {
return Fog.DUMMY;
}
}
}

View File

@@ -17,5 +17,8 @@
"voxy.config.general.subDivisionSize.tooltip": "Maximum size in pixels (squared) of screenspace AABB before subdiving to smaller LoDs (Smaller being higher quality)",
"voxy.config.general.renderDistance": "Render distance",
"voxy.config.general.renderDistance.tooltip": "Render distance of voxy in chunks"
"voxy.config.general.renderDistance.tooltip": "Render distance of voxy in chunks",
"voxy.config.general.vanilla_fog": "Enable vanilla fog",
"voxy.config.general.vanilla_fog.tooltip": "Enables or disables vanilla fog effect"
}

View File

@@ -3,6 +3,7 @@
"package": "me.cortex.voxy.client.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"minecraft.MixinBackgroundRenderer",
"minecraft.MixinClientCommonNetworkHandler",
"minecraft.MixinClientLoginNetworkHandler",
"minecraft.MixinDebugHud",