Example usage for org.lwjgl.opengl GL11 glClearColor

List of usage examples for org.lwjgl.opengl GL11 glClearColor

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL11 glClearColor.

Prototype

public static void glClearColor(@NativeType("GLfloat") float red, @NativeType("GLfloat") float green,
        @NativeType("GLfloat") float blue, @NativeType("GLfloat") float alpha) 

Source Link

Document

Sets the clear value for fixed-point and floating-point color buffers in RGBA mode.

Usage

From source file:com.grillecube.client.opengl.window.GLFWWindow.java

public void setClearColor(float r, float g, float b, float a) {
    GL11.glClearColor(r, g, b, a);
}

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

License:LGPL

public void renderGUIandWorld(float renderPartialTicks) {
    this.farPlaneDistance = (float) this.mc.gameSettings.ofRenderDistanceFine;

    if (Config.isFogFancy()) {
        this.farPlaneDistance *= 0.95F;
    }/*  w  w w  . ja  v a2 s.  co  m*/

    if (Config.isFogFast()) {
        this.farPlaneDistance *= 0.83F;
    }

    if (this.prevFarPlaneDistance != this.farPlaneDistance) {
        _FBOInitialised = false;
        this.prevFarPlaneDistance = this.farPlaneDistance;
    }

    //Ensure FBO are in place and initialized
    if (!setupFBOs())
        return;

    boolean guiShowingThisFrame = false;
    int mouseX = 0;
    int mouseY = 0;
    ScaledResolution var15 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth,
            this.mc.displayHeight);
    int var16 = var15.getScaledWidth();
    int var17 = var15.getScaledHeight();

    if ((this.mc.theWorld != null && !this.mc.gameSettings.hideGUI && this.mc.thePlayer.getSleepTimer() == 0)
            || this.mc.currentScreen != null || this.mc.loadingScreen.isEnabled()) {
        //Render all UI elements into guiFBO
        mouseX = Mouse.getX() * var16 / this.mc.displayWidth;
        mouseY = var17 - Mouse.getY() * var17 / this.mc.displayHeight - 1;

        guiFBO.bindRenderTarget();

        GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
        GL11.glClearColor(0, 0, 0, 0);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0.0D, var15.getScaledWidth_double(), var15.getScaledHeight_double(), 0.0D, 1000.0D,
                3000.0D);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
        guiShowingThisFrame = true;
    }

    // Display loading / progress window if necessary
    if (this.mc.loadingScreen.isEnabled()) {
        this.mc.loadingScreen.vrRender(var16, var17);
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
    } else if (this.mc.theWorld != null && !this.mc.gameSettings.hideGUI && !this.blankGUIUntilWorldValid) {
        //Disable any forge gui crosshairs and helmet overlay (pumkinblur)
        if (Reflector.ForgeGuiIngame_renderCrosshairs.exists()) {
            Reflector.ForgeGuiIngame_renderCrosshairs.setValue(false);
            Reflector.ForgeGuiIngame_renderHelmet.setValue(false);
        }
        //Draw in game GUI
        this.mc.ingameGUI.renderGameOverlay(renderPartialTicks, this.mc.currentScreen != null, mouseX, mouseY);
        guiAchievement.updateAchievementWindow();
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
    }

    if (this.blankGUIUntilWorldValid) {
        if (this.mc.theWorld != null)
            this.blankGUIUntilWorldValid = false;
    }

    if (this.mc.loadingScreen.isEnabled() == false && this.mc.currentScreen != null
            && !this.blankGUIUntilWorldValid) {
        try {
            this.mc.currentScreen.drawScreen(mouseX, mouseY, renderPartialTicks);
        } catch (Throwable var13) {
            CrashReport var11 = CrashReport.makeCrashReport(var13, "Rendering screen");
            throw new ReportedException(var11);
        }

        GL11.glDisable(GL11.GL_LIGHTING); //inventory messes up fog color sometimes... This fixes
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        drawMouseQuad(mouseX, mouseY);
    }

    //Setup render target
    if (mc.vrSettings.useDistortion) {
        preDistortionFBO.bindRenderTarget();
    } else if (this.mc.vrSettings.useSupersample) {
        postDistortionFBO.bindRenderTarget();
        eyeRenderParams._renderScale = 1.0f;
    } else {
        unbindFBORenderTarget();
        eyeRenderParams._renderScale = 1.0f;
    }

    GL11.glClearColor(0, 0, 0, 1);
    GL11.glEnable(GL11.GL_SCISSOR_TEST);

    if (this.mc.theWorld != null) {
        //If we're in-game, render in-game stuff
        this.mc.mcProfiler.startSection("level");

        if (this.mc.renderViewEntity == null) {
            this.mc.renderViewEntity = this.mc.thePlayer;
        }

        EntityLivingBase renderViewEntity = this.mc.renderViewEntity;
        this.mc.mcProfiler.endStartSection("center");

        //Used by fog comparison, 3rd person camera/block collision detection
        renderOriginX = renderViewEntity.lastTickPosX
                + (renderViewEntity.posX - renderViewEntity.lastTickPosX) * (double) renderPartialTicks;
        renderOriginY = renderViewEntity.lastTickPosY
                + (renderViewEntity.posY - renderViewEntity.lastTickPosY) * (double) renderPartialTicks;
        renderOriginZ = renderViewEntity.lastTickPosZ
                + (renderViewEntity.posZ - renderViewEntity.lastTickPosZ) * (double) renderPartialTicks;

        if (this.mc.currentScreen == null) {
            this.mc.mcProfiler.endStartSection("pick");
            getPointedBlock(renderPartialTicks);
        }

        // Update sound engine
        setSoundListenerOrientation();

    }

    //Update gui Yaw
    if (guiShowingThisFrame && !guiShowingLastFrame) {
        guiHeadYaw = this.cameraYaw - this.mc.lookaimController.getBodyYawDegrees();
    }
    guiShowingLastFrame = guiShowingThisFrame;

    //Now, actually render world
    for (int renderSceneNumber = 0; renderSceneNumber < 2; ++renderSceneNumber) {
        setupEyeViewport(renderSceneNumber);

        this.mc.mcProfiler.endStartSection("camera");
        //transform camera with pitch,yaw,roll + neck model + game effects 
        setupCameraTransform(renderPartialTicks, renderSceneNumber);

        if (this.mc.theWorld != null) {
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glPushMatrix();

            this.renderWorld(renderPartialTicks, 0L, renderSceneNumber);
            this.disableLightmap(renderPartialTicks);

            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glPopMatrix();
        } else {
            GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer on the framebuffer to black
            GL11.glDisable(GL11.GL_BLEND);
        }

        if (guiShowingThisFrame) {
            GL11.glPushMatrix();
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            guiFBO.bindTexture();

            // Prevent black border at top / bottom of GUI
            GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
            GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);

            if (this.mc.theWorld != null && this.mc.vrSettings.hudLockToHead) {
                GL11.glLoadIdentity();

                if (renderSceneNumber == 0)
                    GL11.glMultMatrix(eyeRenderParams.gl_getLeftViewportTransform());
                else
                    GL11.glMultMatrix(eyeRenderParams.gl_getRightViewportTransform());

                GL11.glRotatef(180f - this.mc.vrSettings.hudYawOffset, 0f, 1f, 0f);
                GL11.glRotatef(-this.mc.vrSettings.hudPitchOffset, 1f, 0f, 0f);
                //                    GL11.glRotatef(cameraRoll, 0f, 0f, 1f);

                GL11.glTranslatef(0.0f, 0.0f,
                        this.mc.vrSettings.hudDistance - this.mc.vrSettings.eyeProtrusion);
                GL11.glRotatef(180f, 0f, 1f, 0f);//Not sure why this is necessary... normals/backface culling maybe?
            } else {
                float guiYaw = 0f;
                if (this.mc.theWorld != null) {
                    if (this.mc.vrSettings.lookMoveDecoupled)
                        guiYaw = this.mc.lookaimController.getBodyYawDegrees();
                    else
                        guiYaw = guiHeadYaw + this.mc.lookaimController.getBodyYawDegrees();

                    guiYaw -= this.mc.vrSettings.hudYawOffset;
                } else
                    guiYaw = guiHeadYaw + this.mc.lookaimController.getBodyYawDegrees();
                GL11.glRotatef(-guiYaw, 0f, 1f, 0f);

                float guiPitch = 0f;

                if (this.mc.theWorld != null)
                    guiPitch = -this.mc.vrSettings.hudPitchOffset;

                //                    if( this.mc.vrSettings.allowMousePitchInput)
                //                        guiPitch += this.mc.lookaimController.getBodyPitchDegrees();

                GL11.glRotatef(guiPitch, 1f, 0f, 0f);

                GL11.glTranslatef(0.0f, 0.0f, this.mc.vrSettings.hudDistance);
                GL11.glRotatef(180f, 0f, 1f, 0f);//Not sure why this is necessary... normals/backface culling maybe?
            }

            GL11.glEnable(GL11.GL_BLEND);
            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            if (this.mc.theWorld != null)
                GL11.glColor4f(1, 1, 1, this.mc.vrSettings.hudOpacity);
            else
                GL11.glColor4f(1, 1, 1, 1);
            if (!this.mc.vrSettings.hudOcclusion)
                GL11.glDisable(GL11.GL_DEPTH_TEST);

            drawQuad2(this.mc.displayWidth, this.mc.displayHeight,
                    this.mc.vrSettings.hudScale * this.mc.vrSettings.hudDistance);
            GL11.glDisable(GL11.GL_BLEND);
            GL11.glEnable(GL11.GL_DEPTH_TEST);

            GL11.glPopMatrix();

            unbindTexture();
            //mc.checkGLError("GUI");
        }

        if (calibrationHelper != null) {
            float x = lookX * mc.vrSettings.hudDistance;
            float y = lookY * mc.vrSettings.hudDistance;
            float z = lookZ * mc.vrSettings.hudDistance;

            GL11.glDisable(GL11.GL_DEPTH_TEST);
            GL11.glPushMatrix();
            GL11.glTranslatef(x, y, z);
            GL11.glRotatef(-this.cameraYaw, 0.0F, 1.0F, 0.0F);
            GL11.glRotatef(this.cameraPitch, 1.0F, 0.0F, 0.0F);
            GL11.glRotatef(this.cameraRoll, 0.0F, 0.0F, 1.0F);
            float textScale = (float) Math.sqrt((x * x + y * y + z * z));
            GL11.glScalef(-INITIAL_CALIBRATION_TEXT_SCALE * textScale,
                    -INITIAL_CALIBRATION_TEXT_SCALE * textScale, -INITIAL_CALIBRATION_TEXT_SCALE * textScale);
            String calibrating = "Calibrating " + calibrationHelper.currentPlugin.getName() + "...";
            mc.fontRenderer.drawStringWithShadow(calibrating, -mc.fontRenderer.getStringWidth(calibrating) / 2,
                    -8, /*white*/16777215);
            String calibrationStep = calibrationHelper.calibrationStep;
            //                mc.fontRenderer.drawStringWithShadow(calibrationStep, -mc.fontRenderer.getStringWidth(calibrationStep)/2, 8, /*white*/16777215);

            int column = 8;
            ArrayList<String> wrapped = new ArrayList<String>();
            Utils.wordWrap(calibrationStep, CALIBRATION_TEXT_WORDWRAP_LEN, wrapped);
            for (String line : wrapped) {
                mc.fontRenderer.drawStringWithShadow(line, -mc.fontRenderer.getStringWidth(line) / 2, column,
                        /*white*/16777215);
                column += 16;
            }

            GL11.glPopMatrix();
            GL11.glEnable(GL11.GL_DEPTH_TEST);
        }
    }
    GL11.glDisable(GL11.GL_SCISSOR_TEST);

    doDistortionAndSuperSample();
    checkLatencyTester();

    // Finish frame
    GL11.glFinish();

    // Get end frame timings
    endFrameTimeNanos = startVSyncPeriodNanos = System.nanoTime();
    long frameTime = endFrameTimeNanos - startFrameRenderNanos;
    addRenderFrameTimeNanos(frameTime);

    mc.checkGLError("After render world and GUI");
}

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  w  w. j  a v a 2 s .co 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.mtbs3d.minecrift.VRRenderer.java

