Set defaults once per TE pass instead of once per TE (#1213)

This commit is contained in:
Jason Mitchell authored and GitHub committed 2026-01-03 12:46:40 -08:00
1 parent 38641268ae
commit 085ec79c21
2 files changed
+18 -8

No files matched your search

@@ -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) {
@@ -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();