Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Блюр 1.21.1 optifine mcp

  • Автор темы Автор темы dr3amq
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
6 Апр 2025
Сообщения
363
Реакции
4
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пытался на форумах и гитхабе найти утилки для блюра, но ниче толкового не нашел, прошу помощи у югейма
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
бля хз брат :sleepy::sleeping::screamcat::disappointed:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пытался на форумах и гитхабе найти утилки для блюра, но ниче толкового не нашел, прошу помощи у югейма
Могу показать как выглядит визуально он на 1.21.1
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пытался на форумах и гитхабе найти утилки для блюра, но ниче толкового не нашел, прошу помощи у югейма
Screen.class -> render background blur
В дефолт майне есть блюр на главном экране
 
взял из MCP 1.21.4, но думаю и под 1.21.1 подойдет.
RenderUtil.java:
Expand Collapse Copy
public static class Blur implements IMinecraft {
        private static final Supplier<RenderTarget> TEMP_FBO_SUPPLIER = Suppliers
                .memoize(() -> new MainTarget(1920, 1024, false));

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, float radius, float blurRadius, int color) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius, radius, radius, radius);
            shader.getUniform("Smoothness").set(1.f);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, Vector4f radius, float blurRadius, int color) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius.x, radius.y, radius.z, radius.w);
            shader.getUniform("Smoothness").set(1.f);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, float radius, float blurRadius, int color, float smoothness) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius, radius, radius, radius);
            shader.getUniform("Smoothness").set(smoothness);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, Vector4f radius, float blurRadius, int color, float smoothness) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius.x, radius.y, radius.z, radius.w);
            shader.getUniform("Smoothness").set(smoothness);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }
    }
Вставь в CoreShaders.java:
Expand Collapse Copy
    public static final ShaderProgram RENDERTYPE_BLUR = register("blur", DefaultVertexFormat.POSITION_COLOR);
Вставь в RenderType.java:
Expand Collapse Copy
    private static final RenderType.CompositeRenderType BLUR = create(
        "blur",
        DefaultVertexFormat.POSITION_COLOR,
        VertexFormat.Mode.QUADS,
        786432,
        RenderType.CompositeState.builder().setShaderState(RenderStateShard.RENDERTYPE_BLUR_SHADER).setTransparencyState(TRANSLUCENT_TRANSPARENCY).setDepthTestState(NO_DEPTH_TEST).setCullState(NO_CULL).createCompositeState(false)
    );

    public static RenderType blur() {
        return BLUR;
    }
Вставь в GameRenderer.java:
Expand Collapse Copy
    public void preloadUiShader(ResourceProvider pResourceProvider) {
        try {
            this.minecraft.getShaderManager().preloadForStartup(pResourceProvider, CoreShaders.RENDERTYPE_GUI, CoreShaders.RENDERTYPE_GUI_OVERLAY, CoreShaders.POSITION_TEX_COLOR, CoreShaders.RENDERTYPE_BLUR);
        } catch (IOException | ShaderManager.CompilationException shadermanager$compilationexception) {
            throw new RuntimeException("Could not preload shaders for loading UI", shadermanager$compilationexception);
        }
    }
это в assets/minecraft/shaders/core
ss
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
взял из MCP 1.21.4, но думаю и под 1.21.1 подойдет.
RenderUtil.java:
Expand Collapse Copy
public static class Blur implements IMinecraft {
        private static final Supplier<RenderTarget> TEMP_FBO_SUPPLIER = Suppliers
                .memoize(() -> new MainTarget(1920, 1024, false));

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, float radius, float blurRadius, int color) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius, radius, radius, radius);
            shader.getUniform("Smoothness").set(1.f);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, Vector4f radius, float blurRadius, int color) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius.x, radius.y, radius.z, radius.w);
            shader.getUniform("Smoothness").set(1.f);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, float radius, float blurRadius, int color, float smoothness) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius, radius, radius, radius);
            shader.getUniform("Smoothness").set(smoothness);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }

        public static void drawBlur(GuiGraphics guiGraphics, float x, float y, float width, float height, Vector4f radius, float blurRadius, int color, float smoothness) {
            RenderTarget MAIN_FBO = mc.getMainRenderTarget();
            RenderTarget fbo = TEMP_FBO_SUPPLIER.get();

            if (fbo.width != MAIN_FBO.width || fbo.height != MAIN_FBO.height) {
                fbo.resize(MAIN_FBO.width, MAIN_FBO.height);
            }

            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableCull();

            fbo.bindWrite(false);

            MAIN_FBO.blitToScreen(fbo.width, fbo.height);
            MAIN_FBO.bindWrite(false);

            RenderSystem.setShaderTexture(0, fbo.getColorTextureId());

            Matrix4f matrix4f = guiGraphics.pose.last().pose();
            CompiledShaderProgram shader = RenderSystem.setShader(CoreShaders.RENDERTYPE_BLUR);

            shader.getUniform("Size").set(width, height);
            shader.getUniform("Radius").set(radius.x, radius.y, radius.z, radius.w);
            shader.getUniform("Smoothness").set(smoothness);
            shader.getUniform("BlurRadius").set(blurRadius);

            BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

            builder.addVertex(matrix4f, x, y, 0).setColor(color);
            builder.addVertex(matrix4f, x, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y + height, 0).setColor(color);
            builder.addVertex(matrix4f, x + width, y, 0).setColor(color);

            tesselator.draw(builder);
            RenderSystem.setShaderTexture(0, 0);

            RenderSystem.enableCull();
            RenderSystem.disableBlend();
        }
    }
Вставь в CoreShaders.java:
Expand Collapse Copy
    public static final ShaderProgram RENDERTYPE_BLUR = register("blur", DefaultVertexFormat.POSITION_COLOR);
Вставь в RenderType.java:
Expand Collapse Copy
    private static final RenderType.CompositeRenderType BLUR = create(
        "blur",
        DefaultVertexFormat.POSITION_COLOR,
        VertexFormat.Mode.QUADS,
        786432,
        RenderType.CompositeState.builder().setShaderState(RenderStateShard.RENDERTYPE_BLUR_SHADER).setTransparencyState(TRANSLUCENT_TRANSPARENCY).setDepthTestState(NO_DEPTH_TEST).setCullState(NO_CULL).createCompositeState(false)
    );

    public static RenderType blur() {
        return BLUR;
    }
Вставь в GameRenderer.java:
Expand Collapse Copy
    public void preloadUiShader(ResourceProvider pResourceProvider) {
        try {
            this.minecraft.getShaderManager().preloadForStartup(pResourceProvider, CoreShaders.RENDERTYPE_GUI, CoreShaders.RENDERTYPE_GUI_OVERLAY, CoreShaders.POSITION_TEX_COLOR, CoreShaders.RENDERTYPE_BLUR);
        } catch (IOException | ShaderManager.CompilationException shadermanager$compilationexception) {
            throw new RuntimeException("Could not preload shaders for loading UI", shadermanager$compilationexception);
        }
    }
Пожалуйста, авторизуйтесь для просмотра ссылки.
в assets/minecraft/shaders/core
Пожалуйста, авторизуйтесь для просмотра ссылки.
милый человек, не затруднит вас дать мне замечательные CoreShader, ShaderProgram и CompiledShaderProgram? :3
 
Назад
Сверху Снизу