Начинающий
- Статус
- Оффлайн
- Регистрация
- 10 Дек 2022
- Сообщения
- 350
- Реакции
- 3
Вот лог ошибки:
Шейдер взял с еваваре для ShaderESP (шейдер свечения)
Коды:
D_OPERATION error generated. <program> object is not successfully linked, or is not a program object.)
java.lang.Exception: Stack trace
at org.lwjgl.opengl.GL20C.nglGetUniformLocation(Native Method) ~[lwjgl-opengl-3.2.2.jar:build 10]
at org.lwjgl.opengl.GL20C.glGetUniformLocation(GL20C.java:997) [lwjgl-opengl-3.2.2.jar:build 10]
at org.lwjgl.opengl.GL20.glGetUniformLocation(GL20.java:1035) [lwjgl-opengl-3.2.2.jar:build 10]
at im.expensive.utils.shader.ShaderUtil.setUniformi(ShaderUtil.java:195) [client/:?]
at im.expensive.functions.impl.render.ShaderESP.patch(ShaderESP.java:85) [client/:?]
at im.expensive.functions.impl.render.ShaderESP.onRender3D(ShaderESP.java:104) [client/:?]
at jdk.internal.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [guava-21.0.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [guava-21.0.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [guava-21.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [guava-21.0.jar:?]
at net.minecraft.client.renderer.WorldRenderer.updateCameraAndRender(WorldRenderer.java:1954) [client/:?]
at net.minecraft.client.renderer.GameRenderer.renderWorld(GameRenderer.java:959) [client/:?]
at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:669) [client/:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:974) [client/:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:565) [client/:?]
at net.minecraft.client.main.Main.main(Main.java:191) [client/:?]
at Start.main(Start.java:11) [client/:?]
Шейдер взял с еваваре для ShaderESP (шейдер свечения)
Коды:
ShaderUtil.java (Не полный код):
public void setUniformi(String name, int... args) {
int loc = glGetUniformLocation(programID, name);
switch (args.length) {
case 1 -> glUniform1i(loc, args[0]);
case 2 -> glUniform2i(loc, args[0], args[1]);
case 3 -> glUniform3i(loc, args[0], args[1], args[2]);
case 4 -> glUniform4i(loc, args[0], args[1], args[2], args[3]);
}
}
//Код не полный, если нужно полный, пишите
ShaderESP.java:
package im.expensive.functions.impl.render;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.events.EventPreRender3D;
import im.expensive.events.EventDisplay;
import im.expensive.ui.themes.Theme;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.ProjectionUtils;
import im.expensive.utils.render.shaderforesp.ESPShader;
import im.expensive.utils.render.shaderforesp.OutlineShader;
import im.expensive.utils.CustomFramebuffer;
import im.expensive.utils.shader.ShaderUtil;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.settings.PointOfView;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.vector.Vector3d;
import org.joml.Vector2d;
@FunctionRegister(name = "ShaderESP", type = Category.Render)
public class ShaderESP extends Function {
private final ShaderUtil gradient = new ShaderUtil("gradient");
private final CustomFramebuffer buffer = new CustomFramebuffer(true);
private final ESPShader bloom = new ESPShader();
private final BooleanSetting glowEnabled = new BooleanSetting("Свечение", true);
private final SliderSetting glow = new SliderSetting("Сила", 6, 1, 10, 1).setVisible(() -> glowEnabled.get());
private final SliderSetting outline = new SliderSetting("Обводка", 1, 1, 3, 1);
private static final float MAX_DISTANCE = 128;
public ShaderESP() {
addSettings(glowEnabled, glow, outline);
}
public Vector3d[] getCorners(AxisAlignedBB AABB) {
return new Vector3d[]{
new Vector3d(AABB.minX, AABB.minY, AABB.minZ),
new Vector3d(AABB.minX, AABB.minY, AABB.maxZ),
new Vector3d(AABB.minX, AABB.maxY, AABB.minZ),
new Vector3d(AABB.minX, AABB.maxY, AABB.maxZ),
new Vector3d(AABB.maxX, AABB.minY, AABB.minZ),
new Vector3d(AABB.maxX, AABB.minY, AABB.maxZ),
new Vector3d(AABB.maxX, AABB.maxY, AABB.minZ),
new Vector3d(AABB.maxX, AABB.maxY, AABB.maxZ)
};
}
public void patch(PlayerEntity entity, Runnable runnable) {
float[] color = ColorUtils.getRGBAf(Theme.getColor(1, 0));
Vector3d interpolated = entity.getPositionVec().subtract(entity.getPositionVec(mc.getRenderPartialTicks()));
AxisAlignedBB AABB = entity.getBoundingBox().offset(interpolated.inverse().add(interpolated.scale(mc.getRenderPartialTicks())));
Vector2d center = ProjectionUtils.project2D(AABB.getCenter());
if (center == null) return;
double minX = center.x, minY = center.y, maxX = center.x, maxY = center.y;
for (Vector3d corner : getCorners(AABB)) {
Vector2d vec = ProjectionUtils.project2D(corner);
if (vec != null) {
minX = Math.min(minX, vec.x);
minY = Math.min(minY, vec.y);
maxX = Math.max(maxX, vec.x);
maxY = Math.max(maxY, vec.y);
}
}
double posX = minX, posY = minY, width = maxX - minX, height = maxY - minY;
MainWindow mw = mc.getMainWindow();
gradient.attach();
gradient.setUniformf("location", (float) (posX * mw.getScaleFactor()), (float) ((mw.getHeight() - (height * mw.getScaleFactor())) - (posY * mw.getScaleFactor())));
gradient.setUniformf("rectSize", (float) (width * mw.getScaleFactor()), (float) (height * mw.getScaleFactor()));
gradient.setUniformi("tex", 0);
for (int i = 1; i <= 4; i++) {
gradient.setUniformf("color" + i, color);
}
runnable.run();
gradient.detach();
}
[USER=1474073]@Subscribe[/USER]
public void onRender3D(EventPreRender3D e) {
MatrixStack stack = e.getMatrix();
buffer.setup(false);
for (PlayerEntity entity : mc.world.getPlayers()) {
if (entity instanceof ClientPlayerEntity && mc.gameSettings.getPointOfView() == PointOfView.FIRST_PERSON || mc.player.getDistance(entity) > MAX_DISTANCE)
continue;
patch(entity, () -> {
EntityRendererManager rendererManager = mc.getRenderManager();
stack.push();
stack.translate(-rendererManager.renderPosX(), -rendererManager.renderPosY(), -rendererManager.renderPosZ());
GlStateManager.depthMask(true);
rendererManager.setRenderShadow(false);
rendererManager.setRenderName(false);
IRenderTypeBuffer.Impl irendertypebuffer$impl = mc.getRenderTypeBuffers().getBufferSource();
Vector3d pos = entity.getPositionVec(e.getPartialTicks());
EntityRenderer<?> renderer = rendererManager.getRenderer(entity);
boolean nameVisible = renderer.isRenderName();
if (nameVisible) {
renderer.setRenderName(false);
}
rendererManager.renderEntityStaticGlow(entity, pos.getX(), pos.getY(), pos.getZ(), entity.rotationYaw, e.getPartialTicks(), stack, irendertypebuffer$impl, rendererManager.getPackedLight(entity, e.getPartialTicks()));
if (nameVisible) {
renderer.setRenderName(true);
}
irendertypebuffer$impl.finish();
rendererManager.setRenderName(true);
rendererManager.setRenderShadow(true);
GlStateManager.depthMask(false);
GlStateManager.enableDepthTest();
stack.pop();
});
}
buffer.stop();
}
[USER=1474073]@Subscribe[/USER]
public void onRender2D(EventDisplay e) {
OutlineShader.addTask2D(buffer::draw);
OutlineShader.draw(outline.get().intValue());
if (glowEnabled.get()) {
bloom.addTask2D(buffer::draw);
bloom.draw(Math.max(glow.get().intValue() / 2, 3), glow.get(), ESPShader.RenderType.DISPLAY, 2);
}
buffer.framebufferClear(false);
mc.getFramebuffer().bindFramebuffer(true);
}
}