Mostly fix Iris transparent rendering for 1.21.6

This commit is contained in:
James Seibel
2025-06-28 08:37:18 -05:00
parent 75b3649a97
commit a50f13caa0
4 changed files with 26 additions and 57 deletions
@@ -284,6 +284,17 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
modelViewMatrix = McObjectConverter.Convert(renderContext.positionMatrix());
#endif
#if MC_VER < MC_1_21_6
// rendered in MixinLevelRenderer
#else
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(renderContext.world()),
ClientApi.RENDER_STATE.mcModelViewMatrix,
ClientApi.RENDER_STATE.mcProjectionMatrix,
ClientApi.RENDER_STATE.frameTime
);
#endif
this.clientApi.renderFade(
modelViewMatrix,
projectionMatrix,
@@ -31,12 +31,8 @@ import com.mojang.blaze3d.vertex.PoseStack;
import org.joml.Matrix4f;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
#else
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Camera;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.chunk.ChunkSectionsToRender;
import org.joml.Matrix4fc;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
#endif
@@ -60,17 +56,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.apache.logging.log4j.Logger;
/**
* This class is used to mix in my rendering code
* before Minecraft starts rendering blocks.
* If this wasn't done, and we used Forge's
* render last event, the LODs would render on top
* of the normal terrain.
*
* @author coolGi
* @author James Seibel
* @version 12-31-2021
*/
@Mixin(LevelRenderer.class)
public class MixinLevelRenderer
{
@@ -108,7 +94,7 @@ public class MixinLevelRenderer
private void renderChunkLayer(RenderType renderType, double x, double y, double z, Matrix4f projectionMatrix, Matrix4f frustumMatrix, CallbackInfo callback)
#else
@Inject(at = @At("HEAD"), method = "prepareChunkRenders", cancellable = true)
private void renderChunkLayer(Matrix4fc projectionMatrix, double d, double e, double f, CallbackInfoReturnable<ChunkSectionsToRender> callback)
private void prepareChunkRenders(Matrix4fc projectionMatrix, double d, double e, double f, CallbackInfoReturnable<ChunkSectionsToRender> callback)
#endif
{
#if MC_VER == MC_1_16_5
@@ -157,6 +143,8 @@ public class MixinLevelRenderer
ClientApi.RENDER_STATE.frameTime
);
}
#else
// rendering handled via Fabric Api render event
#endif
// FIXME completely disables rendering when sodium is installed
@@ -168,28 +156,4 @@ public class MixinLevelRenderer
#if MC_VER < MC_1_21_6
// formerly handled in renderChunkLayer()
#else
@Inject(at = @At("HEAD"), method = "renderBlockDestroyAnimation", cancellable = true)
private void renderBlockDestroyAnimation(PoseStack poseStack, Camera camera, MultiBufferSource.BufferSource bufferSource, CallbackInfo callback)
{
// only crash during development
if (ModInfo.IS_DEV_BUILD)
{
ClientApi.RENDER_STATE.canRenderOrThrow();
}
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level),
ClientApi.RENDER_STATE.mcModelViewMatrix,
ClientApi.RENDER_STATE.mcProjectionMatrix,
ClientApi.RENDER_STATE.frameTime
);
}
#endif
}
@@ -254,6 +254,17 @@ public class NeoforgeClientProxy implements AbstractModInitializer.IEventProxy
LOGGER.error("Unexpected error in afterLevelRenderEvent: "+e.getMessage(), e);
}
}
#if MC_VER < MC_1_21_6
#else
else if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS)
{
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper((ClientLevel)event.getLevel()),
ClientApi.RENDER_STATE.mcModelViewMatrix,
ClientApi.RENDER_STATE.mcProjectionMatrix,
ClientApi.RENDER_STATE.frameTime
);
}
#endif
}
@@ -199,23 +199,6 @@ public class MixinLevelRenderer
ClientApi.RENDER_STATE.frameTime);
}
@Inject(at = @At("HEAD"), method = "renderBlockDestroyAnimation", cancellable = true)
private void renderBlockDestroyAnimation(PoseStack poseStack, Camera camera, MultiBufferSource.BufferSource bufferSource, CallbackInfo callback)
{
// only crash during development
if (ModInfo.IS_DEV_BUILD)
{
ClientApi.RENDER_STATE.canRenderOrThrow();
}
ClientApi.INSTANCE.renderDeferredLodsForShaders(ClientLevelWrapper.getWrapper(this.level),
ClientApi.RENDER_STATE.mcModelViewMatrix,
ClientApi.RENDER_STATE.mcProjectionMatrix,
ClientApi.RENDER_STATE.frameTime
);
}
#endif