Skip to content

Commit 64c8f77

Browse files
authored
Fix view bobbing affecting Tracers while using shaders (#5964)
1 parent c132763 commit 64c8f77

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
1010
import com.llamalad7.mixinextras.sugar.Local;
1111
import com.mojang.blaze3d.systems.RenderSystem;
12+
import meteordevelopment.meteorclient.MixinPlugin;
1213
import meteordevelopment.meteorclient.MeteorClient;
1314
import meteordevelopment.meteorclient.events.render.GetFovEvent;
1415
import meteordevelopment.meteorclient.events.render.Render3DEvent;
@@ -121,21 +122,25 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca
121122
if (depthRenderer == null) depthRenderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES_DEPTH, MeteorRenderPipelines.WORLD_COLORED_DEPTH);
122123
Render3DEvent event = Render3DEvent.get(matrixStack, renderer, depthRenderer, tickDelta, camera.getCameraPos().x, camera.getCameraPos().y, camera.getCameraPos().z);
123124

124-
// Call utility classes
125-
126-
RenderUtils.updateScreenCenter(projection, position);
127-
NametagUtils.onRender(position);
128-
129125
// Update model view matrix
130126

131127
RenderSystem.getModelViewStack().pushMatrix().mul(position);
132128

133129
matrices.push();
134130
tiltViewWhenHurt(matrices, camera.getLastTickProgress());
135-
if (client.options.getBobView().getValue()) bobView(matrices, camera.getLastTickProgress());
136-
RenderSystem.getModelViewStack().mul(matrices.peek().getPositionMatrix().invert());
131+
if (client.options.getBobView().getValue())
132+
bobView(matrices, camera.getLastTickProgress());
133+
134+
Matrix4f inverseBob = new Matrix4f(matrices.peek().getPositionMatrix()).invert();
135+
RenderSystem.getModelViewStack().mul(inverseBob);
137136
matrices.pop();
138137

138+
// Call utility classes (apply bob correction when Iris shaders are active)
139+
140+
Matrix4f correctedPosition = MixinPlugin.isIrisPresent && RenderUtils.isShaderPackInUse() ? new Matrix4f(position).mul(inverseBob) : position;
141+
RenderUtils.updateScreenCenter(projection, correctedPosition);
142+
NametagUtils.onRender(position);
143+
139144
// Render
140145

141146
renderer.begin();

src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import meteordevelopment.meteorclient.utils.misc.Pool;
1515
import meteordevelopment.meteorclient.utils.render.color.Color;
1616
import meteordevelopment.orbit.EventHandler;
17+
import net.irisshaders.iris.api.v0.IrisApi;
1718
import net.minecraft.client.gui.DrawContext;
1819
import net.minecraft.item.ItemStack;
1920
import net.minecraft.util.math.BlockPos;
@@ -41,6 +42,10 @@ public static void init() {
4142
MeteorClient.EVENT_BUS.subscribe(RenderUtils.class);
4243
}
4344

45+
public static boolean isShaderPackInUse() {
46+
return IrisApi.getInstance().isShaderPackInUse();
47+
}
48+
4449
// Items
4550
public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, int y, float scale, boolean overlay, String countOverride, boolean disableGuiScale) {
4651
Matrix3x2fStack matrices = drawContext.getMatrices();
@@ -165,4 +170,3 @@ public void render(Render3DEvent event) {
165170
}
166171
}
167172
}
168-

0 commit comments

Comments
 (0)