Example usage for org.lwjgl.opengl ARBShaderObjects glUseProgramObjectARB

List of usage examples for org.lwjgl.opengl ARBShaderObjects glUseProgramObjectARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBShaderObjects glUseProgramObjectARB.

Prototype

public static native void glUseProgramObjectARB(@NativeType("GLhandleARB") int programObj);

Source Link

Document

Installs the executable code as part of current rendering state if the program object programObj contains valid executable code, i.e.

Usage

From source file:com.a2client.corex.Render.java

License:Open Source License

static public void ResetBind() {
    ResManager.Active.clear();/* w ww  .  j a  v a 2  s.co  m*/

    if (!multi_texture) {
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
        // GL11.glBindTexture(, 0); // cube map
    } else {
        for (int i = 0; i < 16; i++) {
            ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB + i);
            GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
            // GL11.glBindTexture(, 0); // cube map
        }
        ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB);
    }

    ARBShaderObjects.glUseProgramObjectARB(0);
    ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
    ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, 0);

    // slick unbind textures
    //        TextureImpl.unbind();
}

From source file:com.a2client.corex.Shader.java

License:Open Source License

public void bind() {
    if (ResManager.Active.get(Const.RES_TYPE.rtShader) != this) {
        ARBShaderObjects.glUseProgramObjectARB(ID);
        ResManager.Active.put(Const.RES_TYPE.rtShader, this);
    }/*from w w w. j a v  a2 s .c o m*/
}

From source file:com.a2client.utils3d.SceneCombi.java

License:Open Source License

public void RenderSkeleton() {
    if (node == null)
        return;/*from  www  . ja  va  2s  .c om*/

    GL11.glClear(GL_DEPTH_BUFFER_BIT);
    Render.Mode = Const.RENDER_MODE.rmOpaque;
    ARBShaderObjects.glUseProgramObjectARB(0);
    skeleton_material.bind();

    node.onRenderSkeleton();
}

From source file:com.ardor3d.scene.state.lwjgl.shader.LwjglShaderUtil.java

License:Open Source License

public static void useShaderProgram(final int id, final ShaderObjectsStateRecord record) {
    if (record.shaderId != id) {
        ARBShaderObjects.glUseProgramObjectARB(id);
        record.shaderId = id;/*from w  w  w.  j  av a  2 s  .c  o m*/
    }
}

From source file:com.github.atomicblom.nullplayerexception.client.render.ShaderHelper.java

License:Open Source License

public static void useShader(int shader, ShaderCallback callback) {
    if (!useShaders())
        return;//w  w w .  j a va2 s . c  o m

    ARBShaderObjects.glUseProgramObjectARB(shader);

    if (shader != 0) {
        int time = ARBShaderObjects.glGetUniformLocationARB(shader, "time");
        ARBShaderObjects.glUniform1iARB(time, ClientTickHandler.ticksInGame);

        if (callback != null)
            callback.call(shader);
    }
}

From source file:com.mtbs3d.minecrift.MCOculus.java

License:LGPL

public void endFrame() {
    GL11.glDisable(GL11.GL_CULL_FACE); // Oculus wants CW orientations, avoid the problem by turning off culling...
    GL11.glDisable(GL11.GL_DEPTH_TEST); // Nothing is drawn with depth test on...

    // End the frame
    super.endFrame();

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); // Unbind GL_ARRAY_BUFFER for my own vertex arrays to work...
    GL11.glEnable(GL11.GL_CULL_FACE); // Turn back on...
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Turn back on...
    GL11.glClearDepth(1); // Oculus set this to 0 (the near plane), return to normal...
    ARBShaderObjects.glUseProgramObjectARB(0); // Oculus shader is still active, turn it off...

    Display.processMessages();// ww w . j a v  a 2s.com
}

From source file:com.mtbs3d.minecrift.provider.MCOculus.java

License:LGPL

public void endFrame() {
    GL11.glDisable(GL11.GL_CULL_FACE); // Oculus wants CW orientations, avoid the problem by turning off culling...
    GL11.glDisable(GL11.GL_DEPTH_TEST); // Nothing is drawn with depth test on...
    //GL30.glBindVertexArray(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); // Unbind GL_ARRAY_BUFFER for my own vertex arrays to work...
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

    // End the frame
    super.endFrame();

    GL11.glFrontFace(GL11.GL_CCW); // Needed for OVR SDK 0.4.0
    GL11.glEnable(GL11.GL_CULL_FACE); // Turn back on...
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Turn back on...
    GL11.glClearDepth(1); // Oculus set this to 0 (the near plane), return to normal...
    ARBShaderObjects.glUseProgramObjectARB(0); // Oculus shader is still active, turn it off...

    Display.processMessages();/*from   ww w. j  a v a2  s .c o m*/
}

