Skip to content
This repository has been archived by the owner on May 12, 2024. It is now read-only.

Commit

Permalink
Fixed ESP culling
Browse files Browse the repository at this point in the history
  • Loading branch information
Luna5ama committed Sep 13, 2023
1 parent 1827fce commit 3a78e42
Show file tree
Hide file tree
Showing 17 changed files with 62 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import static org.lwjgl.opengl.GL20.glUseProgram;

@Mixin(value = EntityRenderer.class, priority = Integer.MAX_VALUE)
public class MixinEntityRenderer {
@Shadow
Expand All @@ -47,15 +49,15 @@ public void updateCameraAndRender(float partialTicks, long nanoTime, CallbackInf
GlStateUtils.INSTANCE.popMatrixAll();
GlStateUtils.INSTANCE.alpha(true);

GlStateUtils.INSTANCE.useProgramForce(0);
glUseProgram(0);
Wrapper.getMinecraft().profiler.endSection();
}

@Inject(method = "updateCameraAndRender", at = @At(value = "RETURN"))
public void updateCameraAndRender$Inject$RETURN(float partialTicks, long nanoTime, CallbackInfo ci) {
Wrapper.getMinecraft().profiler.endStartSection("trollNotification");
Notification.INSTANCE.render();
GlStateUtils.INSTANCE.useProgramForce(0);
glUseProgram(0);
}

@ModifyVariable(method = "orientCamera", at = @At(value = "STORE", ordinal = 0), ordinal = 0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import net.minecraftforge.fml.common.gameevent.InputEvent
import net.minecraftforge.fml.common.network.FMLNetworkEvent
import org.lwjgl.input.Keyboard
import org.lwjgl.input.Mouse
import org.lwjgl.opengl.GL20.glUseProgram
import java.util.*

@Suppress("UNUSED_PARAMETER")
Expand All @@ -43,7 +44,7 @@ internal object ForgeEventProcessor : ListenerOwner() {
prevWidth = mc.displayWidth
prevHeight = mc.displayHeight
ResolutionUpdateEvent(mc.displayWidth, mc.displayHeight).post()
GlStateUtils.useProgramForce(0)
glUseProgram(0)
}
}
}
Expand All @@ -54,7 +55,7 @@ internal object ForgeEventProcessor : ListenerOwner() {
RenderUtils3D.prepareGL()
Render3DEvent.post()
RenderUtils3D.releaseGL()
GlStateUtils.useProgramForce(0)
glUseProgram(0)
}

@SubscribeEvent
Expand Down
25 changes: 3 additions & 22 deletions src/main/kotlin/dev/luna5ama/trollhack/graphics/ESPRenderer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,14 @@ package dev.luna5ama.trollhack.graphics

import dev.luna5ama.trollhack.graphics.color.ColorRGB
import dev.luna5ama.trollhack.graphics.mask.EnumFacingMask
import dev.luna5ama.trollhack.util.Wrapper
import dev.luna5ama.trollhack.util.accessor.renderPosX
import dev.luna5ama.trollhack.util.accessor.renderPosY
import dev.luna5ama.trollhack.util.accessor.renderPosZ
import net.minecraft.client.renderer.GlStateManager
import net.minecraft.client.renderer.culling.Frustum
import net.minecraft.client.renderer.culling.ICamera
import net.minecraft.entity.Entity
import net.minecraft.util.math.AxisAlignedBB
import net.minecraft.util.math.BlockPos
import org.lwjgl.opengl.GL11.GL_LINES
import org.lwjgl.opengl.GL11.GL_QUADS

