Search in sources :

Example 26 with Shader

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

the class ApplySunlightPass method render.

@Override
public void render(RenderingInterface renderer) {
    Shader applyShadowsShader = renderer.useShader("shadows_apply");
    world.getGenerator().getEnvironment().setupShadowColors(renderer, applyShadowsShader);
    applyShadowsShader.setUniform1f("animationTimer", worldRenderer.getAnimationTimer());
    applyShadowsShader.setUniform1f("overcastFactor", world.getWeather());
    applyShadowsShader.setUniform1f("wetness", world.getGenerator().getEnvironment().getWorldWetness(renderer.getCamera().getCameraPosition()));
    renderer.setDepthTestMode(DepthTestMode.DISABLED);
    renderer.setBlendMode(BlendMode.DISABLED);
    renderer.getRenderTargetManager().setConfiguration(fbo);
    float lightMultiplier = 1.0f;
    applyShadowsShader.setUniform1f("brightnessMultiplier", lightMultiplier);
    RenderPass giPass = this.pipeline.getRenderPass("gi");
    if (giPass != null && giPass instanceof GiPass) {
        GiPass gi = (GiPass) giPass;
        renderer.bindTexture2D("giBuffer", gi.giTexture());
        renderer.bindTexture2D("giConfidence", gi.confidenceTexture());
        applyShadowsShader.setUniform1f("accumulatedSamples", gi.accumulatedSamples);
    // System.out.println("samples:"+gi.accumulatedSamples );
    }
    /*if(albedoBuffer == normalBuffer || albedoBuffer == zBuffer)
			System.out.println("well fuck"+normalBuffer);
		
		renderer.bindTexture2D("albedoBuffer", albedoBuffer);
		renderer.bindTexture2D("depthBuffer", zBuffer);
		renderer.bindTexture2D("normalBuffer", normalBuffer);
		//TODO materials
		//renderingContext.bindTexture2D("specularityBuffer", renderBuffers.rbSpecularity);
		renderer.bindTexture2D("voxelLightBuffer", voxelLightBuffer);*/
    renderer.textures().getTexture("./textures/environement/light.png").setTextureWrapping(false);
    renderer.bindTexture2D("blockLightmap", renderer.textures().getTexture("./textures/environement/light.png"));
    Texture2D lightColors = renderer.textures().getTexture("./textures/environement/lightcolors.png");
    renderer.textures().getTexture("./textures/environement/lightcolors.png").setTextureWrapping(false);
    renderer.bindTexture2D("lightColors", lightColors);
    if (shadowPass != null) {
        renderer.bindTexture2D("shadowMap", (Texture2D) shadowPass.resolvedOutputs.get("shadowMap"));
        applyShadowsShader.setUniform1f("shadowMapResolution", ((Texture2D) shadowPass.resolvedOutputs.get("shadowMap")).getWidth());
        applyShadowsShader.setUniform1f("shadowVisiblity", shadowPass.getShadowVisibility());
        applyShadowsShader.setUniformMatrix4f("shadowMatrix", shadowPass.getShadowMatrix());
    }
    // Matrices for screen-space transformations
    renderer.getCamera().setupShader(applyShadowsShader);
    worldRenderer.getSkyRenderer().setupShader(applyShadowsShader);
    renderer.getRenderTargetManager().setDepthMask(false);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setDepthMask(true);
}
Also used : Texture2D(io.xol.chunkstories.api.rendering.textures.Texture2D) GiPass(io.xol.chunkstories.core.rendering.passes.gi.GiPass) RenderPass(io.xol.chunkstories.api.rendering.pass.RenderPass) Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Example 27 with Shader

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

the class DefferedLightsPass method render.

@Override
public void render(RenderingInterface renderer) {
    renderer.getRenderTargetManager().setConfiguration(fbo);
    // Deffered lightning
    // Disable depth read/write
    renderer.setDepthTestMode(DepthTestMode.DISABLED);
    renderer.getRenderTargetManager().setDepthMask(false);
    Shader lightShader = renderer.useShader("light");
    lightShader.setUniform1f("powFactor", 5f);
    renderer.getCamera().setupShader(lightShader);
    // Blend parameters
    renderer.setDepthTestMode(DepthTestMode.DISABLED);
    renderer.setBlendMode(BlendMode.ADD);
    renderer.getLightsRenderer().renderPendingLights(renderer);
    // Cleanup
    renderer.getRenderTargetManager().setDepthMask(true);
    renderer.setBlendMode(BlendMode.MIX);
    renderer.setDepthTestMode(DepthTestMode.LESS_OR_EQUAL);
}
Also used : 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