Skip to content

Commit 031ce0e

Browse files
authored
various esp fixes & refactors (#5970)
1 parent 97b481f commit 031ce0e

10 files changed

Lines changed: 53 additions & 70 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ boolean fillEntityRenderStatesIsRenderingReady(boolean original) {
192192

193193
@Inject(method = "method_62214", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/OutlineVertexConsumerProvider;draw()V"))
194194
private void onRender(CallbackInfo ci) {
195-
PostProcessShaders.endRender();
195+
PostProcessShaders.submitEntityVertices();
196196
}
197197

198198
@Inject(method = "onResized", at = @At("HEAD"))

src/main/java/meteordevelopment/meteorclient/systems/modules/render/Chams.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
package meteordevelopment.meteorclient.systems.modules.render;
77

88
import meteordevelopment.meteorclient.MeteorClient;
9-
import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines;
109
import meteordevelopment.meteorclient.settings.*;
1110
import meteordevelopment.meteorclient.systems.modules.Categories;
1211
import meteordevelopment.meteorclient.systems.modules.Module;
1312
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
14-
import meteordevelopment.meteorclient.utils.render.postprocess.PostProcessShaders;
1513
import net.minecraft.entity.Entity;
1614
import net.minecraft.entity.EntityType;
1715
import net.minecraft.util.Identifier;
@@ -37,8 +35,6 @@ public class Chams extends Module {
3735
.name("shader")
3836
.description("Renders a shader over of the entities.")
3937
.defaultValue(Shader.Image)
40-
.onModuleActivated(setting -> updateShader(setting.get()))
41-
.onChanged(this::updateShader)
4238
.build()
4339
);
4440

@@ -190,11 +186,6 @@ public boolean isShader() {
190186
return isActive() && shader.get() != Shader.None;
191187
}
192188

193-
public void updateShader(Shader value) {
194-
if (value == Shader.None) return;
195-
PostProcessShaders.CHAMS.init(MeteorRenderPipelines.POST_IMAGE);
196-
}
197-
198189
public enum Shader {
199190
Image,
200191
None

src/main/java/meteordevelopment/meteorclient/systems/modules/render/ESP.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ public Color getColor(Entity entity) {
378378
}
379379

380380
private double getFadeAlpha(Entity entity) {
381-
double dist = PlayerUtils.squaredDistanceToCamera(entity.getX() + entity.getWidth() / 2, entity.getY() + entity.getEyeHeight(entity.getPose()), entity.getZ() + entity.getWidth() / 2);
381+
double dist = PlayerUtils.squaredDistanceToCamera(entity.getX(), entity.getY() + entity.getEyeHeight(entity.getPose()), entity.getZ());
382382
double fadeDist = Math.pow(fadeDistance.get(), 2);
383383
double alpha = 1;
384384
if (dist <= fadeDist * fadeDist) alpha = (float) (Math.sqrt(dist) / fadeDist);

src/main/java/meteordevelopment/meteorclient/systems/modules/render/StorageESP.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import meteordevelopment.meteorclient.utils.render.SimpleBlockRenderer;
2626
import meteordevelopment.meteorclient.utils.render.color.Color;
2727
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
28+
import meteordevelopment.meteorclient.utils.render.postprocess.PostProcessShader;
2829
import meteordevelopment.meteorclient.utils.render.postprocess.PostProcessShaders;
2930
import meteordevelopment.meteorclient.utils.world.Dir;
3031
import meteordevelopment.orbit.EventHandler;
@@ -297,13 +298,14 @@ private void onRender(Render3DEvent event) {
297298
}
298299

299300
if (mode.get() == Mode.Shader && count > 0) {
300-
PostProcessShaders.STORAGE_OUTLINE.endRender(() -> MeshRenderer.begin()
301-
.attachments(mc.getFramebuffer())
301+
MeshRenderer.begin()
302+
.attachments(PostProcessShaders.STORAGE_OUTLINE.framebuffer)
302303
.clearColor(Color.CLEAR)
303304
.pipeline(MeteorRenderPipelines.WORLD_COLORED)
304305
.mesh(mesh, event.matrices)
305-
.end()
306-
);
306+
.end();
307+
308+
PostProcessShaders.STORAGE_OUTLINE.render();
307309
}
308310
}
309311

src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/ChamsShader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.MeteorClient;
1414
import meteordevelopment.meteorclient.events.game.ResourcePacksReloadedEvent;
1515
import meteordevelopment.meteorclient.renderer.MeshRenderer;
16+
import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines;
1617
import meteordevelopment.meteorclient.renderer.Texture;
1718
import meteordevelopment.meteorclient.systems.modules.Modules;
1819
import meteordevelopment.meteorclient.systems.modules.render.Chams;
@@ -39,6 +40,7 @@ public class ChamsShader extends EntityShader {
3940
private static Chams chams;
4041

4142
public ChamsShader() {
43+
super(MeteorRenderPipelines.POST_IMAGE);
4244
MeteorClient.EVENT_BUS.subscribe(ChamsShader.class);
4345
}
4446

src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/EntityOutlineShader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class EntityOutlineShader extends EntityShader {
1010
private static ESP esp;
1111

1212
public EntityOutlineShader() {
13-
init(MeteorRenderPipelines.POST_OUTLINE);
13+
super(MeteorRenderPipelines.POST_OUTLINE);
1414
}
1515

1616
@Override
Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
package meteordevelopment.meteorclient.utils.render.postprocess;
22

3-
import com.mojang.blaze3d.systems.RenderSystem;
3+
import com.mojang.blaze3d.pipeline.RenderPipeline;
44
import meteordevelopment.meteorclient.mixininterface.IWorldRenderer;
5-
6-
import java.util.OptionalInt;
5+
import meteordevelopment.meteorclient.utils.render.CustomOutlineVertexConsumerProvider;
6+
import net.minecraft.entity.Entity;
77

88
import static meteordevelopment.meteorclient.MeteorClient.mc;
99

1010
public abstract class EntityShader extends PostProcessShader {
11-
@Override
12-
public boolean beginRender() {
13-
if (super.beginRender()) {
14-
RenderSystem.getDevice().createCommandEncoder().clearColorTexture(framebuffer.getColorAttachment(), 0);
15-
return true;
16-
}
11+
public final CustomOutlineVertexConsumerProvider vertexConsumerProvider;
1712

18-
return false;
13+
protected EntityShader(RenderPipeline pipeline) {
14+
super(pipeline);
15+
this.vertexConsumerProvider = new CustomOutlineVertexConsumerProvider();
1916
}
2017

18+
public abstract boolean shouldDraw(Entity entity);
19+
2120
@Override
2221
protected void preDraw() {
2322
((IWorldRenderer) mc.worldRenderer).meteor$pushEntityOutlineFramebuffer(framebuffer);
@@ -28,7 +27,7 @@ protected void postDraw() {
2827
((IWorldRenderer) mc.worldRenderer).meteor$popEntityOutlineFramebuffer();
2928
}
3029

31-
public void endRender() {
32-
endRender(() -> vertexConsumerProvider.draw());
30+
public void submitVertices() {
31+
submitVertices(vertexConsumerProvider::draw);
3332
}
3433
}

src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShader.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,47 +7,47 @@
77
import com.mojang.blaze3d.textures.FilterMode;
88
import meteordevelopment.meteorclient.MeteorClient;
99
import meteordevelopment.meteorclient.renderer.MeshRenderer;
10-
import meteordevelopment.meteorclient.utils.render.CustomOutlineVertexConsumerProvider;
1110
import net.minecraft.client.gl.DynamicUniformStorage;
1211
import net.minecraft.client.gl.Framebuffer;
1312
import net.minecraft.client.gl.SimpleFramebuffer;
14-
import net.minecraft.entity.Entity;
1513

1614
import java.nio.ByteBuffer;
1715

1816
import static meteordevelopment.meteorclient.MeteorClient.mc;
1917
import static org.lwjgl.glfw.GLFW.glfwGetTime;
2018

2119
public abstract class PostProcessShader {
22-
public CustomOutlineVertexConsumerProvider vertexConsumerProvider;
23-
public Framebuffer framebuffer;
24-
protected RenderPipeline pipeline;
25-
26-
public void init(RenderPipeline pipeline) {
27-
if (vertexConsumerProvider == null) vertexConsumerProvider = new CustomOutlineVertexConsumerProvider();
28-
if (framebuffer == null) framebuffer = new SimpleFramebuffer(MeteorClient.NAME + " PostProcessShader", mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight(), true);
20+
protected final RenderPipeline pipeline;
21+
public final Framebuffer framebuffer;
2922

23+
protected PostProcessShader(RenderPipeline pipeline) {
3024
this.pipeline = pipeline;
25+
this.framebuffer = new SimpleFramebuffer(MeteorClient.NAME + " PostProcessShader " + this.getClass().getSimpleName(), mc.getWindow().getFramebufferWidth(), mc.getWindow().getFramebufferHeight(), true);
3126
}
3227

3328
protected abstract boolean shouldDraw();
34-
public abstract boolean shouldDraw(Entity entity);
3529

3630
protected void preDraw() {}
3731
protected void postDraw() {}
3832

3933
protected abstract void setupPass(MeshRenderer renderer);
4034

41-
public boolean beginRender() {
42-
return shouldDraw();
35+
public void clearTexture() {
36+
if (this.shouldDraw()) {
37+
RenderSystem.getDevice().createCommandEncoder().clearColorTexture(framebuffer.getColorAttachment(), 0);
38+
}
4339
}
4440

45-
public void endRender(Runnable draw) {
41+
public void submitVertices(Runnable draw) {
4642
if (!shouldDraw()) return;
4743

4844
preDraw();
4945
draw.run();
5046
postDraw();
47+
}
48+
49+
public void render() {
50+
if (!shouldDraw()) return;
5151

5252
var renderer = MeshRenderer.begin()
5353
.attachments(mc.getFramebuffer())

src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShaders.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package meteordevelopment.meteorclient.utils.render.postprocess;
22

3+
import meteordevelopment.meteorclient.MeteorClient;
4+
import meteordevelopment.meteorclient.events.render.Render2DEvent;
35
import meteordevelopment.meteorclient.utils.PreInit;
6+
import meteordevelopment.orbit.EventHandler;
47

58
import static meteordevelopment.meteorclient.MeteorClient.mc;
69

@@ -16,17 +19,25 @@ public static void init() {
1619
CHAMS = new ChamsShader();
1720
ENTITY_OUTLINE = new EntityOutlineShader();
1821
STORAGE_OUTLINE = new StorageOutlineShader();
22+
23+
MeteorClient.EVENT_BUS.subscribe(PostProcessShaders.class);
1924
}
2025

2126
public static void beginRender() {
22-
CHAMS.beginRender();
23-
ENTITY_OUTLINE.beginRender();
24-
STORAGE_OUTLINE.beginRender();
27+
CHAMS.clearTexture();
28+
ENTITY_OUTLINE.clearTexture();
29+
STORAGE_OUTLINE.clearTexture();
30+
}
31+
32+
public static void submitEntityVertices() {
33+
CHAMS.submitVertices();
34+
ENTITY_OUTLINE.submitVertices();
2535
}
2636

27-
public static void endRender() {
28-
CHAMS.endRender();
29-
ENTITY_OUTLINE.endRender();
37+
@EventHandler
38+
private static void onRender(Render2DEvent event) {
39+
CHAMS.render();
40+
ENTITY_OUTLINE.render();
3041
}
3142

3243
public static void onResized(int width, int height) {

src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/StorageOutlineShader.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,15 @@
11
package meteordevelopment.meteorclient.utils.render.postprocess;
22

3-
import meteordevelopment.meteorclient.mixininterface.IMinecraftClient;
43
import meteordevelopment.meteorclient.renderer.MeshRenderer;
54
import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines;
65
import meteordevelopment.meteorclient.systems.modules.Modules;
76
import meteordevelopment.meteorclient.systems.modules.render.StorageESP;
8-
import net.minecraft.client.MinecraftClient;
9-
import net.minecraft.client.gl.Framebuffer;
10-
import net.minecraft.entity.Entity;
117

128
public class StorageOutlineShader extends PostProcessShader {
139
private static StorageESP storageESP;
14-
private Framebuffer mcFramebuffer;
1510

1611
public StorageOutlineShader() {
17-
init(MeteorRenderPipelines.POST_OUTLINE);
18-
}
19-
20-
@Override
21-
protected void preDraw() {
22-
mcFramebuffer = MinecraftClient.getInstance().getFramebuffer();
23-
((IMinecraftClient) MinecraftClient.getInstance()).meteor$setFramebuffer(framebuffer);
24-
}
25-
26-
@Override
27-
protected void postDraw() {
28-
((IMinecraftClient) MinecraftClient.getInstance()).meteor$setFramebuffer(mcFramebuffer);
29-
mcFramebuffer = null;
12+
super(MeteorRenderPipelines.POST_OUTLINE);
3013
}
3114

3215
@Override
@@ -35,11 +18,6 @@ protected boolean shouldDraw() {
3518
return storageESP.isShader();
3619
}
3720

38-
@Override
39-
public boolean shouldDraw(Entity entity) {
40-
return true;
41-
}
42-
4321
@Override
4422
protected void setupPass(MeshRenderer renderer) {
4523
renderer.uniform("OutlineData", OutlineUniforms.write(

0 commit comments

Comments
 (0)