class ESPRenderer {
private val frustumCamera: ICamera = Frustum()
private var toRender0: MutableList<Info> = ArrayList()

val toRender: List<Info>
Expand Down Expand Up @@ -73,29 +66,19 @@ class ESPRenderer {
toRender0.clear()
}

fun render(clear: Boolean, cull: Boolean = true) {
fun render(clear: Boolean) {
val filled = aFilled != 0
val outline = aOutline != 0
val tracer = aTracer != 0
if (toRender0.isEmpty() || (!filled && !outline && !tracer)) return

if (cull) {
frustumCamera.setPosition(
Wrapper.minecraft.renderManager.renderPosX,
Wrapper.minecraft.renderManager.renderPosY,
Wrapper.minecraft.renderManager.renderPosZ
)
}

if (through) GlStateManager.disableDepth()
GlStateManager.glLineWidth(thickness)

if (filled) {
for ((box, color, sides) in toRender0) {
val a = (aFilled * (color.a / 255.0f)).toInt()
if (frustumCamera.isBoundingBoxInFrustum(box)) {
RenderUtils3D.drawBox(box, color.alpha(a), sides)
}
RenderUtils3D.drawBox(box, color.alpha(a), sides)
}
RenderUtils3D.draw(GL_QUADS)
}
Expand All @@ -104,9 +87,7 @@ class ESPRenderer {
if (outline) {
for ((box, color, _) in toRender0) {
val a = (aOutline * (color.a / 255.0f)).toInt()
if (frustumCamera.isBoundingBoxInFrustum(box)) {
RenderUtils3D.drawOutline(box, color.alpha(a))
}
RenderUtils3D.drawOutline(box, color.alpha(a))
}
}
if (tracer) {
Expand Down
14 changes: 0 additions & 14 deletions src/main/kotlin/dev/luna5ama/trollhack/graphics/GlStateUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,6 @@ object GlStateUtils {
private var lastScissor: Quad<Int, Int, Int, Int>? = null
private val scissorList = ArrayList<Quad<Int, Int, Int, Int>>()

private var bindProgram = 0

fun useProgramForce(id: Int) {
glUseProgram(id)
bindProgram = id
}

fun useProgram(id: Int) {
if (id != bindProgram) {
glUseProgram(id)
bindProgram = id
}
}

fun scissor(x: Int, y: Int, width: Int, height: Int) {
lastScissor = Quad(x, y, width, height)
glScissor(x, y, width, height)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import net.minecraft.client.renderer.GlStateManager
import net.minecraft.client.renderer.RenderHelper
import net.minecraft.item.ItemStack
import org.lwjgl.opengl.GL11.*
import org.lwjgl.opengl.GL20.glUseProgram
import org.lwjgl.opengl.GL30.glBindVertexArray
import kotlin.math.*

Expand All @@ -25,7 +26,7 @@ object RenderUtils2D {
var vertexSize = 0

fun drawItem(itemStack: ItemStack, x: Int, y: Int, text: String? = null, drawOverlay: Boolean = true) {
GlStateUtils.useProgram(0)
glUseProgram(0)
GlStateUtils.blend(true)
GlStateUtils.depth(true)
RenderHelper.enableGUIStandardItemLighting()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.luna5ama.trollhack.graphics.GlStateUtils
import dev.luna5ama.trollhack.graphics.color.ColorRGB
import dev.luna5ama.trollhack.graphics.color.ColorUtils
import dev.luna5ama.trollhack.module.modules.client.CustomFont
import org.lwjgl.opengl.GL20.glUseProgram
import java.awt.Font

object MainFontRenderer : IFontRenderer {
Expand Down Expand Up @@ -46,7 +47,7 @@ object MainFontRenderer : IFontRenderer {
GlStateUtils.alpha(false)
drawString(string, posX, posY - 1.0f, ColorRGB(ColorUtils.argbToRgba(adjustedColor)), scale, drawShadow)
GlStateUtils.alpha(true)
GlStateUtils.useProgramForce(0)
glUseProgram(0)
}

override fun drawString(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package dev.luna5ama.trollhack.graphics.shaders

import dev.luna5ama.trollhack.TrollHackMod
import dev.luna5ama.trollhack.graphics.GLObject
import dev.luna5ama.trollhack.graphics.GlStateUtils
import dev.luna5ama.trollhack.util.interfaces.Helper
import dev.luna5ama.trollhack.util.readText
import org.lwjgl.opengl.GL20.*
Expand Down Expand Up @@ -54,11 +53,11 @@ open class Shader(vertShaderPath: String, fragShaderPath: String) : GLObject, He
}

override fun bind() {
GlStateUtils.useProgram(id)
glUseProgram(id)
}

override fun unbind() {
GlStateUtils.useProgram(0)
glUseProgram(0)
}

override fun destroy() {
Expand All @@ -74,5 +73,5 @@ inline fun <T : Shader> T.use(block: T.() -> Unit) {

bind()
block.invoke(this)
GlStateUtils.useProgramForce(0)
glUseProgram(0)
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import net.minecraft.util.ResourceLocation
import org.lwjgl.input.Keyboard
import org.lwjgl.input.Mouse
import org.lwjgl.opengl.GL11.*
import org.lwjgl.opengl.GL20.glUseProgram
import org.lwjgl.opengl.GL32.GL_DEPTH_CLAMP

abstract class AbstractTrollGui : GuiScreen(), IListenerOwner by ListenerOwner(), IGuiScreen {
Expand Down Expand Up @@ -280,7 +281,7 @@ abstract class AbstractTrollGui : GuiScreen(), IListenerOwner by ListenerOwner()
mc.profiler.endSection()

mc.profiler.endSection()
GlStateUtils.useProgramForce(0)
glUseProgram(0)
}

private fun drawBackground(partialTicks: Float) {
Expand All @@ -292,7 +293,7 @@ abstract class AbstractTrollGui : GuiScreen(), IListenerOwner by ListenerOwner()
// Blur effect
if (GuiSetting.backGroundBlur > 0.0f) {
GlStateManager.pushMatrix()
GlStateUtils.useProgramForce(0)
glUseProgram(0)
blurShader.shader?.render(partialTicks)
mc.framebuffer.bindFramebuffer(true)
blurShader.getFrameBuffer("final")?.framebufferRenderExt(mc.displayWidth, mc.displayHeight, false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import net.minecraft.client.gui.inventory.GuiInventory
import net.minecraft.client.renderer.GlStateManager
import net.minecraft.util.math.MathHelper
import org.lwjgl.opengl.GL11.*
import org.lwjgl.opengl.GL20.glUseProgram

internal object PlayerModel : HudElement(
name = "Player Model",
Expand All @@ -31,11 +32,11 @@ internal object PlayerModel : HudElement(
val pitch = if (emulatePitch) interpolateAndWrap(player.prevRotationPitch, player.rotationPitch) else 0.0f

GlStateManager.pushMatrix()
GlStateManager.translate(renderWidth / scale / 2.0f, renderHeight / scale - 8.0f, 0.0f)
GlStateManager.translate(renderWidth / scale / 2.0f, renderHeight / scale - 8.0f, 0.0f)
GlStateUtils.depth(true)
glColor4f(1.0f, 1.0f, 1.0f, 1.0f)

GlStateUtils.useProgram(0)
glUseProgram(0)
GuiInventory.drawEntityOnScreen(0, 0, 35, -yaw, -pitch, player)

glColor4f(1.0f, 1.0f, 1.0f, 1.0f)
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/dev/luna5ama/trollhack/gui/mc/TrollGuiChat.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import dev.luna5ama.trollhack.command.CommandManager
import dev.luna5ama.trollhack.command.args.AbstractArg
import dev.luna5ama.trollhack.command.args.AutoComplete
import dev.luna5ama.trollhack.command.args.GreedyStringArg
import dev.luna5ama.trollhack.graphics.GlStateUtils
import dev.luna5ama.trollhack.graphics.RenderUtils2D
import dev.luna5ama.trollhack.graphics.color.ColorRGB
import dev.luna5ama.trollhack.graphics.shaders.WindowBlurShader
Expand All @@ -16,6 +15,7 @@ import kotlinx.coroutines.launch
import net.minecraft.client.gui.GuiChat
import org.lwjgl.input.Keyboard
import org.lwjgl.opengl.GL11.glEnable
import org.lwjgl.opengl.GL20.glUseProgram
import org.lwjgl.opengl.GL32.GL_DEPTH_CLAMP
import kotlin.math.min

Expand Down Expand Up @@ -184,7 +184,7 @@ class TrollGuiChat(
WindowBlurShader.render(2.0f, height - 14.0f, width - 2.0f, height - 2.0f)
RenderUtils2D.drawRectFilled(2.0f, height - 14.0f, width - 2.0f, height - 2.0f, ColorRGB(0, 0, 0, 128))

GlStateUtils.useProgramForce(0)
glUseProgram(0)

// Draw predict string
if (predictString.isNotBlank()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ import net.minecraft.util.EnumHand
import net.minecraft.util.math.AxisAlignedBB
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Vec3d
import java.util.*

internal object AutoHoleFill : Module(
name = "Auto Hole Fill",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ import dev.luna5ama.trollhack.util.math.VectorUtils
import dev.luna5ama.trollhack.util.math.vector.*
import dev.luna5ama.trollhack.util.pause.OffhandPause
import dev.luna5ama.trollhack.util.pause.withPause
import dev.luna5ama.trollhack.util.text.NoSpamMessage
import dev.luna5ama.trollhack.util.threads.ConcurrentScope
import dev.luna5ama.trollhack.util.threads.TimerScope
import dev.luna5ama.trollhack.util.threads.runSafe
Expand Down Expand Up @@ -926,7 +925,7 @@ internal object BedAura : Module(
}

RenderUtils3D.resetTranslation()
renderer.render(false, cull = false)
renderer.render(false)
RenderUtils3D.setTranslation(
-mc.renderManager.renderPosX,
-mc.renderManager.renderPosY,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import dev.luna5ama.trollhack.util.accessor.renderPosZ
import dev.luna5ama.trollhack.util.math.vector.distanceSqTo
import net.minecraft.client.renderer.GlStateManager
import net.minecraft.entity.item.EntityEnderCrystal
import org.lwjgl.opengl.GL20.glUseProgram

internal object CrystalChams : Module(
name = "Crystal Chams",
Expand Down Expand Up @@ -51,7 +52,7 @@ internal object CrystalChams : Module(

GlStateUtils.alpha(true)
GlStateManager.glLineWidth(width)
GlStateUtils.useProgram(0)
glUseProgram(0)

for (crystal in EntityManager.entity) {
if (crystal !is EntityEnderCrystal) continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Vec3d
import net.minecraft.world.EnumDifficulty
import org.lwjgl.opengl.GL11.*
import org.lwjgl.opengl.GL20.glUseProgram
import java.util.*
import kotlin.math.abs
import kotlin.math.max
Expand Down Expand Up @@ -532,7 +533,7 @@ internal object ZealotCrystalPlus : Module(
}
}

GlStateUtils.useProgram(0)
glUseProgram(0)
tessellator.draw()
buffer.setTranslation(0.0, 0.0, 0.0)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package dev.luna5ama.trollhack.module.modules.render

import dev.luna5ama.trollhack.graphics.GlStateUtils
import dev.luna5ama.trollhack.graphics.RenderUtils2D.drawRectFilled
import dev.luna5ama.trollhack.graphics.RenderUtils2D.drawRectOutline
import dev.luna5ama.trollhack.mixins.core.gui.MixinGuiScreen
Expand All @@ -15,6 +14,7 @@ import net.minecraft.item.ItemMap
import net.minecraft.item.ItemStack
import net.minecraft.util.ResourceLocation
import net.minecraft.world.storage.MapData
import org.lwjgl.opengl.GL20.glUseProgram
import java.awt.Color

/**
Expand Down Expand Up @@ -73,7 +73,7 @@ internal object MapPreview : Module(
bufBuilder.pos(135.0, -7.0, 0.0).tex(1.0, 0.0).endVertex()
bufBuilder.pos(-7.0, -7.0, 0.0).tex(0.0, 0.0).endVertex()

GlStateUtils.useProgram(0)
glUseProgram(0)
tessellator.draw()
}

Expand Down
Loading

0 comments on commit 3a78e42

Please sign in to comment.