From e373969b34384f8164160bd0e271cb0653624a2a Mon Sep 17 00:00:00 2001 From: coolGi Date: Sat, 18 Feb 2023 20:00:54 +1030 Subject: [PATCH] Added ability to change vanilla's lod bias --- coreSubProjects | 2 +- .../mixins/client/MixinTextureUtil.java | 27 +++++++++++++++++++ .../resources/DistantHorizons.mixins.json | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 fabric/src/main/java/com/seibel/lod/fabric/mixins/client/MixinTextureUtil.java diff --git a/coreSubProjects b/coreSubProjects index 49b345776..e695c1887 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 49b345776fa93a492c45223a0e1aca541e432c2f +Subproject commit e695c1887169c6685300047c61b334862ebc1b83 diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/client/MixinTextureUtil.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/client/MixinTextureUtil.java new file mode 100644 index 000000000..f144c1afe --- /dev/null +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/client/MixinTextureUtil.java @@ -0,0 +1,27 @@ +package com.seibel.lod.fabric.mixins.client; + +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.platform.TextureUtil; +import com.seibel.lod.core.config.Config; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +/** + * Sets Minecraft's LOD Bias (looks similar to mipmaps) + * + * @author coolGi + */ +@Mixin(TextureUtil.class) +public class MixinTextureUtil { + @Redirect(method = "Lcom/mojang/blaze3d/platform/TextureUtil;prepareImage(Lcom/mojang/blaze3d/platform/NativeImage$InternalGlFormat;IIII)V", + at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;_texParameter(IIF)V")) + private static void setLodBias(int target, int pname, float param) { + float biasValue = Config.Client.Graphics.AdvancedGraphics.lodBias.get().floatValue(); + if (biasValue != 0) { + // The target is GL11.GL_TEXTURE_2D + // And the pname is GL14.GL_TEXTURE_LOD_BIAS + GlStateManager._texParameter(target, pname, biasValue); + } + } +} diff --git a/fabric/src/main/resources/DistantHorizons.mixins.json b/fabric/src/main/resources/DistantHorizons.mixins.json index 23233091c..4113ef197 100644 --- a/fabric/src/main/resources/DistantHorizons.mixins.json +++ b/fabric/src/main/resources/DistantHorizons.mixins.json @@ -18,6 +18,7 @@ "client.MixinLightmap", "client.MixinOptionsScreen", "client.MixinMinecraft", + "client.MixinTextureUtil", "mods.sodium.MixinSodiumChunkRenderer" ], "injectors": {