License:LGPL

public void renderWorld(float renderPartialTicks, long nextFrameTime, int renderSceneNumber) {
    RenderGlobal renderGlobal = this.mc.renderGlobal;
    EffectRenderer effectRenderer = this.mc.effectRenderer;
    EntityLivingBase renderViewEntity = this.mc.renderViewEntity;

    //TODO: fog color isn't quite right yet when eyes split water/air
    this.updateFogColor(renderPartialTicks);
    GL11.glClearColor(fogColorRed, fogColorGreen, fogColorBlue, 0.5f);
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
    GL11.glEnable(GL11.GL_CULL_FACE);//w w w.  j  av a2  s .c o  m
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    //mc.checkGLError("FBO init");

    this.mc.mcProfiler.startSection("lightTex");
    if (this.lightmapUpdateNeeded) {
        this.updateLightmap(renderPartialTicks);
    }

    ActiveRenderInfo.updateRenderInfo(this.mc.thePlayer, this.mc.gameSettings.thirdPersonView == 2);
    this.mc.mcProfiler.endStartSection("frustrum");
    ClippingHelperImpl.getInstance(); // setup clip, using current modelview / projection matrices

    if (!Config.isSkyEnabled() && !Config.isSunMoonEnabled() && !Config.isStarsEnabled()) {
        GL11.glDisable(GL11.GL_BLEND);
    } else {
        this.setupFog(-1, renderPartialTicks);
        this.mc.mcProfiler.endStartSection("sky");
        renderGlobal.renderSky(renderPartialTicks);
    }

    GL11.glEnable(GL11.GL_FOG);
    this.setupFog(1, renderPartialTicks);

    if (this.mc.gameSettings.ambientOcclusion != 0) {
        GL11.glShadeModel(GL11.GL_SMOOTH);
    }

    this.mc.mcProfiler.endStartSection("culling");
    Frustrum frustrum = new Frustrum();
    frustrum.setPosition(renderOriginX, renderOriginY, renderOriginZ);

    this.mc.renderGlobal.clipRenderersByFrustum(frustrum, renderPartialTicks);

    if (renderSceneNumber == 0) {
        this.mc.mcProfiler.endStartSection("updatechunks");

        while (!this.mc.renderGlobal.updateRenderers(renderViewEntity, false) && nextFrameTime != 0L) {
            long var15 = nextFrameTime - System.nanoTime();

            if (var15 < 0L || var15 > 1000000000L) {
                break;
            }
        }
    }

    if (renderViewEntity.posY < 128.0D) {
        this.renderCloudsCheck(renderGlobal, renderPartialTicks);
    }

    this.mc.mcProfiler.endStartSection("prepareterrain");
    this.setupFog(0, renderPartialTicks);
    GL11.glEnable(GL11.GL_FOG);
    this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
    RenderHelper.disableStandardItemLighting();
    this.mc.mcProfiler.endStartSection("terrain");
    renderGlobal.sortAndRender(renderViewEntity, 0, (double) renderPartialTicks);
    GL11.glShadeModel(GL11.GL_FLAT);
    boolean var16 = Reflector.ForgeHooksClient.exists();
    EntityPlayer var18;

    if (this.debugViewDirection == 0) {
        RenderHelper.enableStandardItemLighting();
        this.mc.mcProfiler.endStartSection("entities");

        if (var16) {
            Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(0) });
        }

        //TODO: multiple render passes for entities?
        renderGlobal.renderEntities(renderViewEntity.getPosition(renderPartialTicks), frustrum,
                renderPartialTicks);

        if (var16) {
            Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(-1) });
        }

        RenderHelper.disableStandardItemLighting();

    }

    GL11.glDisable(GL11.GL_BLEND);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glDepthMask(true);
    this.setupFog(0, renderPartialTicks);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDisable(GL11.GL_CULL_FACE);

    this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
    WrUpdates.resumeBackgroundUpdates();

    if (Config.isWaterFancy()) {
        this.mc.mcProfiler.endStartSection("water");

        if (this.mc.gameSettings.ambientOcclusion != 0) {
            GL11.glShadeModel(GL11.GL_SMOOTH);
        }

        GL11.glColorMask(false, false, false, false);
        int var17 = renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks);

        if (this.mc.gameSettings.anaglyph) {
            if (anaglyphField == 0) {
                GL11.glColorMask(false, true, true, true);
            } else {
                GL11.glColorMask(true, false, false, true);
            }
        } else {
            GL11.glColorMask(true, true, true, true);
        }

        if (var17 > 0) {
            renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks);
        }

        GL11.glShadeModel(GL11.GL_FLAT);
    } else {
        this.mc.mcProfiler.endStartSection("water");
        renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks);
    }

    WrUpdates.pauseBackgroundUpdates();

    if (var16 && this.debugViewDirection == 0) {
        RenderHelper.enableStandardItemLighting();
        this.mc.mcProfiler.endStartSection("entities");
        Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(1) });
        this.mc.renderGlobal.renderEntities(renderViewEntity.getPosition(renderPartialTicks), frustrum,
                renderPartialTicks);
        Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(-1) });
        RenderHelper.disableStandardItemLighting();
    }

    GL11.glDepthMask(true);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glDisable(GL11.GL_BLEND);

    boolean renderOutline = this.mc.vrSettings.alwaysRenderBlockOutline || !this.mc.gameSettings.hideGUI;
    if (this.mc.currentScreen == null && this.cameraZoom == 1.0D && renderViewEntity instanceof EntityPlayer
            && this.mc.objectMouseOver != null && !renderViewEntity.isInsideOfMaterial(Material.water)
            && renderOutline) {
        var18 = (EntityPlayer) renderViewEntity;
        GL11.glDisable(GL11.GL_ALPHA_TEST);
        this.mc.mcProfiler.endStartSection("outline");

        if (!var16 || !Reflector.callBoolean(Reflector.ForgeHooksClient_onDrawBlockHighlight,
                new Object[] { renderGlobal, var18, this.mc.objectMouseOver, Integer.valueOf(0),
                        var18.inventory.getCurrentItem(), Float.valueOf(renderPartialTicks) })) {
            renderGlobal.drawSelectionBox(var18, this.mc.objectMouseOver, 0, renderPartialTicks);
        }
        GL11.glEnable(GL11.GL_ALPHA_TEST);
    }

    if (this.mc.currentScreen == null && this.cameraZoom == 1.0D && renderViewEntity instanceof EntityPlayer
            && !renderViewEntity.isInsideOfMaterial(Material.water) && renderOutline
            && this.mc.vrSettings.showEntityOutline) {
        var18 = (EntityPlayer) renderViewEntity;
        if (var18 != null) {
            GL11.glDisable(GL11.GL_ALPHA_TEST);
            this.mc.mcProfiler.endStartSection("entityOutline");

            if (this.bb != null)
                drawBoundingBox(var18, this.bb, renderPartialTicks);

            GL11.glEnable(GL11.GL_ALPHA_TEST);
        }
    }

    this.mc.mcProfiler.endStartSection("destroyProgress");
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
    renderGlobal.drawBlockDamageTexture(Tessellator.instance, renderViewEntity, renderPartialTicks);
    GL11.glDisable(GL11.GL_BLEND);
    this.mc.mcProfiler.endStartSection("weather");
    this.renderRainSnow(renderPartialTicks);

    GL11.glDisable(GL11.GL_FOG);

    if (renderViewEntity.posY >= 128.0D) {
        this.renderCloudsCheck(renderGlobal, renderPartialTicks);
    }

    this.enableLightmap((double) renderPartialTicks);
    this.mc.mcProfiler.endStartSection("litParticles");
    RenderHelper.enableStandardItemLighting();
    effectRenderer.renderLitParticles(renderViewEntity, renderPartialTicks);
    RenderHelper.disableStandardItemLighting();
    this.setupFog(0, renderPartialTicks);
    this.mc.mcProfiler.endStartSection("particles");
    effectRenderer.renderParticles(renderViewEntity, renderPartialTicks);
    this.disableLightmap((double) renderPartialTicks);

    if (var16) {
        this.mc.mcProfiler.endStartSection("FRenderLast");
        Reflector.callVoid(Reflector.ForgeHooksClient_dispatchRenderLast,
                new Object[] { renderGlobal, Float.valueOf(renderPartialTicks) });
    }

    if (this.mc.vrSettings.renderFullFirstPersonModel == false) {
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
        this.renderHand(renderPartialTicks, renderSceneNumber);
    }

    GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); //white crosshair, with blending
    //Draw crosshair
    boolean renderCrosshair = this.mc.vrSettings.alwaysRenderInGameCrosshair || !this.mc.gameSettings.hideGUI;

    if (this.mc.currentScreen == null && this.mc.gameSettings.thirdPersonView == 0 && renderCrosshair) {
        this.mc.mcProfiler.endStartSection("crosshair");
        float crossDepth = (float) Math.sqrt((crossX * crossX + crossY * crossY + crossZ * crossZ));
        float scale = 0.025f * crossDepth * this.mc.vrSettings.crosshairScale;

        GL11.glPushMatrix();
        GL11.glTranslatef(crossX, crossY, crossZ);
        GL11.glRotatef(-this.aimYaw, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(this.aimPitch, 1.0F, 0.0F, 0.0F);
        if (this.mc.vrSettings.crosshairRollsWithHead)
            GL11.glRotatef(this.cameraRoll, 0.0F, 0.0F, 1.0F);
        GL11.glScalef(-scale, -scale, scale);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR);
        this.mc.getTextureManager().bindTexture(Gui.icons);

        float var7 = 0.00390625F;
        float var8 = 0.00390625F;
        Tessellator.instance.startDrawingQuads();
        Tessellator.instance.addVertexWithUV(-1, +1, 0, 0, 16 * var8);
        Tessellator.instance.addVertexWithUV(+1, +1, 0, 16 * var7, 16 * var8);
        Tessellator.instance.addVertexWithUV(+1, -1, 0, 16 * var7, 0);
        Tessellator.instance.addVertexWithUV(-1, -1, 0, 0, 0);
        Tessellator.instance.draw();
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glPopMatrix();
        //mc.checkGLError("crosshair");
    }

    this.mc.mcProfiler.endSection();
}

