From 58056a837ce6a899f88f4401440a3fda708ad58a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 4 Feb 2015 17:49:45 +0100 Subject: [PATCH] Improved block rendering a bit, should play much nicer with shaders now (thanks a ton to Ivorius for pointers). --- .../renderer/font/TextureFontRenderer.scala | 6 ++-- .../tileentity/AssemblerRenderer.scala | 2 ++ .../renderer/tileentity/CaseRenderer.scala | 2 ++ .../renderer/tileentity/ChargerRenderer.scala | 2 ++ .../tileentity/DisassemblerRenderer.scala | 2 ++ .../tileentity/DiskDriveRenderer.scala | 2 ++ .../tileentity/GeolyzerRenderer.scala | 2 ++ .../tileentity/MicrocontrollerRenderer.scala | 2 ++ .../tileentity/PowerDistributorRenderer.scala | 2 ++ .../renderer/tileentity/RaidRenderer.scala | 2 ++ .../renderer/tileentity/ScreenRenderer.scala | 7 +++- .../tileentity/ServerRackRenderer.scala | 2 ++ .../renderer/tileentity/SwitchRenderer.scala | 2 ++ .../scala/li/cil/oc/util/RenderState.scala | 34 +++++-------------- 14 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala index da62b471b..b1aef75f7 100644 --- a/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/font/TextureFontRenderer.scala @@ -118,11 +118,11 @@ abstract class TextureFontRenderer { protected def textureCount: Int - protected def bindTexture(index: Int) + protected def bindTexture(index: Int): Unit - protected def generateChar(char: Char) + protected def generateChar(char: Char): Unit - protected def drawChar(tx: Float, ty: Float, char: Char) + protected def drawChar(tx: Float, ty: Float, char: Char): Unit private def drawQuad(color: Int, x: Int, y: Int, width: Int) = if (color != 0 && width > 0) { val x0 = x * charWidth diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/AssemblerRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/AssemblerRenderer.scala index 1acd25e0b..24c4da08d 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/AssemblerRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/AssemblerRenderer.scala @@ -63,6 +63,8 @@ object AssemblerRenderer extends TileEntitySpecialRenderer { GL11.glRotatef(90, 0, 1, 0) } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/CaseRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/CaseRenderer.scala index e676e492d..ab86eb4c6 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/CaseRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/CaseRenderer.scala @@ -56,6 +56,8 @@ object CaseRenderer extends TileEntitySpecialRenderer { } } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/ChargerRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/ChargerRenderer.scala index a7de7265a..1acf82104 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/ChargerRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/ChargerRenderer.scala @@ -68,6 +68,8 @@ object ChargerRenderer extends TileEntitySpecialRenderer { t.draw() + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() } diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/DisassemblerRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/DisassemblerRenderer.scala index 325fd37f8..868143d07 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/DisassemblerRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/DisassemblerRenderer.scala @@ -59,6 +59,8 @@ object DisassemblerRenderer extends TileEntitySpecialRenderer { t.draw() + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() } diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala index 7c048fa39..c5d1430e3 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala @@ -66,6 +66,8 @@ object DiskDriveRenderer extends TileEntitySpecialRenderer { t.addVertexWithUV(1, 0, 0, 1, 0) t.addVertexWithUV(0, 0, 0, 0, 0) t.draw() + + RenderState.enableLighting() } GL11.glPopMatrix() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/GeolyzerRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/GeolyzerRenderer.scala index e11c7e3f5..9cf53b75d 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/GeolyzerRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/GeolyzerRenderer.scala @@ -36,6 +36,8 @@ object GeolyzerRenderer extends TileEntitySpecialRenderer { t.draw() + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/MicrocontrollerRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/MicrocontrollerRenderer.scala index 2323f8ac3..872503b42 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/MicrocontrollerRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/MicrocontrollerRenderer.scala @@ -54,6 +54,8 @@ object MicrocontrollerRenderer extends TileEntitySpecialRenderer { t.draw() } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/PowerDistributorRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/PowerDistributorRenderer.scala index 0471a727e..88c3b1a35 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/PowerDistributorRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/PowerDistributorRenderer.scala @@ -60,6 +60,8 @@ object PowerDistributorRenderer extends TileEntitySpecialRenderer { t.draw() + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() } diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/RaidRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/RaidRenderer.scala index 5d5f9cac1..c6d1f62ea 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/RaidRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/RaidRenderer.scala @@ -45,6 +45,8 @@ object RaidRenderer extends TileEntitySpecialRenderer { } } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala index 61fbb212c..470af6173 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala @@ -12,6 +12,7 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer import net.minecraft.tileentity.TileEntity import net.minecraftforge.common.util.ForgeDirection import org.lwjgl.opengl.GL11 +import org.lwjgl.opengl.GL14 object ScreenRenderer extends TileEntitySpecialRenderer { private val maxRenderDistanceSq = Settings.get.maxScreenTextRenderDistance * Settings.get.maxScreenTextRenderDistance @@ -66,7 +67,9 @@ object ScreenRenderer extends TileEntitySpecialRenderer { RenderState.checkError(getClass.getName + ".renderTileEntityAt: overlay") if (distance > fadeDistanceSq) { - RenderState.setBlendAlpha(math.max(0, 1 - ((distance - fadeDistanceSq) * fadeRatio).toFloat)) + val alpha = math.max(0, 1 - ((distance - fadeDistanceSq) * fadeRatio).toFloat) + GL14.glBlendColor(0, 0, 0, alpha) + GL11.glBlendFunc(GL11.GL_CONSTANT_ALPHA, GL11.GL_ONE) } RenderState.checkError(getClass.getName + ".renderTileEntityAt: fade") @@ -75,6 +78,8 @@ object ScreenRenderer extends TileEntitySpecialRenderer { draw() } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/ServerRackRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/ServerRackRenderer.scala index b7f728a79..f22d599c7 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/ServerRackRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/ServerRackRenderer.scala @@ -62,6 +62,8 @@ object ServerRackRenderer extends TileEntitySpecialRenderer { } } + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/SwitchRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/SwitchRenderer.scala index b8cff8794..4491c9c85 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/SwitchRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/SwitchRenderer.scala @@ -55,6 +55,8 @@ object SwitchRenderer extends TileEntitySpecialRenderer { t.draw() + RenderState.enableLighting() + GL11.glPopMatrix() GL11.glPopAttrib() } diff --git a/src/main/scala/li/cil/oc/util/RenderState.scala b/src/main/scala/li/cil/oc/util/RenderState.scala index 4a52b74fc..90c242fa7 100644 --- a/src/main/scala/li/cil/oc/util/RenderState.scala +++ b/src/main/scala/li/cil/oc/util/RenderState.scala @@ -2,7 +2,8 @@ package li.cil.oc.util import li.cil.oc.OpenComputers import li.cil.oc.Settings -import net.minecraft.client.renderer.OpenGlHelper +import net.minecraft.client.Minecraft +import net.minecraft.client.renderer.RenderHelper import org.lwjgl.opengl._ import org.lwjgl.util.glu.GLU @@ -27,41 +28,22 @@ object RenderState { } def disableLighting() { - GL11.glDisable(GL11.GL_LIGHTING) - if (arb) { - ARBMultitexture.glActiveTextureARB(OpenGlHelper.lightmapTexUnit) - GL11.glDisable(GL11.GL_TEXTURE_2D) - ARBMultitexture.glActiveTextureARB(OpenGlHelper.defaultTexUnit) - } - else { - GL13.glActiveTexture(OpenGlHelper.lightmapTexUnit) - GL11.glDisable(GL11.GL_TEXTURE_2D) - GL13.glActiveTexture(OpenGlHelper.defaultTexUnit) - } + Minecraft.getMinecraft.entityRenderer.disableLightmap(0) + RenderHelper.disableStandardItemLighting() } def enableLighting() { - GL11.glEnable(GL11.GL_LIGHTING) - if (arb) { - ARBMultitexture.glActiveTextureARB(OpenGlHelper.lightmapTexUnit) - GL11.glEnable(GL11.GL_TEXTURE_2D) - ARBMultitexture.glActiveTextureARB(OpenGlHelper.defaultTexUnit) - } - else { - GL13.glActiveTexture(OpenGlHelper.lightmapTexUnit) - GL11.glEnable(GL11.GL_TEXTURE_2D) - GL13.glActiveTexture(OpenGlHelper.defaultTexUnit) - } + Minecraft.getMinecraft.entityRenderer.enableLightmap(0) + RenderHelper.enableStandardItemLighting() } def makeItBlend() { GL11.glEnable(GL11.GL_BLEND) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) - GL11.glDepthFunc(GL11.GL_LEQUAL) } def setBlendAlpha(alpha: Float) = if (canUseBlendColor) { - GL14.glBlendColor(0, 0, 0, alpha) - GL11.glBlendFunc(GL11.GL_CONSTANT_ALPHA, GL11.GL_ONE) + GL11.glColor4f(1, 1, 1, alpha) + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE) } }