Search in sources :

Example 6 with Shader

use of io.xol.chunkstories.api.rendering.shader.Shader in project chunkstories-core by Hugobros3.

the class DefaultSkyRenderer method render.

public void render(RenderingInterface renderingContext) {
    try {
        long worldTime = renderingContext.getWorldRenderer().getWorld().getTime();
        this.dayTime = (worldTime % 10000) / 10000f;
    } catch (NullPointerException e) {
    }
    renderingContext.setDepthTestMode(DepthTestMode.DISABLED);
    renderingContext.setBlendMode(BlendMode.DISABLED);
    renderingContext.setCullingMode(CullingMode.DISABLED);
    renderingContext.getRenderTargetManager().setDepthMask(false);
    Vector3f sunPosVector = getSunPosition();
    Shader skyShader = renderingContext.useShader("sky");
    skyShader.setUniform1f("overcastFactor", world.getWeather());
    skyShader.setUniform3f("sunPos", sunPosVector.x(), sunPosVector.y(), sunPosVector.z());
    skyShader.setUniform1f("time", dayTime);
    renderingContext.getCamera().setupShader(skyShader);
    renderingContext.drawFSQuad();
    renderingContext.setBlendMode(BlendMode.MIX);
    Shader starsShader = renderingContext.useShader("stars");
    starsShader.setUniform3f("sunPos", sunPosVector.x(), sunPosVector.y(), sunPosVector.z());
    starsShader.setUniform3f("color", 1f, 1f, 1f);
    renderingContext.getCamera().setupShader(starsShader);
    int NB_STARS = 500;
    // starsVertexBuffer = null;
    if (starsVertexBuffer == null) {
        starsVertexBuffer = renderingContext.newVertexBuffer();
        ByteBuffer bb = ByteBuffer.allocateDirect(4 * 3 * NB_STARS);
        bb.order(ByteOrder.LITTLE_ENDIAN);
        // System.out.println(stars.order());
        for (int i = 0; i < NB_STARS; i++) {
            Vector3f star = new Vector3f((float) Math.random() * 2f - 1f, (float) Math.random(), (float) Math.random() * 2f - 1f);
            star.normalize();
            star.mul(100f);
            bb.putFloat(star.x());
            bb.putFloat(star.y());
            bb.putFloat(star.z());
        // stars.put(new float[] { star.x(), star.y(), star.z() });
        }
        bb.flip();
        starsVertexBuffer.uploadData(bb);
    }
    renderingContext.bindAttribute("vertexIn", starsVertexBuffer.asAttributeSource(VertexFormat.FLOAT, 3));
    renderingContext.draw(Primitive.POINT, 0, NB_STARS);
    renderingContext.getRenderTargetManager().setDepthMask(true);
    renderingContext.setBlendMode(BlendMode.DISABLED);
    renderingContext.setDepthTestMode(DepthTestMode.LESS_OR_EQUAL);
    cloudsRenderer.renderClouds(renderingContext);
}
Also used : Vector3f(org.joml.Vector3f) Shader(io.xol.chunkstories.api.rendering.shader.Shader) ByteBuffer(java.nio.ByteBuffer)

Example 7 with Shader

use of io.xol.chunkstories.api.rendering.shader.Shader in project chunkstories-core by Hugobros3.

the class BloomPass method render.

