diff --git a/src/main/resources/mixins.render.replaymod.json b/src/main/resources/mixins.render.replaymod.json index f4042846..5e1fb886 100644 --- a/src/main/resources/mixins.render.replaymod.json +++ b/src/main/resources/mixins.render.replaymod.json @@ -17,6 +17,9 @@ //#if MC>=12100 //$$ "Mixin_FakeSystemTimeUniforms_Iris", //#endif + //#if MC>=12105 + //$$ "Mixin_FixCopyTextureToBuffer_DepthTexture", + //#endif "Mixin_ForceChunkLoading", "Mixin_HideNameTags", "Mixin_HideNameTags_LivingEntity", diff --git a/versions/1.21.5/src/main/java/com/replaymod/render/mixin/Mixin_FixCopyTextureToBuffer_DepthTexture.java b/versions/1.21.5/src/main/java/com/replaymod/render/mixin/Mixin_FixCopyTextureToBuffer_DepthTexture.java new file mode 100644 index 00000000..98614570 --- /dev/null +++ b/versions/1.21.5/src/main/java/com/replaymod/render/mixin/Mixin_FixCopyTextureToBuffer_DepthTexture.java @@ -0,0 +1,30 @@ +package com.replaymod.render.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.textures.GpuTexture; +import net.minecraft.client.gl.FramebufferManager; +import net.minecraft.client.gl.GlResourceManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(GlResourceManager.class) +public class Mixin_FixCopyTextureToBuffer_DepthTexture { + @WrapOperation( + method = "copyTextureToBuffer(Lcom/mojang/blaze3d/textures/GpuTexture;Lcom/mojang/blaze3d/buffers/GpuBuffer;ILjava/lang/Runnable;IIIII)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gl/FramebufferManager;setupFramebuffer(IIIII)V") + ) + private void setupFramebuffer( + FramebufferManager instance, + int framebuffer, int colorAttachment, int depthAttachment, int mipLevel, int bindTarget, + Operation original, + @Local(argsOnly = true) GpuTexture texture + ) { + if (depthAttachment == 0 && texture.getFormat().hasDepthAspect()) { + depthAttachment = colorAttachment; + colorAttachment = 0; + } + original.call(instance, framebuffer, colorAttachment, depthAttachment, mipLevel, bindTarget); + } +}