diff --git a/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java b/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java index 9db5053..0bc06b7 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/BlockPreviewRenderer.java @@ -5,13 +5,11 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.BlockRendererDispatcher; -import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.*; import net.minecraftforge.fml.relauncher.Side; @@ -26,14 +24,13 @@ import nl.requios.effortlessbuilding.buildmodifier.BuildModifiers; import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager; import nl.requios.effortlessbuilding.buildmodifier.ModifierSettingsManager.ModifierSettings; import nl.requios.effortlessbuilding.compatibility.CompatHelper; -import nl.requios.effortlessbuilding.helper.InventoryHelper; import nl.requios.effortlessbuilding.helper.ReachHelper; import nl.requios.effortlessbuilding.helper.SurvivalHelper; import nl.requios.effortlessbuilding.item.ItemRandomizerBag; import nl.requios.effortlessbuilding.proxy.ClientProxy; import org.lwjgl.opengl.ARBMultitexture; -import org.lwjgl.opengl.ARBShaderObjects; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL20; import java.util.ArrayList; import java.util.Collections; @@ -373,39 +370,40 @@ public class BlockPreviewRenderer { final boolean highlight, final boolean red) { Minecraft mc = Minecraft.getMinecraft(); return (Integer shader) -> { - int percentileUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "dissolve"); - int highlightUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "highlight"); - int redUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "red"); - int blockposUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "blockpos"); - int firstposUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "firstpos"); - int secondposUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "secondpos"); - int imageUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "image"); - int maskUniform = ARBShaderObjects.glGetUniformLocationARB(shader, "mask"); + int percentileUniform = GL20.glGetUniformLocation(shader, "dissolve"); + int highlightUniform = GL20.glGetUniformLocation(shader, "highlight"); + int redUniform = GL20.glGetUniformLocation(shader, "red"); + int blockposUniform = GL20.glGetUniformLocation(shader, "blockpos"); + int firstposUniform = GL20.glGetUniformLocation(shader, "firstpos"); + int secondposUniform = GL20.glGetUniformLocation(shader, "secondpos"); + int imageUniform = GL20.glGetUniformLocation(shader, "image"); + int maskUniform = GL20.glGetUniformLocation(shader, "mask"); //image - ARBShaderObjects.glUniform1iARB(imageUniform, primaryTextureUnit); + GL20.glUniform1i(imageUniform, primaryTextureUnit); OpenGlHelper.setActiveTexture(ARBMultitexture.GL_TEXTURE0_ARB + primaryTextureUnit); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).getGlTextureId()); - GlStateManager.enableTexture2D(); - GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D); +// GlStateManager.enableTexture2D(); +// GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D); //mask - ARBShaderObjects.glUniform1iARB(maskUniform, secondaryTextureUnit); + GL20.glUniform1i(maskUniform, secondaryTextureUnit); OpenGlHelper.setActiveTexture(ARBMultitexture.GL_TEXTURE0_ARB + secondaryTextureUnit); GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture(ShaderHandler.shaderMaskTextureLocation).getGlTextureId()); //blockpos - ARBShaderObjects.glUniform3fARB(blockposUniform, (float) blockpos.x, (float) blockpos.y, (float) blockpos.z); - ARBShaderObjects.glUniform3fARB(firstposUniform, (float) firstpos.x, (float) firstpos.y, (float) firstpos.z); - ARBShaderObjects.glUniform3fARB(secondposUniform, (float) secondpos.x, (float) secondpos.y, (float) secondpos.z); + GL20.glUniform3f(blockposUniform, (float) blockpos.x, (float) blockpos.y, (float) blockpos.z); + GL20.glUniform3f(firstposUniform, (float) firstpos.x, (float) firstpos.y, (float) firstpos.z); + GL20.glUniform3f(secondposUniform, (float) secondpos.x, (float) secondpos.y, (float) secondpos.z); //dissolve - ARBShaderObjects.glUniform1fARB(percentileUniform, dissolve); + GL20.glUniform1f(percentileUniform, dissolve); //highlight - ARBShaderObjects.glUniform1iARB(highlightUniform, highlight ? 1 : 0); + GL20.glUniform1i(highlightUniform, highlight ? 1 : 0); //red - ARBShaderObjects.glUniform1iARB(redUniform, red ? 1 : 0); + GL20.glUniform1i(redUniform, red ? 1 : 0); }; } diff --git a/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java b/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java index 8386d7e..8401600 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/RenderHandler.java @@ -185,7 +185,7 @@ public class RenderHandler implements IWorldEventListener { GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_TEXTURE_2D); -// Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); Minecraft.getMinecraft().renderEngine.bindTexture(ShaderHandler.shaderMaskTextureLocation); GlStateManager.enableBlend(); diff --git a/src/main/java/nl/requios/effortlessbuilding/render/ShaderHandler.java b/src/main/java/nl/requios/effortlessbuilding/render/ShaderHandler.java index 1d2bace..20b3043 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/ShaderHandler.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/ShaderHandler.java @@ -28,8 +28,9 @@ import java.util.function.Consumer; public final class ShaderHandler { - private static final int VERT_ST = ARBVertexShader.GL_VERTEX_SHADER_ARB; - private static final int FRAG_ST = ARBFragmentShader.GL_FRAGMENT_SHADER_ARB; + + private static final int VERT_ST = GL20.GL_VERTEX_SHADER; + private static final int FRAG_ST = GL20.GL_FRAGMENT_SHADER; private static final int VERT = 1; private static final int FRAG = 2; @@ -54,11 +55,11 @@ public final class ShaderHandler { if(!doUseShaders()) return; - ARBShaderObjects.glUseProgramObjectARB(shader); + GL20.glUseProgram(shader); if(shader != 0) { - int time = ARBShaderObjects.glGetUniformLocationARB(shader, "time"); - ARBShaderObjects.glUniform1iARB(time, ClientProxy.ticksInGame); + int time = GL20.glGetUniformLocation(shader, "time"); + GL20.glUniform1i(time, ClientProxy.ticksInGame); if(callback != null) callback.accept(shader); @@ -74,7 +75,7 @@ public final class ShaderHandler { } public static boolean doUseShaders() { - return BuildConfig.visuals.useShaders && OpenGlHelper.shadersSupported; + return BuildConfig.visuals.useShaders && OpenGlHelper.shadersSupported && OpenGlHelper.openGL21; //Only GL2.1 shaders } private static int createProgram(String s, int sides) { @@ -94,24 +95,24 @@ public final class ShaderHandler { if(frag != null) fragId = createShader(frag, FRAG_ST); - program = ARBShaderObjects.glCreateProgramObjectARB(); + program = GL20.glCreateProgram(); if(program == 0) return 0; if(vert != null) - ARBShaderObjects.glAttachObjectARB(program, vertId); + GL20.glAttachShader(program, vertId); if(frag != null) - ARBShaderObjects.glAttachObjectARB(program, fragId); + GL20.glAttachShader(program, fragId); - ARBShaderObjects.glLinkProgramARB(program); - if(ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { - EffortlessBuilding.logger.log(Level.ERROR, getLogInfo(program)); + GL20.glLinkProgram(program); + if(GL20.glGetProgrami(program, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) { + EffortlessBuilding.logger.log(Level.ERROR, getProgramLogInfo(program)); return 0; } - ARBShaderObjects.glValidateProgramARB(program); - if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { - EffortlessBuilding.logger.log(Level.ERROR, getLogInfo(program)); + GL20.glValidateProgram(program); + if (GL20.glGetProgrami(program, GL20.GL_VALIDATE_STATUS) == GL11.GL_FALSE) { + EffortlessBuilding.logger.log(Level.ERROR, getProgramLogInfo(program)); return 0; } @@ -121,28 +122,32 @@ public final class ShaderHandler { private static int createShader(String filename, int shaderType){ int shader = 0; try { - shader = ARBShaderObjects.glCreateShaderObjectARB(shaderType); + shader = GL20.glCreateShader(shaderType); if(shader == 0) return 0; - ARBShaderObjects.glShaderSourceARB(shader, readFileAsString(filename)); - ARBShaderObjects.glCompileShaderARB(shader); + GL20.glShaderSource(shader, readFileAsString(filename)); + GL20.glCompileShader(shader); - if (ARBShaderObjects.glGetObjectParameteriARB(shader, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE) - throw new RuntimeException("Error creating shader: " + getLogInfo(shader)); + if (GL20.glGetShaderi(shader, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) + throw new RuntimeException("Error creating shader: " + getShaderLogInfo(shader)); return shader; } catch(Exception e) { - ARBShaderObjects.glDeleteObjectARB(shader); + GL20.glDeleteShader(shader); e.printStackTrace(); return -1; } } - private static String getLogInfo(int obj) { - return ARBShaderObjects.glGetInfoLogARB(obj, ARBShaderObjects.glGetObjectParameteriARB(obj, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB)); + private static String getProgramLogInfo(int program) { + return GL20.glGetProgramInfoLog(program, GL20.glGetProgrami(program, GL20.GL_INFO_LOG_LENGTH)); + } + + private static String getShaderLogInfo(int shader) { + return GL20.glGetShaderInfoLog(shader, GL20.glGetShaderi(shader, GL20.GL_INFO_LOG_LENGTH)); } private static String readFileAsString(String filename) throws Exception {