@Override
public void render(RenderingInterface renderer) {
    bloomBuffer.setLinearFiltering(true);
    renderer.setDepthTestMode(DepthTestMode.DISABLED);
    renderer.setBlendMode(BlendMode.DISABLED);
    Shader bloomShader = renderer.useShader("bloom");
    renderer.getCamera().setupShader(bloomShader);
    // bloomShader.setUniform1f("apertureModifier", 1.0f);
    bloomShader.setUniform2f("screenSize", renderer.getWindow().getWidth() / 2f, renderer.getWindow().getHeight() / 2f);
    renderer.getRenderTargetManager().setConfiguration(fboBloom);
    renderer.drawFSQuad();
    // Blur bloom
    // Vertical pass
    renderer.getRenderTargetManager().setConfiguration(fboBlur);
    Shader blurV = renderer.useShader("blurV");
    blurV.setUniform2f("screenSize", renderer.getWindow().getWidth() / 2f, renderer.getWindow().getHeight() / 2f);
    blurV.setUniform1f("lookupScale", 1);
    renderer.bindTexture2D("inputTexture", bloomBuffer);
    renderer.drawFSQuad();
    // Horizontal pass
    renderer.getRenderTargetManager().setConfiguration(fboBloom);
    Shader blurH = renderer.useShader("blurH");
    blurH.setUniform2f("screenSize", renderer.getWindow().getWidth() / 2f, renderer.getWindow().getHeight() / 2f);
    renderer.bindTexture2D("inputTexture", blurBuffer);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setConfiguration(fboBlur);
    blurV = renderer.useShader("blurV");
    blurV.setUniform2f("screenSize", renderer.getWindow().getWidth() / 4f, renderer.getWindow().getHeight() / 4f);
    blurV.setUniform1f("lookupScale", 1);
    renderer.bindTexture2D("inputTexture", bloomBuffer);
    renderer.drawFSQuad();
    // Horizontal pass
    renderer.getRenderTargetManager().setConfiguration(fboBloom);
    blurH = renderer.useShader("blurH");
    blurH.setUniform2f("screenSize", renderer.getWindow().getWidth() / 4f, renderer.getWindow().getHeight() / 4f);
    renderer.bindTexture2D("inputTexture", blurBuffer);
    renderer.drawFSQuad();
}
Also used : Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Example 8 with Shader

use of io.xol.chunkstories.api.rendering.shader.Shader in project chunkstories-core by Hugobros3.

the class DecalsPass method render.

@Override
public void render(RenderingInterface renderer) {
    renderer.getRenderTargetManager().setConfiguration(fbo);
    renderer.setBlendMode(BlendMode.MIX);
    renderer.setCullingMode(CullingMode.DISABLED);
    renderer.setDepthTestMode(DepthTestMode.LESS_OR_EQUAL);
    Shader decalsShader = renderer.useShader("decals");
    renderer.getCamera().setupShader(decalsShader);
    renderer.getRenderTargetManager().setDepthMask(false);
    worldRenderer.getDecalsRenderer().renderDecals(renderer);
    renderer.getRenderTargetManager().setDepthMask(true);
}
Also used : Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Example 9 with Shader

use of io.xol.chunkstories.api.rendering.shader.Shader in project chunkstories by Hugobros3.

the class FakeImmediateModeDebugRenderer method glEnd.

public static void glEnd() {
    OpenGLRenderingContext renderingContext = Client.getInstance().getGameWindow().getRenderingInterface();
    renderingContext.setCullingMode(CullingMode.DISABLED);
    renderingContext.setBlendMode(BlendMode.MIX);
    renderingContext.setDepthTestMode(DepthTestMode.LESS_OR_EQUAL);
    // ShadersLibrary.getShaderProgram("overlay");
    Shader overlayProgram = renderingContext.useShader("overlay");
    camera.setupShader(overlayProgram);
    overlayProgram.setUniform4f("colorIn", color);
    data.flip();
    vertexBuffer.uploadData(data);
    renderingContext.bindAttribute("vertexIn", vertexBuffer.asAttributeSource(VertexFormat.FLOAT, 3));
    // renderingContext.bindAttribute("vertexIn", new FloatBufferAttributeSource(data, 3));
    renderingContext.draw(mode == GL_TRIANGLES ? Primitive.TRIANGLE : Primitive.LINE, 0, size);
    renderingContext.setBlendMode(BlendMode.DISABLED);
    data.clear();
    size = 0;
}
Also used : OpenGLRenderingContext(io.xol.chunkstories.renderer.OpenGLRenderingContext) Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Example 10 with Shader

use of io.xol.chunkstories.api.rendering.shader.Shader in project chunkstories by Hugobros3.

the class SkyBoxBackground method render.

