Example usage for org.lwjgl.opengl GL11 glStencilMask

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

Introduction

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

Prototype

public static void glStencilMask(@NativeType("GLuint") int mask) 

Source Link

Document

Masks the writing of particular bits into the stencil plans.

Usage

From source file:blusunrize.immersiveengineering.client.render.TileRenderBottlingMachine.java

@Override
public void render(TileEntityBottlingMachine te, double x, double y, double z, float partialTicks,
        int destroyStage, float alpha) {
    if (!te.formed || te.isDummy() || !te.getWorld().isBlockLoaded(te.getPos(), false))
        return;/*from w  ww.  j  a v  a2  s. c o m*/

    //Grab model + correct eextended state
    final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
    BlockPos blockPos = te.getPos();
    IBlockState state = getWorld().getBlockState(blockPos);
    if (state.getBlock() != IEContent.blockMetalMultiblock)
        return;
    state = state.getBlock().getActualState(state, getWorld(), blockPos);
    state = state.withProperty(IEProperties.DYNAMICRENDER, true);
    IBakedModel model = blockRenderer.getBlockModelShapes().getModelForState(state);

    //Initialize Tesselator and BufferBuilder
    Tessellator tessellator = Tessellator.getInstance();
    BufferBuilder worldRenderer = tessellator.getBuffer();
    //Outer GL Wrapping, initial translation
    GlStateManager.pushMatrix();
    GlStateManager.translate(x + .5, y + .5, z + .5);
    if (te.mirrored)
        GlStateManager.scale(te.facing.getXOffset() == 0 ? -1 : 1, 1, te.facing.getZOffset() == 0 ? -1 : 1);

    //Item Displacement
    float[][] itemDisplays = new float[te.bottlingProcessQueue.size()][];
    //Animations
    float lift = 0;

    for (int i = 0; i < itemDisplays.length; i++) {
        BottlingProcess process = te.bottlingProcessQueue.get(i);
        if (process == null || process.processTick == process.maxProcessTick)
            continue;

        //+partialTicks
        float processTimer = ((float) process.processTick) / process.maxProcessTick * 120;

        float itemX = -1.5f;//-1;
        float itemY = -.15625f;// -.34375f;
        float itemZ = 1;//-.9375f;
        float itemFill = 0;//ClientUtils.mc().player.ticksExisted%100; //0f;

        if (processTimer <= 35)//slide
        {
            itemX += processTimer / 35f * 1.5;
        } else if (processTimer <= 85)//slide
        {
            itemX = 0;
            if (processTimer <= 55)
                lift = (processTimer - 35) / 20f * .125f;
            else if (processTimer <= 65) {
                lift = .125f;
                itemFill = (processTimer - 55) / 10f;
            } else {
                lift = (85 - processTimer) / 20f * .125f;
                itemFill = 1;
            }
            itemY += lift;
            lift += .0625;
        } else {
            itemX = (processTimer - 85) / 35f * 1.5f;
            itemFill = 1;
        }
        itemDisplays[i] = new float[] { processTimer, itemX, itemY, itemZ, itemFill };

    }

    ClientUtils.bindAtlas();
    GlStateManager.pushMatrix();

    GlStateManager.translate(0, lift, 0);
    renderModelPart(blockRenderer, tessellator, worldRenderer, te.getWorld(), state, model, blockPos, "lift");
    GlStateManager.translate(0, -lift, 0);

    RenderHelper.enableStandardItemLighting();
    GlStateManager.popMatrix();

    switch (te.facing) {
    case NORTH:
        break;
    case SOUTH:
        GlStateManager.rotate(180, 0, 1, 0);
        break;
    case WEST:
        GlStateManager.rotate(90, 0, 1, 0);
        break;
    case EAST:
        GlStateManager.rotate(-90, 0, 1, 0);
        break;
    }

    float scale = .0625f;
    FluidStack fs = te.tanks[0].getFluid();
    if (fs != null) {
        GlStateManager.pushMatrix();
        float level = fs.amount / (float) te.tanks[0].getCapacity();
        GlStateManager.translate(-.21875, .376, 1.21875);
        GlStateManager.scale(scale, scale, scale);
        float h = level * 9;
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        GlStateManager.translate(-7, 0, 7);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);

        GlStateManager.rotate(90, 1, 0, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, 7);
        GlStateManager.translate(0, 0, -h);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, 7);

        GlStateManager.scale(1 / scale, 1 / scale, 1 / scale);
        GlStateManager.translate(0, -1, -1);
        GlStateManager.popMatrix();
    }

    //DRAW ITEMS HERE
    for (int i = 0; i < itemDisplays.length; i++)
        if (itemDisplays[i] != null) {
            BottlingProcess process = te.bottlingProcessQueue.get(i);
            if (process == null)
                continue;

            ItemStack display = itemDisplays[i][4] == 0 || process.items.get(1).isEmpty() ? process.items.get(0)
                    : process.items.get(1);
            scale = .4375f;

            GlStateManager.translate(itemDisplays[i][1], itemDisplays[i][2], itemDisplays[i][3]);
            GlStateManager.scale(scale, scale, scale);

            if (itemDisplays[i][4] == 0)
                ClientUtils.mc().getRenderItem().renderItem(process.items.get(0),
                        ItemCameraTransforms.TransformType.FIXED);
            else if (itemDisplays[i][4] == 1 || !ClientProxy.stencilBufferEnabled)
                ClientUtils.mc().getRenderItem().renderItem(display, ItemCameraTransforms.TransformType.FIXED);
            else {
                float h0 = -.5f;
                float h1 = h0 + itemDisplays[i][4];

                BufferBuilder worldrenderer = tessellator.getBuffer();

                //TODO move to GlStateManager if that ever gets the stencil functions
                GL11.glEnable(GL11.GL_STENCIL_TEST);

                GlStateManager.colorMask(false, false, false, false);
                GlStateManager.depthMask(false);

                GL11.glStencilFunc(GL11.GL_NEVER, 1, 0xFF);
                GL11.glStencilOp(GL11.GL_REPLACE, GL11.GL_KEEP, GL11.GL_KEEP);

                GL11.glStencilMask(0xFF);
                GlStateManager.clear(GL11.GL_STENCIL_BUFFER_BIT);

                GlStateManager.rotate(90.0F - ClientUtils.mc().getRenderManager().playerViewY, 0.0F, 1.0F,
                        0.0F);

                GlStateManager.disableTexture2D();
                worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
                ClientUtils.renderBox(worldrenderer, -.5, h0, -.5, .5, h1, .5);
                tessellator.draw();
                GlStateManager.enableTexture2D();

                GlStateManager.rotate(-(90.0F - ClientUtils.mc().getRenderManager().playerViewY), 0.0F, 1.0F,
                        0.0F);

                GlStateManager.colorMask(true, true, true, true);
                GlStateManager.depthMask(true);

                GL11.glStencilMask(0x00);

                GL11.glStencilFunc(GL11.GL_EQUAL, 0, 0xFF);
                ClientUtils.mc().getRenderItem().renderItem(process.items.get(0),
                        ItemCameraTransforms.TransformType.FIXED);

                GL11.glStencilFunc(GL11.GL_EQUAL, 1, 0xFF);
                ClientUtils.mc().getRenderItem().renderItem(display, ItemCameraTransforms.TransformType.FIXED);

                GL11.glDisable(GL11.GL_STENCIL_TEST);
            }

            GlStateManager.scale(1 / scale, 1 / scale, 1 / scale);
            GlStateManager.translate(-itemDisplays[i][1], -itemDisplays[i][2], -itemDisplays[i][3]);
        }
    GlStateManager.popMatrix();
}

