List of usage examples for org.lwjgl.opengl GL20 glUniform1i
public static void glUniform1i(@NativeType("GLint") int location, @NativeType("GLint") int v0)
From source file:com.github.begla.blockmania.world.World.java
License:Apache License
/** * Renders the chunks./*from ww w . j a v a2 s .c om*/ */ private void renderChunks() { ShaderManager.getInstance().enableShader("chunk"); int daylight = GL20.glGetUniformLocation(ShaderManager.getInstance().getShader("chunk"), "daylight"); int swimming = GL20.glGetUniformLocation(ShaderManager.getInstance().getShader("chunk"), "swimming"); int animationOffset = GL20.glGetUniformLocation(ShaderManager.getInstance().getShader("chunk"), "animationOffset"); int animated = GL20.glGetUniformLocation(ShaderManager.getInstance().getShader("chunk"), "animated"); GL20.glUniform1f(daylight, (float) getDaylight()); GL20.glUniform1i(swimming, _player.isHeadUnderWater() ? 1 : 0); FastList<Chunk> visibleChunks = fetchVisibleChunks(); glEnable(GL_TEXTURE_2D); GL20.glUniform1i(animated, 0); TextureManager.getInstance().bindTexture("terrain"); // OPAQUE ELEMENTS for (FastList.Node<Chunk> n = visibleChunks.head(), end = visibleChunks.tail(); (n = n.getNext()) != end;) { Chunk c = n.getValue(); c.render(ChunkMesh.RENDER_TYPE.OPAQUE); if (Configuration.getSettingBoolean("CHUNK_OUTLINES")) { c.getAABB().render(); } } // ANIMATED LAVA GL20.glUniform1i(animated, 1); TextureManager.getInstance().bindTexture("custom_lava_still"); GL20.glUniform1f(animationOffset, ((float) (_tick % 16)) * (1.0f / 16f)); for (FastList.Node<Chunk> n = visibleChunks.head(), end = visibleChunks.tail(); (n = n.getNext()) != end;) { Chunk c = n.getValue(); c.render(ChunkMesh.RENDER_TYPE.LAVA); } GL20.glUniform1i(animated, 0); TextureManager.getInstance().bindTexture("terrain"); // BILLBOARDS AND TRANSLUCENT ELEMENTS for (FastList.Node<Chunk> n = visibleChunks.head(), end = visibleChunks.tail(); (n = n.getNext()) != end;) { Chunk c = n.getValue(); c.render(ChunkMesh.RENDER_TYPE.BILLBOARD_AND_TRANSLUCENT); } GL20.glUniform1i(animated, 1); GL20.glUniform1f(animationOffset, ((float) (_tick / 2 % 12)) * (1.0f / 16f)); TextureManager.getInstance().bindTexture("custom_water_still"); for (int i = 0; i < 2; i++) { // ANIMATED WATER for (FastList.Node<Chunk> n = visibleChunks.head(), end = visibleChunks .tail(); (n = n.getNext()) != end;) { Chunk c = n.getValue(); if (i == 0) { glColorMask(false, false, false, false); } else { glColorMask(true, true, true, true); } c.render(ChunkMesh.RENDER_TYPE.WATER); } } ShaderManager.getInstance().enableShader(null); glDisable(GL_TEXTURE_2D); }
From source file:com.grillecube.client.opengl.GLProgram.java
protected void loadUniformInteger(int location, int value) { GL20.glUniform1i(location, value); }
From source file:com.kauridev.lunarfever.graphics.ShaderProgram.java
License:Open Source License
private void setUniformi(int loc, int i) { if (loc == -1) { return; } GL20.glUniform1i(loc, i); }
From source file:com.opengrave.common.world.MaterialList.java
License:Open Source License
public synchronized void bind(int pID, int glTexture) { updateTex();//w ww . jav a2 s . c om int texMain = GL20.glGetUniformLocation(pID, "arraytexture"); int texData = GL20.glGetUniformLocation(pID, "arraytexturedata"); GL20.glUniform1i(texMain, glTexture - GL13.GL_TEXTURE0); GL20.glUniform1i(texData, (glTexture - GL13.GL_TEXTURE0) + 1); if (!valid()) { return; } textureAtlas.bind(glTexture); textureDataAtlas.bind(glTexture + 1); }
From source file:com.opengrave.og.base.Renderable3D.java
License:Open Source License
@Override public void render(Matrix4f matrix, RenderStyle style) { dealWithChange();//from www . jav a 2 s .co m int pID = Resources.loadShader("model.vs", "model.fs").getProgram(); GL20.glUseProgram(pID); int texture = GL20.glGetUniformLocation(pID, "texture"); int shadow = GL20.glGetUniformLocation(pID, "shadowMap"); GL20.glUniform1i(texture, 0); GL20.glUniform1i(shadow, 1); GL30.glBindVertexArray(vao_ID); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); GL20.glBindAttribLocation(pID, 0, "in_Position"); GL20.glBindAttribLocation(pID, 1, "in_Normal"); GL20.glBindAttribLocation(pID, 2, "in_TextureCoord"); Util.checkErr(); if (matList != null && matList.valid()) { matList.bind(pID, GL13.GL_TEXTURE0); Util.loadMaterials(matList, pID); } Util.checkErr(); getContext().setMatrices(pID, matrix); getContext().bindShadowData(GL13.GL_TEXTURE2); getContext().bindLights(pID, GL13.GL_TEXTURE3); Util.setRenderStyle(pID, style); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID); GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); getContext().unbindLights(); getContext().unbindShadowData(); if (matList != null && matList.valid()) { matList.unbind(); } Util.checkErr(); GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); Util.checkErr(); GL20.glUseProgram(0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL30.glBindVertexArray(0); }
From source file:com.opengrave.og.base.RenderableBoneAnimated.java
License:Open Source License
@Override public void render(Matrix4f matrix, RenderStyle style) { // if (!visible) { // return;// w ww.ja va2s. c o m // } GL11.glDisable(GL11.GL_CULL_FACE); // TODO Enable Face Culling, and be // absolutely sure that all tris are // facing the correct way dealWithChange(); int pID = Resources.loadShader("animmodel.vs", "animmodel.fs").getProgram(); GL20.glUseProgram(pID); int texture = GL20.glGetUniformLocation(pID, "texture"); int shadow = GL20.glGetUniformLocation(pID, "shadowMap"); GL20.glUniform1i(texture, 0); GL20.glUniform1i(shadow, 1); GL30.glBindVertexArray(vao_ID); GL20.glBindAttribLocation(pID, 0, "in_Position"); GL20.glBindAttribLocation(pID, 1, "in_Normal"); GL20.glBindAttribLocation(pID, 2, "in_TextureCoord"); GL20.glBindAttribLocation(pID, 3, "in_BoneID"); GL20.glBindAttribLocation(pID, 4, "in_BoneWeight"); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); GL20.glEnableVertexAttribArray(3); GL20.glEnableVertexAttribArray(4); if (matList != null && matList.valid()) { matList.bind(pID, GL13.GL_TEXTURE0); Util.loadMaterials(matList, pID); } setBonesUniform(pID); getContext().setMatrices(pID, matrix); getContext().bindShadowData(GL13.GL_TEXTURE2); getContext().bindLights(pID, GL13.GL_TEXTURE3); Util.setRenderStyle(pID, style); // GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertCount); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID); GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); getContext().unbindLights(); getContext().unbindShadowData(); if (matList != null && matList.valid()) { matList.unbind(); } GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); GL20.glDisableVertexAttribArray(3); GL20.glDisableVertexAttribArray(4); GL20.glUseProgram(0); GL30.glBindVertexArray(0); GL11.glEnable(GL11.GL_CULL_FACE); }
From source file:com.opengrave.og.base.RenderableLiquid.java
License:Open Source License
@Override public void render(Matrix4f matrix, RenderStyle style) { dealWithChange();// ww w . jav a 2 s . c o m if (vertexList.size() == 0) { return; } int pID = Resources.loadShader("liquid.vs", "liquid.fs").getProgram(); GL20.glUseProgram(pID); int atlas = GL20.glGetUniformLocation(pID, "arraytexture"); int normals = GL20.glGetUniformLocation(pID, "arraytexturedata"); int colours = GL20.glGetUniformLocation(pID, "colours"); int flows = GL20.glGetUniformLocation(pID, "flows"); int shadow = GL20.glGetUniformLocation(pID, "shadowMap"); GL20.glUniform1i(atlas, 0); GL20.glUniform1i(normals, 1); GL20.glUniform1i(colours, 2); GL20.glUniform1i(flows, 3); GL20.glUniform1i(shadow, 4); GL30.glBindVertexArray(vaoID); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); getContext().setMatrices(pID, matrix); textureAtlas.bind(GL13.GL_TEXTURE0); normalAtlas.bind(GL13.GL_TEXTURE1); getColourTexture().bind(GL13.GL_TEXTURE2); getFlowTexture().bind(GL13.GL_TEXTURE3); getContext().bindShadowData(GL13.GL_TEXTURE4); getContext().bindLights(pID, GL13.GL_TEXTURE5); Util.setRenderStyle(pID, style); GL11.glDepthMask(false); GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexList.size()); GL11.glDepthMask(true); getContext().unbindLights(); getContext().unbindShadowData(); textureAtlas.unbind(); getFlowTexture().unbind(); getColourTexture().unbind(); GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); GL30.glBindVertexArray(0); GL20.glUseProgram(0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL30.glBindVertexArray(0); }
From source file:com.opengrave.og.base.RenderableMultitex.java
License:Open Source License
@Override public void render(Matrix4f matrix, RenderStyle style) { dealWithChange();/* w w w . j a v a 2 s.c o m*/ if (vertexList.size() == 0) { return; } // GL11.glBindTexture(GL11.GL_TEXTURE_2D, // Resources.loadTexture("tex/blank.png").id); int pID = Resources.loadShader("terrain.vs", "terrain.fs").getProgram(); GL20.glUseProgram(pID); int atlas = GL20.glGetUniformLocation(pID, "arraytexture"); int colours = GL20.glGetUniformLocation(pID, "colours"); int shadow = GL20.glGetUniformLocation(pID, "shadowMap"); int normals = GL20.glGetUniformLocation(pID, "arraytexturedata"); GL20.glUniform1i(atlas, 0); GL20.glUniform1i(colours, 1); GL20.glUniform1i(normals, 2); GL20.glUniform1i(shadow, 3); GL30.glBindVertexArray(vaoID); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); GL20.glEnableVertexAttribArray(3); GL20.glBindAttribLocation(pID, 0, "in_Position"); GL20.glBindAttribLocation(pID, 1, "in_TextureCoord"); GL20.glBindAttribLocation(pID, 2, "in_TexIndex"); GL20.glBindAttribLocation(pID, 3, "in_Normal"); getContext().setMatrices(pID, matrix); GL20.glUniform1i(GL20.glGetUniformLocation(pID, "hidden"), hidden); textureAtlas.bind(GL13.GL_TEXTURE0); getColourTexture().bind(GL13.GL_TEXTURE1); normalAtlas.bind(GL13.GL_TEXTURE2); getContext().bindShadowData(GL13.GL_TEXTURE3); getContext().bindLights(pID, GL13.GL_TEXTURE4); Util.setRenderStyle(pID, style); GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexList.size()); getContext().unbindLights(); getContext().unbindShadowData(); textureAtlas.unbind(); // HGMainThread.shadowMap.unbind(); getColourTexture().unbind(); // System.out.println(getClass().getName()+" : "+vertexList.size()+" rendered"); GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); GL20.glDisableVertexAttribArray(3); GL30.glBindVertexArray(0); GL20.glUseProgram(0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL30.glBindVertexArray(0); }
From source file:com.opengrave.og.base.RenderableParticles.java
License:Open Source License
@Override public void render(Matrix4f matrix, RenderStyle style) { dealWithChange();/* www.j a v a 2s . c o m*/ if (matList == null || !matList.valid()) { return; } GL30.glBindVertexArray(idVao); int pID = Resources.loadShader("particle.vs", "particle.fs").getProgram(); GL20.glUseProgram(pID); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); GL20.glBindAttribLocation(pID, 0, "in_Position"); GL20.glBindAttribLocation(pID, 1, "in_Colour"); GL20.glBindAttribLocation(pID, 2, "in_Scale"); Util.checkErr(); int texture = GL20.glGetUniformLocation(pID, "tex"); GL20.glUniform1i(texture, 0); int wSS = GL20.glGetUniformLocation(pID, "windowSizeScale"); GL20.glUniform1f(wSS, getContext().width / 1024f); getContext().setMatrices(pID, matrix); if (matList != null && matList.valid()) { matList.bind(pID, GL13.GL_TEXTURE0); } GL11.glEnable(GL20.GL_POINT_SPRITE); GL11.glEnable(GL20.GL_VERTEX_PROGRAM_POINT_SIZE); GL11.glDepthMask(false); GL11.glDrawArrays(GL11.GL_POINTS, 0, size); GL11.glDepthMask(true); GL11.glDisable(GL20.GL_POINT_SPRITE); GL11.glDisable(GL20.GL_VERTEX_PROGRAM_POINT_SIZE); if (matList != null && matList.valid()) { matList.unbind(); } Util.checkErr(); GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); Util.checkErr(); GL20.glUseProgram(0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL30.glBindVertexArray(0); Util.checkErr(); }
From source file:com.opengrave.og.engine.RenderView.java
License:Open Source License
public void bindLights(int pID, int texture) { GL20.glUseProgram(pID);/* w w w.j a v a 2 s. co m*/ int lights = MainThread.config.getInteger("lightCount", 16); int showShadows = GL20.glGetUniformLocation(pID, "showShadows"); GL20.glUniform1i(showShadows, hasshadows ? 1 : 0); Util.checkErr(); if (cam instanceof FlyByCamera) { int eyepos = GL20.glGetUniformLocation(pID, "eyepos"); Util.checkErr(); Location camL = ((FlyByCamera) cam).getCameraLocation(); Util.checkErr(); GL20.glUniform3f(eyepos, camL.getFullXAsFloat(), camL.getFullYAsFloat(), camL.getZ()); Util.checkErr(); } if (hasshadows) { int lightDir = GL20.glGetUniformLocation(pID, "sunDir"); Vector3f dir = sceneNode.getSkyLight().getDirection().normalise(null); GL20.glUniform3f(lightDir, dir.x, dir.y, dir.z); int sunStr = GL20.glGetUniformLocation(pID, "sunStr"); GL20.glUniform1f(sunStr, sceneNode.getSkyLight().getIntensity()); } if (!shadows) { return; } int lightCount = GL20.glGetUniformLocation(pID, "lightCount"); GL20.glUniform1i(lightCount, lights); if (lights < 4) { lights = 4; } for (int i = 0; i < lights; i++) { ShadowCube ls; if (i >= lightShadows.size()) { ls = new ShadowCube(MainThread.config.getInteger("shadowSize", 1024)); lightShadows.add(ls); } ls = lightShadows.get(i); if (ls == null) { continue; } PointLightNode light = ls.getLight(); if (light == null) { continue; } int cube = GL20.glGetUniformLocation(pID, "cube" + i); int lightcolour = GL20.glGetUniformLocation(pID, "lights[" + i + "].colour"); int lightposition = GL20.glGetUniformLocation(pID, "lights[" + i + "].position"); int lightpower = GL20.glGetUniformLocation(pID, "lights[" + i + "].power"); Vector3f loc = light.getPosition().toVector3(); if (cam != null) { // loc = light.getPosition().minus(cam.getLocation()); // loc = cam.minus(light.getPosition()); } Util.checkErr(); // Only upload a shadow texture location if we're having shadows for // the light. Basic has lights but no shadows if (i < showShadows) { GL20.glUniform1i(cube, texture + i - GL13.GL_TEXTURE0); ls.getFramebuffer().bindDepthTexture(texture + i); } Util.checkErr(); GL20.glUniform4f(lightcolour, light.getColour().x, light.getColour().y, light.getColour().z, light.getColour().w); Util.checkErr(); GL20.glUniform4f(lightposition, loc.x, loc.y, loc.z, 1f); Util.checkErr(); GL20.glUniform1f(lightpower, light.getPower()); Util.checkErr(); Util.checkErr(); } }