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);
}
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);
}
Aggregations