From c283fc8a36816883474461f8cb3398715f9d8163 Mon Sep 17 00:00:00 2001 From: ZhuRuoLing Date: Mon, 25 May 2026 17:56:41 +0800 Subject: [PATCH] fix(rendering): try to fix bloom resize crash --- .../v2/rendering/bloom/BloomPostEffect.java | 1 + .../rendering/mixins/GameRendererMixin.java | 27 +++++++++++++++++++ .../v2/rendering/mixins/MinecraftMixin.java | 26 +++++++++--------- .../resources/anvillib_rendering.mixins.json | 3 ++- 4 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/GameRendererMixin.java diff --git a/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/bloom/BloomPostEffect.java b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/bloom/BloomPostEffect.java index 499799c6..17b031c6 100644 --- a/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/bloom/BloomPostEffect.java +++ b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/bloom/BloomPostEffect.java @@ -206,6 +206,7 @@ public void runBloomDraws(Matrix4fc modelViewMatrix, FeatureRenderDispatcher fea @SuppressWarnings("DataFlowIssue") public void process() { + if (!dirty) return; CommandEncoder commandEncoder = device.createCommandEncoder(); transformsUbo.upload(commandEncoder, transformUBO.slice()); diff --git a/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/GameRendererMixin.java b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/GameRendererMixin.java new file mode 100644 index 00000000..8d9be6bc --- /dev/null +++ b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/GameRendererMixin.java @@ -0,0 +1,27 @@ +package dev.anvilcraft.lib.v2.rendering.mixins; + +import dev.anvilcraft.lib.v2.rendering.ALRPostEffects; +import dev.anvilcraft.lib.v2.rendering.bloom.BloomPostEffect; +import net.minecraft.client.renderer.GameRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public class GameRendererMixin { + + @Inject( + method = "resize", + at = @At("HEAD") + ) + void onResize(int width, int height, CallbackInfo ci) { + BloomPostEffect bloomPostEffect = ALRPostEffects.getBloomPostEffect(); + if (bloomPostEffect != null) { + bloomPostEffect.resize( + width, + height + ); + } + } +} diff --git a/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/MinecraftMixin.java b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/MinecraftMixin.java index 19b6831b..a5fef7c7 100644 --- a/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/MinecraftMixin.java +++ b/module.rendering/src/main/java/dev/anvilcraft/lib/v2/rendering/mixins/MinecraftMixin.java @@ -30,19 +30,19 @@ private void onCreateInstance(GameConfig gameConfig, CallbackInfo ci) { ALRPostEffects.createPostEffects(); } - @Inject( - method = "resizeGui", - at = @At("RETURN") - ) - private void onResizeGui(CallbackInfo ci) { - BloomPostEffect bloomPostEffect = ALRPostEffects.getBloomPostEffect(); - if (bloomPostEffect != null) { - bloomPostEffect.resize( - this.window.getWidth(), - this.window.getHeight() - ); - } - } +// @Inject( +// method = "resizeGui", +// at = @At("RETURN") +// ) +// private void onResizeGui(CallbackInfo ci) { +// BloomPostEffect bloomPostEffect = ALRPostEffects.getBloomPostEffect(); +// if (bloomPostEffect != null) { +// bloomPostEffect.resize( +// this.window.getWidth(), +// this.window.getHeight() +// ); +// } +// } @Inject( method = "updateLevelInEngines(Lnet/minecraft/client/multiplayer/ClientLevel;Z)V", diff --git a/module.rendering/src/main/resources/anvillib_rendering.mixins.json b/module.rendering/src/main/resources/anvillib_rendering.mixins.json index 91ac3f83..88a32ab4 100644 --- a/module.rendering/src/main/resources/anvillib_rendering.mixins.json +++ b/module.rendering/src/main/resources/anvillib_rendering.mixins.json @@ -7,9 +7,10 @@ "mixins": [ ], "client": [ + "GameRendererMixin", "GuiGraphicsExtractorMixin", - "ItemStackRenderStateMixin", "GuiRendererMixin", + "ItemStackRenderStateMixin", "MinecraftMixin", "RenderTypeMixin" ],