From acbd3b14ffe80a2ceb6c1e6a9a4a4ea802fc36f1 Mon Sep 17 00:00:00 2001 From: IMS212 Date: Sat, 27 Jan 2024 06:56:48 -0800 Subject: [PATCH] Fix bad flipping behavior --- .../net/coderbot/iris/compat/dh/DHCompatInternal.java | 6 +++--- .../net/coderbot/iris/compat/dh/IrisLodRenderProgram.java | 8 ++++---- .../pipeline/newshader/NewWorldRenderingPipeline.java | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/coderbot/iris/compat/dh/DHCompatInternal.java b/src/main/java/net/coderbot/iris/compat/dh/DHCompatInternal.java index 4f046d7e62..8e853a7840 100644 --- a/src/main/java/net/coderbot/iris/compat/dh/DHCompatInternal.java +++ b/src/main/java/net/coderbot/iris/compat/dh/DHCompatInternal.java @@ -59,17 +59,17 @@ public void prepareNewPipeline(NewWorldRenderingPipeline pipeline, boolean dhSha } ProgramSource terrain = pipeline.getDHTerrainShader().get(); - solidProgram = IrisLodRenderProgram.createProgram(terrain.getName(), false, terrain, pipeline.getCustomUniforms(), pipeline); + solidProgram = IrisLodRenderProgram.createProgram(terrain.getName(), false, false, terrain, pipeline.getCustomUniforms(), pipeline); if (pipeline.getDHWaterShader().isPresent()) { ProgramSource water = pipeline.getDHWaterShader().get(); - translucentProgram = IrisLodRenderProgram.createProgram(water.getName(), false, water, pipeline.getCustomUniforms(), pipeline); + translucentProgram = IrisLodRenderProgram.createProgram(water.getName(), false, true, water, pipeline.getCustomUniforms(), pipeline); dhWaterFramebuffer = pipeline.createDHFramebuffer(water, true); } if (pipeline.getDHShadowShader().isPresent() && dhShadowEnabled) { ProgramSource shadow = pipeline.getDHShadowShader().get(); - shadowProgram = IrisLodRenderProgram.createProgram(shadow.getName(), true, shadow, pipeline.getCustomUniforms(), pipeline); + shadowProgram = IrisLodRenderProgram.createProgram(shadow.getName(), true, false, shadow, pipeline.getCustomUniforms(), pipeline); if (pipeline.hasShadowRenderTargets()) { dhShadowFramebuffer = pipeline.createDHFramebufferShadow(shadow); } diff --git a/src/main/java/net/coderbot/iris/compat/dh/IrisLodRenderProgram.java b/src/main/java/net/coderbot/iris/compat/dh/IrisLodRenderProgram.java index eba7834f3d..801354f324 100644 --- a/src/main/java/net/coderbot/iris/compat/dh/IrisLodRenderProgram.java +++ b/src/main/java/net/coderbot/iris/compat/dh/IrisLodRenderProgram.java @@ -74,7 +74,7 @@ public class IrisLodRenderProgram private final ProgramImages images; private final BlendModeOverride blend; - public static IrisLodRenderProgram createProgram(String name, boolean isShadowPass, ProgramSource source, CustomUniforms uniforms, NewWorldRenderingPipeline pipeline) { + public static IrisLodRenderProgram createProgram(String name, boolean isShadowPass, boolean translucent, ProgramSource source, CustomUniforms uniforms, NewWorldRenderingPipeline pipeline) { Map transformed = TransformPatcher.patchDH( name, source.getVertexSource().orElseThrow(RuntimeException::new), @@ -92,7 +92,7 @@ public static IrisLodRenderProgram createProgram(String name, boolean isShadowPa .addSources(transformed) .setName("dh_" + name) .print(); - return new IrisLodRenderProgram(name, isShadowPass, source.getDirectives().getBlendModeOverride().orElse(null), vertex, tessControl, tessEval, geometry, fragment, uniforms, pipeline); + return new IrisLodRenderProgram(name, isShadowPass, translucent, source.getDirectives().getBlendModeOverride().orElse(null), vertex, tessControl, tessEval, geometry, fragment, uniforms, pipeline); } public int tryGetUniformLocation2(CharSequence name) { @@ -104,7 +104,7 @@ public int tryGetUniformLocation2(CharSequence name) { // Noise Uniforms // This will bind AbstractVertexAttribute - private IrisLodRenderProgram(String name, boolean isShadowPass, BlendModeOverride override, String vertex, String tessControl, String tessEval, String geometry, String fragment, CustomUniforms customUniforms, NewWorldRenderingPipeline pipeline) + private IrisLodRenderProgram(String name, boolean isShadowPass, boolean translucent, BlendModeOverride override, String vertex, String tessControl, String tessEval, String geometry, String fragment, CustomUniforms customUniforms, NewWorldRenderingPipeline pipeline) { id = GL43C.glCreateProgram(); @@ -160,7 +160,7 @@ private IrisLodRenderProgram(String name, boolean isShadowPass, BlendModeOverrid customUniforms.assignTo(uniformBuilder); BuiltinReplacementUniforms.addBuiltinReplacementUniforms(uniformBuilder); ProgramImages.Builder builder = ProgramImages.builder(id); - pipeline.addGbufferOrShadowSamplers(samplerBuilder, builder, isShadowPass ? () -> pipeline.flippedBeforeShadow : () -> pipeline.flippedAfterPrepare, isShadowPass, new InputAvailability(false, true, false)); + pipeline.addGbufferOrShadowSamplers(samplerBuilder, builder, isShadowPass ? () -> pipeline.flippedBeforeShadow : () -> translucent ? pipeline.flippedAfterTranslucent : pipeline.flippedAfterPrepare, isShadowPass, new InputAvailability(false, true, false)); customUniforms.mapholderToPass(uniformBuilder, this); this.uniforms = uniformBuilder.buildUniforms(); this.customUniforms = customUniforms; diff --git a/src/main/java/net/coderbot/iris/pipeline/newshader/NewWorldRenderingPipeline.java b/src/main/java/net/coderbot/iris/pipeline/newshader/NewWorldRenderingPipeline.java index bc6aac62d3..34752dcf13 100644 --- a/src/main/java/net/coderbot/iris/pipeline/newshader/NewWorldRenderingPipeline.java +++ b/src/main/java/net/coderbot/iris/pipeline/newshader/NewWorldRenderingPipeline.java @@ -151,7 +151,7 @@ public class NewWorldRenderingPipeline implements WorldRenderingPipeline, CoreWo public final ImmutableSet flippedBeforeShadow; public final ImmutableSet flippedAfterPrepare; - private final ImmutableSet flippedAfterTranslucent; + public final ImmutableSet flippedAfterTranslucent; public boolean isBeforeTranslucent;