From source file:com.opengrave.og.base.Picking.java

License:Open Source License

public static void pickRender(BaseState s) {
    GL11.glClearColor(0, 0, 0, 0);
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
    allPickables = new HashMap<Long, Pickable>();
    lastInt = 1;//from  w ww  .  j ava  2 s . c  om
    MainThread.set2D();
    s.renderGuiForPicking();
}

From source file:com.opengrave.og.base.Picking.java

License:Open Source License

public static void pickCleanup() {
    lastInt = 0;/*from www . j av a  2 s. co m*/
    allPickables = null;
    GL11.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
}

From source file:com.opengrave.og.engine.RenderView.java

License:Open Source License

public void render(int totalx, int totaly, int width, int height) {
    this.totalx = totalx;
    this.totaly = totaly;
    this.width = width;
    this.height = height;
    if (sceneNode == null) {
        System.out.println("No scene node to render");
        return;//  w  w  w.  j a v  a  2 s .c  om
    }
    if (cam == null) {
        System.out.println("No camera to render from");
        return;
    }
    Shadow2D skyLight = sceneNode.getSkyLight();
    if (shadows && hasshadows) {
        // For each light source we map out a texture using a quick
        // render.
        prepare3DShadow();

        skyLight.getFramebuffer().bindDraw();
        // GL11.glEnable(GL32.GL_DEPTH_CLAMP); // TODO Simu;ate depth clamp in shadow shader when z < 0. This way we force distanced objects to still cast a shadow.
        sceneNode.renderShadows(ident, skyLight);
        skyLight.getFramebuffer().unbindDraw();
        int count = 0;
        ArrayList<PointLightNode> lightList = new ArrayList<PointLightNode>();
        sceneNode.getAllLights(lightList, ident, cam.getLocation().toVector4());
        Collections.sort(lightList, new PointLightSorter());
        for (PointLightNode light : lightList) {
            if (light.getColour().x > 0 || light.getColour().y > 0 || light.getColour().z > 0) {
                // Render each face
                if (lightShadows.size() == count) {
                    ShadowCube shadow = new ShadowCube(MainThread.config.getInteger("shadowSize", 1024));
                    lightShadows.add(shadow);
                }
                ShadowCube shadow = lightShadows.get(count);
                shadow.setLight(light);
                for (int i = 0; i < 6; i++) {
                    shadow.getFramebuffer().bindDraw(i);
                    Util.checkErr();
                    shadow.setFace(i);
                    Util.checkErr();
                    sceneNode.renderShadows(ident, shadow);
                    Util.checkErr();
                    shadow.getFramebuffer().unbindDraw();
                    Util.checkErr();
                }

                count++;
            }
            if (count == 16) {
                break;
            }
        }
        GL11.glDisable(GL11.GL_POLYGON_OFFSET_FILL);

    }
    GL11.glViewport(totalx, totaly, width, height);
    GL11.glScissor(totalx, totaly, width, height);
    GL11.glEnable(GL11.GL_SCISSOR_TEST);
    GL11.glClearColor(clearCol.x, clearCol.y, clearCol.z, clearCol.w);
    GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | (clear ? GL11.GL_COLOR_BUFFER_BIT : 0));
    Util.checkErr();

    prepare3DOpaque();
    sceneNode.render(ident);
    Util.checkErr();
    prepare3DTransparent();
    sceneNode.renderSemiTransparent(ident);
    MouseRenderableHoverEvent lF = MainThread.main.input.getLastHovered();
    if (lF != null) {
        if (lF.getRenderable() instanceof BaseObject) {
            /*
             * GL11.glDepthFunc(GL11.GL_LESS);
             * GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
             * GL11.glPolygonMode(GL11.GL_BACK, GL11.GL_LINE);
             * 
             * GL11.glLineWidth(10f);
             * GL11.glCullFace(GL11.GL_FRONT);
             * GL11.glEnable(GL11.GL_CULL_FACE);
             * GL11.glDisable(GL11.GL_BLEND);
             * BaseObject bo = (BaseObject) lF.getRenderable();
             * RenderStyle rs = bo.getRenderStyle();
             * bo.setRenderStyle(RenderStyle.HALO);
             * sceneNode.renderOne(ident, bo, ident);
             * 
             * GL11.glDisable(GL11.GL_BLEND);
             * 
             * bo.setRenderStyle(rs);
             * GL11.glCullFace(GL11.GL_BACK);
             * GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
             * GL11.glPolygonMode(GL11.GL_BACK, GL11.GL_FILL);
             * 
             * GL11.glLineWidth(1f);
             * sceneNode.renderOne(ident, bo, ident);
             */

        }
    }

    revertSettings();
    GL11.glDisable(GL11.GL_SCISSOR_TEST);

}