From source file:com.ardor3d.renderer.lwjgl.LwjglRenderer.java

License:Open Source License

public void clearBuffers(final int buffers, final boolean strict) {

    int clear = 0;

    if ((buffers & Renderer.BUFFER_COLOR) != 0) {
        clear |= GL11.GL_COLOR_BUFFER_BIT;
    }// w ww.  j  a v a 2  s . c  o  m

    if ((buffers & Renderer.BUFFER_DEPTH) != 0) {
        clear |= GL11.GL_DEPTH_BUFFER_BIT;

        // make sure no funny business is going on in the z before clearing.
        if (defaultStateList.containsKey(RenderState.StateType.ZBuffer)) {
            defaultStateList.get(RenderState.StateType.ZBuffer).setNeedsRefresh(true);
            doApplyState(defaultStateList.get(RenderState.StateType.ZBuffer));
        }
    }

    if ((buffers & Renderer.BUFFER_STENCIL) != 0) {
        clear |= GL11.GL_STENCIL_BUFFER_BIT;

        GL11.glClearStencil(_stencilClearValue);
        GL11.glStencilMask(~0);
        GL11.glClear(GL11.GL_STENCIL_BUFFER_BIT);
    }

    if ((buffers & Renderer.BUFFER_ACCUMULATION) != 0) {
        clear |= GL11.GL_ACCUM_BUFFER_BIT;
    }

    final RenderContext context = ContextManager.getCurrentContext();
    final RendererRecord record = context.getRendererRecord();

    if (strict) {
        // grab our camera to get width and height info.
        final Camera cam = Camera.getCurrentCamera();

        GL11.glEnable(GL11.GL_SCISSOR_TEST);
        GL11.glScissor(0, 0, cam.getWidth(), cam.getHeight());
        record.setClippingTestEnabled(true);
    }

    GL11.glClear(clear);

    if (strict) {
        // put us back.
        LwjglRendererUtil.applyScissors(record);
    }
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglStencilStateUtil.java

License:Open Source License

private static void applyMask(final int writeMask, final StencilStateRecord record, final int face) {
    // if (!record.isValid() || writeMask != record.writeMask[face]) {
    GL11.glStencilMask(writeMask);
    // record.writeMask[face] = writeMask;
    // }/*from   w  w w. j  a va 2  s .  co  m*/
}

From source file:com.badlogic.gdx.backends.jglfw.JglfwGL20.java

License:Apache License

public void glStencilMask(int mask) {
    GL11.glStencilMask(mask);
}

From source file:com.badlogic.gdx.backends.lwjgl.LwjglGL10.java

License:Apache License

public final void glStencilMask(int mask) {
    GL11.glStencilMask(mask);
}

From source file:io.root.gfx.glutils.GL.java

License:Apache License

public static void glStencilMask(int mask) {
    GL11.glStencilMask(mask);
}

From source file:matteroverdrive.util.RenderUtils.java

License:Open Source License

public static void drawStencil(int xMin, int yMin, int xMax, int yMax, int mask) {
    GL11.glDisable(GL_TEXTURE_2D);//from   ww w.  ja va  2  s  .  co  m
    GL11.glStencilFunc(GL_ALWAYS, mask, mask);
    GL11.glStencilOp(0, 0, GL_REPLACE);
    GL11.glStencilMask(1);
    GL11.glColorMask(false, false, false, false);
    GL11.glDepthMask(false);
    Tessellator.instance.startDrawingQuads();
    Tessellator.instance.addVertex((double) xMin, (double) yMax, 0.0D);
    Tessellator.instance.addVertex((double) xMax, (double) yMax, 0.0D);
    Tessellator.instance.addVertex((double) xMax, (double) yMin, 0.0D);
    Tessellator.instance.addVertex((double) xMin, (double) yMin, 0.0D);
    Tessellator.instance.draw();
    GL11.glEnable(GL_TEXTURE_2D);
    GL11.glStencilFunc(GL_EQUAL, mask, mask);
    GL11.glStencilMask(0);
    GL11.glColorMask(true, true, true, true);
    GL11.glDepthMask(true);
}

From source file:org.oscim.gdx.LwjglGL20.java

License:Apache License

public void stencilMask(int mask) {
    GL11.glStencilMask(mask);
}

From source file:org.spoutcraft.api.gui.renderer.GuiRendererFBO.java

License:MIT License

@Override
public void setClip(int x, int y, int width, int height) {
    super.setClip(x, y, width, height);
    GL11.glColorMask(false, false, false, false);
    GL11.glDepthMask(false);//from www. jav  a2s .  co m
    GL11.glStencilFunc(GL11.GL_NEVER, 1, 0xFF);
    GL11.glStencilOp(GL11.GL_REPLACE, GL11.GL_KEEP, GL11.GL_KEEP);
    GL11.glStencilMask(0xFF);
    clearClip();
    //Actually fill stencil area
    RenderUtil.drawRect(x, y, width, height, Color.WHITE);

    GL11.glColorMask(true, true, true, true);
    GL11.glDepthMask(true);
    GL11.glStencilMask(0x00);
    GL11.glStencilFunc(GL11.GL_EQUAL, 1, 0xFF);
}

From source file:playn.java.JavaGL20.java

License:Apache License

@Override
public void glStencilMask(int mask) {
    GL11.glStencilMask(mask);
}