1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-12-12 19:20:29 +00:00

Allow rendering a monitor tile multiple times in a tick

Shader mods may perform multiple passes when rendering a tile, so
monitors will be drawn transparently on later passes. In order to
prevent this we allow drawing the a single tile multiple times in a
tick.
This commit is contained in:
SquidDev 2018-03-29 12:31:20 +01:00
parent 3e751ee94a
commit 52641b7bea
2 changed files with 10 additions and 7 deletions

View File

@ -47,19 +47,20 @@ public class TileEntityMonitorRenderer extends TileEntitySpecialRenderer<TileMon
if( originTerminal == null ) return;
TileMonitor origin = originTerminal.getOrigin();
BlockPos monitorPos = monitor.getPos();
// Ensure each monitor is rendered only once
// Ensure each monitor terminal is rendered only once. We allow rendering a specific tile
// multiple times in a single frame to ensure compatibility with shaders which may run a
// pass multiple times.
long renderFrame = ComputerCraft.getRenderFrame();
if( originTerminal.lastRenderFrame == renderFrame )
if( originTerminal.lastRenderFrame == renderFrame && !monitorPos.equals( originTerminal.lastRenderPos ) )
{
return;
}
else
{
originTerminal.lastRenderFrame = renderFrame;
}
BlockPos monitorPos = monitor.getPos();
originTerminal.lastRenderFrame = renderFrame;
originTerminal.lastRenderPos = monitorPos;
BlockPos originPos = origin.getPos();
posX += originPos.getX() - monitorPos.getX();
posY += originPos.getY() - monitorPos.getY();

View File

@ -2,6 +2,7 @@ package dan200.computercraft.shared.peripheral.monitor;
import dan200.computercraft.shared.common.ClientTerminal;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.math.BlockPos;
import java.util.HashSet;
import java.util.Iterator;
@ -14,6 +15,7 @@ public class ClientMonitor extends ClientTerminal
private final TileMonitor origin;
public long lastRenderFrame = -1;
public BlockPos lastRenderPos = null;
public int[] renderDisplayLists = null;
public ClientMonitor( boolean colour, TileMonitor origin )