From source file:com.opengrave.og.MainThread.java

License:Open Source License

public void gameLoop() {
    Util.checkErr();/*from w ww  .j  a va  2  s  .  c  om*/
    double lasttime = getTime(), lastFPS = getTime();
    int fps = 0;
    while (running) {
        if (needsConfigUpdate) {
            createConfig();
            needsConfigUpdate = false;
        }
        synchronized (toDoList) {
            while (toDoList.size() > 0) {
                Runnable runnable = toDoList.remove(0);
                runnable.run();
            }
        }

        if (nextState != null) {

            // Something has caused us to switch states, stop the last
            // cleanly and start the next
            if (state != null) {
                state.stop();
                state.finalise();
            }

            state = nextState;
            state.prestart();
            state.start();

            nextState = null;
        }
        // Update FPS counter in window title TODO: Remove from window title
        // and place into a debug context ingame
        if (getTime() - lastFPS > 1000) {
            // use fps value
            fps = 0;
            lastFPS += 1000;
        }

        fps++;
        // Prepare time delta for updating graphics
        double time = getTime();
        float delta = (float) (time - lasttime); // TODO Change delta to double as a rule?
        lasttime = time;
        input.doEet(state, delta);
        Util.checkErr();
        state.updateGUI(delta);
        Util.checkErr();
        state.update(delta); // Pre-render update
        Util.checkErr();

        // Clear frame ready for next frame
        GL11.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
        GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_COLOR_BUFFER_BIT);
        GL11.glViewport(0, 0, lastW, lastH);

        set2D();
        state.renderGUI();
        if (glfwWindowShouldClose(window) == GL_TRUE) {
            running = false;
        }
        glfwPollEvents();
        // if (fpsCap > 10) {
        glfwSwapBuffers(window);
        // }
        Util.checkErr();

    }

    running = false;
    // soundSystem.cleanup();
    System.exit(1);
}