From source file:com.mtbs3d.minecrift.VRRenderer.java

License:LGPL

private void doDistortionAndSuperSample() {
    int FBWidth = this.mc.displayFBWidth;
    int FBHeight = this.mc.displayFBHeight;

    if (this.mc.vrSettings.useDistortion || this.mc.vrSettings.useSupersample || this.mc.vrSettings.useFXAA) {
        // Setup ortho projection
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();//from w ww .j  a va  2  s  . c o m
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();

        GL11.glTranslatef(0.0f, 0.0f, -0.7f);
    }

    if (this.mc.vrSettings.useSupersample) {
        FBWidth = (int) ceil(this.mc.displayFBWidth * this.mc.vrSettings.superSampleScaleFactor);
        FBHeight = (int) ceil(this.mc.displayFBHeight * this.mc.vrSettings.superSampleScaleFactor);
    }

    if (mc.vrSettings.useDistortion) {
        //mc.checkGLError("Before distortion");

        preDistortionFBO.bindTexture();

        if (this.mc.vrSettings.useFXAA) {
            //chain into the FXAA FBO
            fxaaFBO.bindRenderTarget();
        } else if (this.mc.vrSettings.useSupersample) {
            //chain into the superSample FBO
            postDistortionFBO.bindRenderTarget();
        } else {
            unbindFBORenderTarget();
        }

        GL11.glClearColor(1.0f, 1.0f, 1.0f, 0.5f);
        GL11.glClearDepth(1.0D);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer on the framebuffer to black

        // Render onto the entire screen framebuffer
        GL11.glViewport(0, 0, FBWidth, FBHeight);

        // Set the distortion shader as in use
        ARBShaderObjects.glUseProgramObjectARB(_Distortion_shaderProgramId);

        // Set up the fragment shader uniforms
        ARBShaderObjects.glUniform1iARB(_DistortionShader_RenderTextureUniform, 0);

        if (this.mc.vrSettings.useDistortionTextureLookupOptimisation) {
            distortParams.bindTexture_Unit1();
            ARBShaderObjects.glUniform1iARB(_DistortionShader_DistortionMapUniform, 1);
        }

        ARBShaderObjects.glUniform1iARB(_DistortionShader_half_screenWidthUniform,
                distortParams.half_screenWidth);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_LeftLensCenterUniform, distortParams.leftLensCenterX,
                distortParams.leftLensCenterY);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_RightLensCenterUniform,
                distortParams.rightLensCenterX, distortParams.rightLensCenterY);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_LeftScreenCenterUniform,
                distortParams.leftScreenCenterX, distortParams.leftScreenCenterY);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_RightScreenCenterUniform,
                distortParams.rightScreenCenterX, distortParams.rightScreenCenterY);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_ScaleUniform, distortParams.scaleX,
                distortParams.scaleY);
        ARBShaderObjects.glUniform2fARB(_DistortionShader_ScaleInUniform, distortParams.scaleInX,
                distortParams.scaleInY);
        ARBShaderObjects.glUniform4fARB(_DistortionShader_HmdWarpParamUniform, distortParams.DistortionK[0],
                distortParams.DistortionK[1], distortParams.DistortionK[2], distortParams.DistortionK[3]);
        ARBShaderObjects.glUniform4fARB(_DistortionShader_ChromAbParamUniform, distortParams.ChromaticAb[0],
                distortParams.ChromaticAb[1], distortParams.ChromaticAb[2], distortParams.ChromaticAb[3]);

        drawQuad();

        // Stop shader use
        ARBShaderObjects.glUseProgramObjectARB(0);

        OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
        //mc.checkGLError("After distortion");
    }

    if (this.mc.vrSettings.useFXAA) {
        fxaaFBO.bindTexture();

        if (this.mc.vrSettings.useSupersample) {
            //chain into the superSample FBO
            postDistortionFBO.bindRenderTarget();
        } else {
            unbindFBORenderTarget();
        }

        GL11.glClearColor(1.0f, 1.0f, 1.0f, 0.5f);
        GL11.glClearDepth(1.0D);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer on the framebuffer to black

        // Render onto the entire screen framebuffer
        GL11.glViewport(0, 0, FBWidth, FBHeight);

        // Set the distortion shader as in use
        ARBShaderObjects.glUseProgramObjectARB(_FXAA_shaderProgramId);

        // Set up the fragment shader uniforms
        ARBShaderObjects.glUniform1iARB(_FXAA_RenderTextureUniform, 0);
        ARBShaderObjects.glUniform2fARB(_FXAA_RenderedTextureSizeUniform, (float) FBWidth, (float) FBHeight);

        drawQuad();

        // Stop shader use
        ARBShaderObjects.glUseProgramObjectARB(0);

        OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
        //ShaderHelper.checkGLError("After fxaa");
    }

    if (this.mc.vrSettings.useSupersample) {
        // Now switch to 1st pass target framebuffer
        postSuperSampleFBO.bindRenderTarget();

        // Bind the FBO
        postDistortionFBO.bindTexture();

        GL11.glClearColor(0.0f, 0.0f, 1.0f, 0.5f);
        GL11.glClearDepth(1.0D);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer on the framebuffer to black

        // Render onto the entire screen framebuffer
        GL11.glViewport(0, 0, this.mc.displayFBWidth, FBHeight);

        // Set the downsampling shader as in use
        ARBShaderObjects.glUseProgramObjectARB(_Lanczos_shaderProgramId);

        // Set up the fragment shader uniforms
        ARBShaderObjects.glUniform1fARB(_LanczosShader_texelWidthOffsetUniform,
                1.0f / (3.0f * (float) this.mc.displayFBWidth));
        ARBShaderObjects.glUniform1fARB(_LanczosShader_texelHeightOffsetUniform, 0.0f);
        ARBShaderObjects.glUniform1iARB(_LanczosShader_inputImageTextureUniform, 0);

        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);

        // Pass 1
        drawQuad();

        // mc.checkGLError("After Lanczos Pass1");

        // Pass 2
        // Now switch to 2nd pass screen framebuffer
        unbindFBORenderTarget();
        postSuperSampleFBO.bindTexture();

        GL11.glViewport(0, 0, this.mc.displayFBWidth, this.mc.displayFBHeight);
        GL11.glClearColor(0.0f, 0.0f, 1.0f, 0.5f);
        GL11.glClearDepth(1.0D);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

        // Bind the texture
        GL13.glActiveTexture(GL13.GL_TEXTURE0);

        // Set up the fragment shader uniforms for pass 2
        ARBShaderObjects.glUniform1fARB(_LanczosShader_texelWidthOffsetUniform, 0.0f);
        ARBShaderObjects.glUniform1fARB(_LanczosShader_texelHeightOffsetUniform,
                1.0f / (3.0f * (float) this.mc.displayFBHeight));
        ARBShaderObjects.glUniform1iARB(_LanczosShader_inputImageTextureUniform, 0);

        drawQuad();

        // Stop shader use
        ARBShaderObjects.glUseProgramObjectARB(0);
        // mc.checkGLError("After Lanczos Pass2");
    }
}

