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) { } } } -