From source file:com.opengrave.og.MainThread.java

License:Open Source License

protected void initGL() {
    if (glfwInit() != GLFW_TRUE) {
        System.exit(1);//from www  .j a va 2s .  co m
    }
    glfwDefaultWindowHints();
    glfwWindowHint(GLFW_VISIBLE, GLFW_TRUE);
    glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
    window = glfwCreateWindow(800, 600, "HiddenGrave", NULL, NULL);
    if (window == NULL) {
        System.exit(1);
    }
    glfwMakeContextCurrent(window);
    glfwSwapInterval(1); // TODO condig of vsync. Enable vsync
    GL.createCapabilities();
    glfwSetFramebufferSizeCallback(window, (framebufferSizeCallback = new GLFWFramebufferSizeCallback() {
        @Override
        public void invoke(long window, int width, int height) {
            onResize(width, height);
        }
    }));
    onResize(800, 600);
    // TODO Check all extensions. TEX 2D ARRAY, GLSL 130
    createConfig();

    Util.initMatrices();
    Renderable.init();
    GUIXML.init();

    // Prepare Lighting
    initLighting();
    // Default Values
    GL11.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); // sets background to grey
    Util.checkErr();
    GL11.glClearDepth(1.0f); // clear depth buffer
    Util.checkErr();
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Enables depth testing
    Util.checkErr();
    GL11.glDepthFunc(GL11.GL_LEQUAL); // sets the type of test to use for
    // depth testing
    GL11.glEnable(GL11.GL_BLEND);
    Resources.loadTextures(); // Reconsider positioning. Other than GUI
    // texture we could offset these in another
    // thread... Possibly?
    Resources.loadModels();
    Resources.loadFonts();

}

From source file:com.runescape.client.revised.client.lwjgl.RenderUtilities.java

License:Open Source License

public static void initializeGraphics() {
    GL11.glClearColor(0.0F, 0.0F, 0.0F, 0.0F);
    GL11.glFrontFace(GL11.GL_CW);// ww w .  j a  v  a  2 s.c  o m
    GL11.glCullFace(GL11.GL_BACK);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL30.GL_FRAMEBUFFER_SRGB);
    // TODO: Depth clamp
}