@Override
public void render(RenderingInterface renderer) {
    if (gameWindow.getLayer() == this)
        gameWindow.setLayer(new MainMenu(gameWindow, this));
    try // Ugly fps caps yay
    {
        Thread.sleep(33L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    // Render this shit boy
    renderer.getRenderTargetManager().setConfiguration(unblurredFBO);
    camera.setupUsingScreenSize(gameWindow.getWidth(), gameWindow.getHeight());
    Shader menuSkyBox = renderer.useShader("mainMenuSkyBox");
    camera.setupShader(menuSkyBox);
    renderer.bindCubemap("skybox", TexturesHandler.getCubemap(skyBox));
    camera.setRotationX(35 + (float) (Math.sin(camera.getRotationY() / 15)) * 5f);
    camera.setRotationY((System.currentTimeMillis() % 1000000) / 200.0f);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setConfiguration(blurredHFBO);
    Shader blurH = renderer.useShader("blurH");
    blurH.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    renderer.bindTexture2D("inputTexture", unblurred);
    renderer.drawFSQuad();
    for (int i = 0; i < 1; i++) {
        renderer.getRenderTargetManager().setConfiguration(blurredVFBO);
        Shader blurV = renderer.useShader("blurV");
        blurV.setUniform1f("lookupScale", 1);
        blurV.setUniform2f("screenSize", gameWindow.getWidth() / 2, gameWindow.getHeight() / 2);
        renderer.bindTexture2D("inputTexture", blurredH);
        renderer.drawFSQuad();
        renderer.getRenderTargetManager().setConfiguration(blurredHFBO);
        blurH = renderer.useShader("blurH");
        blurH.setUniform2f("screenSize", gameWindow.getWidth() / 2, gameWindow.getHeight() / 2);
        renderer.bindTexture2D("inputTexture", blurredV);
        renderer.drawFSQuad();
    }
    renderer.getRenderTargetManager().setConfiguration(blurredVFBO);
    Shader blurV = renderer.useShader("blurV");
    blurV.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    renderer.bindTexture2D("inputTexture", blurredH);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setConfiguration(null);
    Shader blit = renderer.useShader("background");
    blit.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    Texture2DGL backgroundTexture = TexturesHandler.getTexture("./textures/gui/darker.png");
    backgroundTexture.setLinearFiltering(false);
    renderer.bindTexture2D("diffuseTexture", backgroundTexture);
    renderer.bindTexture2D("backgroundTexture", blurredV);
    renderer.drawFSQuad();
    Texture2DGL logoTexture = TexturesHandler.getTexture("./textures/gui/icon.png");
    float alphaIcon = (float) (0.25 + Math.sin((System.currentTimeMillis() % (1000 * 60 * 60) / 3000f)) * 0.25f);
    renderer.setBlendMode(BlendMode.MIX);
    float diagonal = (float) Math.sqrt(gameWindow.getWidth() * gameWindow.getWidth() + gameWindow.getHeight() * gameWindow.getHeight());
    float iconSize = (float) (diagonal / 3 + 50 * Math.sin((System.currentTimeMillis() % (1000 * 60 * 60) / 30000f)));
    renderer.getGuiRenderer().drawBoxWindowsSpace(gameWindow.getWidth() / 2 - iconSize / 2, gameWindow.getHeight() / 2 - iconSize / 2, gameWindow.getWidth() / 2 + iconSize / 2, gameWindow.getHeight() / 2 + iconSize / 2, 0, 1, 1, 0, logoTexture, true, true, new Vector4f(1.0f, 1.0f, 1.0f, alphaIcon));
}
Also used : Vector4f(org.joml.Vector4f) Texture2DGL(io.xol.chunkstories.renderer.opengl.texture.Texture2DGL) Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Aggregations

Shader (io.xol.chunkstories.api.rendering.shader.Shader)27 Texture2D (io.xol.chunkstories.api.rendering.textures.Texture2D)9 Vector4f (org.joml.Vector4f)5 ByteBuffer (java.nio.ByteBuffer)4 Matrix4f (org.joml.Matrix4f)4 CollisionBox (io.xol.chunkstories.api.physics.CollisionBox)3 GameWindow (io.xol.chunkstories.api.rendering.GameWindow)3 Vector3f (org.joml.Vector3f)3 Location (io.xol.chunkstories.api.Location)2 Player (io.xol.chunkstories.api.player.Player)2 Voxel (io.xol.chunkstories.api.voxel.Voxel)2 CellData (io.xol.chunkstories.api.world.cell.CellData)2 MemFreeByteBuffer (io.xol.chunkstories.client.util.MemFreeByteBuffer)2 HeightmapImplementation (io.xol.chunkstories.world.summary.HeightmapImplementation)2 Vector2d (org.joml.Vector2d)2 Vector3dc (org.joml.Vector3dc)2 Layer (io.xol.chunkstories.api.gui.Layer)1 ItemVoxel (io.xol.chunkstories.api.item.ItemVoxel)1 RenderPass (io.xol.chunkstories.api.rendering.pass.RenderPass)1 DummyCell (io.xol.chunkstories.api.world.cell.DummyCell)1