From source file:com.runescape.client.revised.editor.modelviewer.Viewport.java

License:Open Source License

public void render() {
    final Dimension size = this.canvas.getSize();
    if ((size.width > 0) && (size.height > 0)) {
        if ((this.width != size.width) || (this.height != size.height)) {
            this.width = size.width;
            this.height = size.height;
            GL11.glViewport(0, 0, this.width, this.height);
            GL11.glMatrixMode(GL11.GL_PROJECTION);
            GL11.glLoadIdentity();//  w w w.ja v a2  s.  c  o m
            final float c = (float) Math
                    .sqrt((double) (this.width * this.width) + (double) (this.height * this.height));
            GL11.glOrtho(0.0F, this.width, 0.0F, this.height, -c, c);
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            final boolean useShader = this.initShader();
            if (ModelConstants.ENABLE_VERTEX_SHADER && useShader) {
                ARBShaderObjects.glUseProgramObjectARB(this.program);
            }
            if (ModelConstants.ENABLE_LIGHTING) {
                GL11.glEnable(GL11.GL_LIGHTING);
                GL11.glEnable(GL11.GL_LIGHT0);
                final FloatBuffer diffuse = BufferUtils.createFloatBuffer(4)
                        .put(new float[] { 1F, 1F, 1F, 1F });
                final FloatBuffer position = BufferUtils.createFloatBuffer(4)
                        .put(new float[] { 3F, 0F, 1F, 0F });
                final FloatBuffer ambient = BufferUtils.createFloatBuffer(4)
                        .put(new float[] { .1F, .1F, .2F, .3F });
                final FloatBuffer specular = BufferUtils.createFloatBuffer(4)
                        .put(new float[] { 1F, 1F, 1F, 1F });
                GL11.glMaterial(GL11.GL_FRONT, GL11.GL_SPECULAR, (FloatBuffer) specular.flip());
                GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, (FloatBuffer) ambient.flip());
                GL11.glLight(GL11.GL_LIGHT0, GL11.GL_DIFFUSE, (FloatBuffer) diffuse.flip());
                GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, (FloatBuffer) position.flip());
                GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, 50.0f);
            }
        }
        if (Mouse.isButtonDown(0) && !Mouse.isButtonDown(1)) {
            this.yaw -= Mouse.getDX();
            this.pitch -= Mouse.getDY();
        }
        if (Mouse.isButtonDown(0) && Mouse.isButtonDown(1)) {
            this.offset_z += Mouse.getDY();
        }
        float wheel = Mouse.getDWheel() / 960.0F;
        if (wheel > 1.0F) {
            wheel = 1.0F;
        } else if (wheel < -1.0F) {
            wheel = -1.0F;
        }
        this.scale -= this.scale * wheel;
        if (this.scale < 0.01F) {
            this.scale = 0.01F;
        }
        for (final Model3D dragonModel : this.getDragonList()) {
            final float x = this.width / 1.2F;
            final float y = (-((100.0F * (this.scale))) + (this.offset_z + 0.1F))
                    + ((this.height - dragonModel.height()) / 2.0F);
            final float z = 0.0F;
            dragonModel.calcDimms(false);
            dragonModel.render(x, y, z, this.pitch, this.yaw, this.roll, this.scale, this.scale, this.scale);
        }
        for (final Model3D torvaModel : this.getTorvaList()) {
            final float x = this.width / 1.7F;
            final float y = (-((100.0F * (this.scale))) + this.offset_z)
                    + ((this.height - torvaModel.height()) / 2.0F);
            final float z = 0.0F;
            torvaModel.calcDimms(false);
            torvaModel.render(x, y, z, this.pitch, this.yaw, this.roll, this.scale, this.scale, this.scale);
        }
        for (final Model3D jadModel : this.getJadList()) {
            final float x = this.width / 3.2F;
            final float y = (-((100.0F * (this.scale))) + this.offset_z)
                    + ((this.height - jadModel.height()) / 2.0F);
            final float z = 0.0F;
            jadModel.calcDimms(false);
            jadModel.render(x, y, z, this.pitch, this.yaw, this.roll, this.scale, this.scale, this.scale);
        }
        for (final Model3D trollModel : this.getTrollList()) {
            final float x = this.width / 3.8F;
            final float y = (-((100.0F * (this.scale))) + this.offset_z)
                    + ((this.height - trollModel.height()) / 2.0F);
            final float z = 0.0F;
            trollModel.calcDimms(false);
            trollModel.render(x, y, z, this.pitch, this.yaw, this.roll, this.scale, this.scale, this.scale);
        }
        if (ModelConstants.ENABLE_VERTEX_SHADER && this.initShader()) {
            ARBShaderObjects.glUseProgramObjectARB(0);
        }
        Display.update();
    }
}

From source file:com.wuest.prefab.Structures.Render.ShaderHelper.java

License:Open Source License

public static void useShader(int shader) {
    if (!OpenGlHelper.shadersSupported) {
        return;//  w  w  w  .j  av  a 2  s  .  c  o  m
    }

    ARBShaderObjects.glUseProgramObjectARB(shader);

    if (shader != 0) {
        int time = ARBShaderObjects.glGetUniformLocationARB(shader, "time");
        ARBShaderObjects.glUniform1iARB(time, ClientEventHandler.ticksInGame);

        int alpha = ARBShaderObjects.glGetUniformLocationARB(shader, "alpha");
        ARBShaderObjects.glUniform1fARB(alpha, 0.4F);
    }
}