From b5555b88a9e8249878ef8f8f5babb28ae26b8b48 Mon Sep 17 00:00:00 2001 From: noramibuu <50046813+noramibu@users.noreply.github.com> Date: Sun, 21 Dec 2025 04:18:11 +0300 Subject: [PATCH 1/3] fix view bobbing causing tracers jumping with Iris shaders --- .../meteorclient/mixin/GameRendererMixin.java | 19 ++++++++++++------- .../utils/render/RenderUtils.java | 6 +++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index a3a5b7b38d..e47e37756d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -9,6 +9,7 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; +import meteordevelopment.meteorclient.MixinPlugin; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.GetFovEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; @@ -121,21 +122,25 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca if (depthRenderer == null) depthRenderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES_DEPTH, MeteorRenderPipelines.WORLD_COLORED_DEPTH); Render3DEvent event = Render3DEvent.get(matrixStack, renderer, depthRenderer, tickDelta, camera.getCameraPos().x, camera.getCameraPos().y, camera.getCameraPos().z); - // Call utility classes - - RenderUtils.updateScreenCenter(projection, position); - NametagUtils.onRender(position); - // Update model view matrix RenderSystem.getModelViewStack().pushMatrix().mul(position); matrices.push(); tiltViewWhenHurt(matrices, camera.getLastTickProgress()); - if (client.options.getBobView().getValue()) bobView(matrices, camera.getLastTickProgress()); - RenderSystem.getModelViewStack().mul(matrices.peek().getPositionMatrix().invert()); + if (client.options.getBobView().getValue()) + bobView(matrices, camera.getLastTickProgress()); + + Matrix4f inverseBob = new Matrix4f(matrices.peek().getPositionMatrix()).invert(); + RenderSystem.getModelViewStack().mul(inverseBob); matrices.pop(); + // Call utility classes (apply bob correction when Iris shaders are active) + + Matrix4f correctedPosition = MixinPlugin.isIrisPresent && RenderUtils.isShaderPackInUse() ? new Matrix4f(position).mul(inverseBob) : position; + RenderUtils.updateScreenCenter(projection, correctedPosition); + NametagUtils.onRender(position); + // Render renderer.begin(); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java index d61036e51a..513cfa0eee 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java @@ -14,6 +14,7 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; +import net.irisshaders.iris.api.v0.IrisApi; import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; @@ -41,6 +42,10 @@ public static void init() { MeteorClient.EVENT_BUS.subscribe(RenderUtils.class); } + public static boolean isShaderPackInUse() { + return IrisApi.getInstance().isShaderPackInUse(); + } + // Items public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale, boolean overlay, String countOverride, boolean disableGuiScale) { Matrix3x2fStack matrices = drawContext.getMatrices(); @@ -165,4 +170,3 @@ public void render(Render3DEvent event) { } } } - From 448b0ab61a8761d40e32197d1c5e1a5980d4aaff Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 21 Dec 2025 17:09:07 +0000 Subject: [PATCH 2/3] refactor --- .../meteorclient/mixin/GameRendererMixin.java | 8 ++++---- .../meteorclient/utils/render/RenderUtils.java | 5 ----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index e47e37756d..a4f127c981 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -9,8 +9,8 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; -import meteordevelopment.meteorclient.MixinPlugin; import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.MixinPlugin; import meteordevelopment.meteorclient.events.render.GetFovEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.render.RenderAfterWorldEvent; @@ -27,6 +27,7 @@ import meteordevelopment.meteorclient.utils.render.CustomBannerGuiElementRenderer; import meteordevelopment.meteorclient.utils.render.NametagUtils; import meteordevelopment.meteorclient.utils.render.RenderUtils; +import net.irisshaders.iris.api.v0.IrisApi; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.render.GuiRenderer; @@ -128,8 +129,7 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca matrices.push(); tiltViewWhenHurt(matrices, camera.getLastTickProgress()); - if (client.options.getBobView().getValue()) - bobView(matrices, camera.getLastTickProgress()); + if (client.options.getBobView().getValue()) bobView(matrices, camera.getLastTickProgress()); Matrix4f inverseBob = new Matrix4f(matrices.peek().getPositionMatrix()).invert(); RenderSystem.getModelViewStack().mul(inverseBob); @@ -137,7 +137,7 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca // Call utility classes (apply bob correction when Iris shaders are active) - Matrix4f correctedPosition = MixinPlugin.isIrisPresent && RenderUtils.isShaderPackInUse() ? new Matrix4f(position).mul(inverseBob) : position; + Matrix4f correctedPosition = (MixinPlugin.isIrisPresent && IrisApi.getInstance().isShaderPackInUse()) ? new Matrix4f(position).mul(inverseBob) : position; RenderUtils.updateScreenCenter(projection, correctedPosition); NametagUtils.onRender(position); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java index 513cfa0eee..567206e6be 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java @@ -14,7 +14,6 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; -import net.irisshaders.iris.api.v0.IrisApi; import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; @@ -42,10 +41,6 @@ public static void init() { MeteorClient.EVENT_BUS.subscribe(RenderUtils.class); } - public static boolean isShaderPackInUse() { - return IrisApi.getInstance().isShaderPackInUse(); - } - // Items public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale, boolean overlay, String countOverride, boolean disableGuiScale) { Matrix3x2fStack matrices = drawContext.getMatrices(); From 6beabf4a0bf83a1d803ce9354f07e823ebc758bd Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 21 Dec 2025 18:53:00 +0000 Subject: [PATCH 3/3] Revert "refactor" This reverts commit 448b0ab61a8761d40e32197d1c5e1a5980d4aaff. --- .../meteorclient/mixin/GameRendererMixin.java | 8 ++++---- .../meteorclient/utils/render/RenderUtils.java | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index a4f127c981..e47e37756d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -9,8 +9,8 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; -import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.MixinPlugin; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.GetFovEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.render.RenderAfterWorldEvent; @@ -27,7 +27,6 @@ import meteordevelopment.meteorclient.utils.render.CustomBannerGuiElementRenderer; import meteordevelopment.meteorclient.utils.render.NametagUtils; import meteordevelopment.meteorclient.utils.render.RenderUtils; -import net.irisshaders.iris.api.v0.IrisApi; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.render.GuiRenderer; @@ -129,7 +128,8 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca matrices.push(); tiltViewWhenHurt(matrices, camera.getLastTickProgress()); - if (client.options.getBobView().getValue()) bobView(matrices, camera.getLastTickProgress()); + if (client.options.getBobView().getValue()) + bobView(matrices, camera.getLastTickProgress()); Matrix4f inverseBob = new Matrix4f(matrices.peek().getPositionMatrix()).invert(); RenderSystem.getModelViewStack().mul(inverseBob); @@ -137,7 +137,7 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca // Call utility classes (apply bob correction when Iris shaders are active) - Matrix4f correctedPosition = (MixinPlugin.isIrisPresent && IrisApi.getInstance().isShaderPackInUse()) ? new Matrix4f(position).mul(inverseBob) : position; + Matrix4f correctedPosition = MixinPlugin.isIrisPresent && RenderUtils.isShaderPackInUse() ? new Matrix4f(position).mul(inverseBob) : position; RenderUtils.updateScreenCenter(projection, correctedPosition); NametagUtils.onRender(position); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java index 567206e6be..513cfa0eee 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java @@ -14,6 +14,7 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; +import net.irisshaders.iris.api.v0.IrisApi; import net.minecraft.client.gui.DrawContext; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; @@ -41,6 +42,10 @@ public static void init() { MeteorClient.EVENT_BUS.subscribe(RenderUtils.class); } + public static boolean isShaderPackInUse() { + return IrisApi.getInstance().isShaderPackInUse(); + } + // Items public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale, boolean overlay, String countOverride, boolean disableGuiScale) { Matrix3x2fStack matrices = drawContext.getMatrices();