[Решено] Некорректная работа Framebuffer

Версия Minecraft
1.12.2
API
Forge
2
1
0
Хочу добавить размытие по гауссу для симуляции свечения объектов, для этого я решил использовать Framebuffer.
Реализовал размытие и казалось бы проблем должно и не быть

1671311910247.png

Однако, когда я пытаюсь перенести глубину из майнкрафт фреймбуфера, чтобы светящиеся объекты не торчали сквозь стены, возникают сильные графические артефакты:
1671312095928.png

Java:
        GL11.glColor4f(1f, 1f, 1f,1f);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        int current = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);

        if(mcCopiedTexture == -1) {
            mcCopiedTexture = glGenTextures();
            glBindTexture(GL11.GL_TEXTURE_2D, mcCopiedTexture);
            GL13.glActiveTexture(GL13.GL_TEXTURE0);
            glTexParameteri(GL11.GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            glTexParameteri(GL11.GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
            glTexParameteri(GL11.GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
            glTexParameteri(GL11.GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);
        }
        if (framebuffer == null)
            framebuffer = new Framebuffer(mc.displayWidth, mc.displayHeight, true);
        if (mc.displayWidth != framebuffer.framebufferWidth
                || mc.displayHeight != framebuffer.framebufferHeight)
            framebuffer.createBindFramebuffer(mc.displayWidth, mc.displayHeight);
        framebuffer.bindFramebuffer(false);
        GL11.glBindTexture(GL_TEXTURE_2D, mcCopiedTexture);
        glCopyTexImage2D(GL_TEXTURE_2D,
                0, GL_RGBA, 0, 0,
                mc.getFramebuffer().framebufferTextureWidth,
                mc.getFramebuffer().framebufferTextureHeight, 0);
        GL30.glBindFramebuffer(GL_READ_FRAMEBUFFER, mc.getFramebuffer().framebufferObject);
        //этот метод и вызывает ошибку
        GL30.glBlitFramebuffer(0, 0,
                mc.displayWidth, mc.displayHeight,
                0, 0,
                mc.displayWidth, mc.displayHeight,
                GL_DEPTH_BUFFER_BIT,
                GL_NEAREST);
        GL11.glPushMatrix();
        GL11.glBindTexture(GL_TEXTURE_2D, 0);
        GlStateManager.color(0.5f,0.5f,1);
        GL11.glTranslated(-Particle.interpPosX, -Particle.interpPosY, -Particle.interpPosZ);
        GL11.glTranslatef(0, 3, 0);
        GL11.glTranslatef(0, 0, 0.01f);
        drawQuad();
        GL11.glPopMatrix();

        GL13.glActiveTexture(GL13.GL_TEXTURE3);
        GL11.glBindTexture(GL_TEXTURE_2D, mcCopiedTexture);
        GL13.glActiveTexture(GL13.GL_TEXTURE0);

        BlurShader blurShader = BlurShader.getInstance();
        blurShader.start();
        blurShader.loadHorizontal(false);
        blurShader.loadHeight(mc.displayHeight);
        blurShader.loadWidth(mc.displayWidth);
        blurShader.loadImage(0);
        blurShader.loadImageBack(3);

        mc.getFramebuffer().bindFramebuffer(false);
        GL11.glPushMatrix();
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, framebuffer.framebufferTexture);
        GL11.glMatrixMode(GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glMatrixMode(GL_MODELVIEW);
        GL11.glLoadIdentity();
        drawQuad();
        GL11.glPopMatrix();
        blurShader.stop();

        framebuffer.framebufferClear();
        mc.getFramebuffer().bindFramebuffer(false);

        glBindTexture(GL_TEXTURE_2D, current);

Просидел часов 6, так и не понял в чем проблема, если что изучал работу фреймбуфера по гайду: https://forum.mcmodding.ru/resources/framebuffer-nachalo.183/
 
Сверху