From 085ec79c21531ac430dfd17e256ecf647ba2df5c Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sat, 3 Jan 2026 12:46:40 -0800 Subject: [PATCH] Set defaults once per TE pass instead of once per TE (#1213) --- .../client/render/SodiumWorldRenderer.java | 18 ++++++++++-------- .../coderbot/iris/layer/GbufferPrograms.java | 8 ++++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/SodiumWorldRenderer.java b/src/main/java/me/jellysquid/mods/sodium/client/render/SodiumWorldRenderer.java index 33d305fed..deed18275 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/render/SodiumWorldRenderer.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/render/SodiumWorldRenderer.java @@ -28,7 +28,6 @@ import me.jellysquid.mods.sodium.client.render.pipeline.context.ChunkRenderCache import me.jellysquid.mods.sodium.client.util.math.FrustumExtended; import me.jellysquid.mods.sodium.common.util.ListUtil; import net.coderbot.iris.block_rendering.BlockRenderingSettings; -import net.coderbot.iris.gl.shader.ProgramCreator; import net.coderbot.iris.layer.GbufferPrograms; import net.coderbot.iris.pipeline.ShadowRenderer; import net.coderbot.iris.shadows.ShadowRenderingState; @@ -52,7 +51,6 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.client.MinecraftForgeClient; import org.joml.Vector3d; -import org.lwjgl.opengl.GL20; import java.util.Set; @@ -361,10 +359,6 @@ public class SodiumWorldRenderer { if(Iris.enabled) { final Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); CapturedRenderingState.INSTANCE.setCurrentBlockEntity(Block.getIdFromBlock(block)); - GL20.glVertexAttrib2s(ProgramCreator.MC_ENTITY, (short)-1, (short)-1); - GL20.glVertexAttrib2f(ProgramCreator.MC_MID_TEX_COORD, 0.5f, 0.5f); - GL20.glVertexAttrib4f(ProgramCreator.AT_TANGENT, 1.0f, 0.0f, 0.0f, 1.0f); - GbufferPrograms.beginBlockEntities(); } TileEntityRendererDispatcher.instance.renderTileEntity(tileEntity, partialTicks); @@ -378,12 +372,16 @@ public class SodiumWorldRenderer { finally { if(Iris.enabled) { CapturedRenderingState.INSTANCE.setCurrentBlockEntity(-1); - GbufferPrograms.endBlockEntities(); } } } - + public void renderTileEntities(EntityLivingBase entity, ICamera camera, float partialTicks) { + if (Iris.enabled) { + GbufferPrograms.beginBlockEntities(); + GbufferPrograms.setBlockEntityDefaults(); + } + final int pass = MinecraftForgeClient.getRenderPass(); for (TileEntity tileEntity : this.chunkRenderManager.getVisibleTileEntities()) { renderTE(tileEntity, pass, partialTicks); @@ -392,6 +390,10 @@ public class SodiumWorldRenderer { for (TileEntity tileEntity : this.globalTileEntities) { renderTE(tileEntity, pass, partialTicks); } + + if (Iris.enabled) { + GbufferPrograms.endBlockEntities(); + } } public void onChunkRenderUpdated(int x, int y, int z, ChunkRenderData meshBefore, ChunkRenderData meshAfter) { diff --git a/src/main/java/net/coderbot/iris/layer/GbufferPrograms.java b/src/main/java/net/coderbot/iris/layer/GbufferPrograms.java index fdde3525d..9b3671f8a 100644 --- a/src/main/java/net/coderbot/iris/layer/GbufferPrograms.java +++ b/src/main/java/net/coderbot/iris/layer/GbufferPrograms.java @@ -2,9 +2,11 @@ package net.coderbot.iris.layer; import net.coderbot.iris.Iris; import net.coderbot.iris.gbuffer_overrides.matching.SpecialCondition; +import net.coderbot.iris.gl.shader.ProgramCreator; import net.coderbot.iris.gl.state.StateUpdateNotifiers; import net.coderbot.iris.pipeline.WorldRenderingPhase; import net.coderbot.iris.pipeline.WorldRenderingPipeline; +import org.lwjgl.opengl.GL20; public class GbufferPrograms { private static boolean entities; @@ -64,6 +66,12 @@ public class GbufferPrograms { blockEntities = false; } + public static void setBlockEntityDefaults() { + GL20.glVertexAttrib2s(ProgramCreator.MC_ENTITY, (short)-1, (short)-1); + GL20.glVertexAttrib2f(ProgramCreator.MC_MID_TEX_COORD, 0.5f, 0.5f); + GL20.glVertexAttrib4f(ProgramCreator.AT_TANGENT, 1.0f, 0.0f, 0.0f, 1.0f); + } + public static WorldRenderingPhase getCurrentPhase() { final WorldRenderingPipeline pipeline = Iris.getPipelineManager().getPipelineNullable();