From 80c475ff54edc0d4e69813a4c19b2423840985c0 Mon Sep 17 00:00:00 2001 From: Christian Knaapen Date: Sat, 30 Oct 2021 16:32:23 +0200 Subject: [PATCH] Fixed block preview shader being glitchy. Now shows block without effects. --- .../render/BuildRenderTypes.java | 31 ++++++++++--------- .../shaders/core/dissolve.fsh | 3 ++ .../shaders/core/dissolve.vsh | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java b/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java index 514f372..fbc812f 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java @@ -84,25 +84,28 @@ public class BuildRenderTypes extends RenderType { String stateName = "eb_texturing_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red; TexturingStateShard MY_TEXTURING = new TexturingStateShard(stateName, () -> { setShaderParameters(dissolveShaderInstance, dissolve, Vec3.atLowerCornerOf(blockPos), Vec3.atLowerCornerOf(firstPos), Vec3.atLowerCornerOf(secondPos), blockPos == secondPos, red); - RenderSystem.setShaderColor(1f, 1f, 1f, 0.8f); +// RenderSystem.setShaderColor(1f, 1f, 1f, 0.8f); }, () -> {}); RenderType.CompositeState renderState = RenderType.CompositeState.builder() .setShaderState(RENDERTYPE_DISSOLVE_SHADER) - .setTexturingState(MY_TEXTURING) - .setTextureState(new RenderStateShard.TextureStateShard(shaderMaskTextureLocation, false, false)) +// .setTexturingState(MY_TEXTURING) +// .setTextureState(new RenderStateShard.TextureStateShard(shaderMaskTextureLocation, false, false)) + .setTextureState(RenderStateShard.BLOCK_SHEET_MIPPED) .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setOutputState(RenderStateShard.TRANSLUCENT_TARGET) //TODO 1.17 // .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED) // .setAlphaState(DEFAULT_ALPHA) - .setCullState(new RenderStateShard.CullStateShard(true)) - .setLightmapState(new RenderStateShard.LightmapStateShard(false)) - .setOverlayState(new RenderStateShard.OverlayStateShard(false)) +// .setCullState(new RenderStateShard.CullStateShard(true)) +// .setLightmapState(new RenderStateShard.LightmapStateShard(false)) +// .setOverlayState(new RenderStateShard.OverlayStateShard(false)) .createCompositeState(true); //Unique name for every combination, otherwise it will reuse the previous one String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red; return RenderType.create(name, - DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, true, true, renderState); + DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 2097152, true, true, renderState); } private static void setShaderParameters(ShaderInstance shader, final float dissolve, final Vec3 blockpos, @@ -118,13 +121,13 @@ public class BuildRenderTypes extends RenderType { RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); RenderSystem.setShaderTexture(maskTextureIndex, shaderMaskTextureLocation); - percentileUniform.set(dissolve); - highlightUniform.set(highlight ? 1 : 0); - redUniform.set(red ? 1 : 0); - - blockposUniform.set((float) blockpos.x, (float) blockpos.y, (float) blockpos.z); - firstposUniform.set((float) firstpos.x, (float) firstpos.y, (float) firstpos.z); - secondposUniform.set((float) secondpos.x, (float) secondpos.y, (float) secondpos.z); +// percentileUniform.set(dissolve); +// highlightUniform.set(highlight ? 1 : 0); +// redUniform.set(red ? 1 : 0); +// +// blockposUniform.set((float) blockpos.x, (float) blockpos.y, (float) blockpos.z); +// firstposUniform.set((float) firstpos.x, (float) firstpos.y, (float) firstpos.z); +// secondposUniform.set((float) secondpos.x, (float) secondpos.y, (float) secondpos.z); } public static void glActiveTexture(int texture) { diff --git a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh index 0c6261c..0464c18 100644 --- a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh +++ b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh @@ -27,6 +27,9 @@ in vec4 normal; out vec4 fragColor; void main() { + vec4 color2 = texture(Sampler0, texCoord0) * vertexColor * ColorModulator; + fragColor = linear_fog(color2, vertexDistance, FogStart, FogEnd, FogColor); + return; //convert gametime to seconds (roughly) float time = GameTime * 1200; diff --git a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.vsh b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.vsh index 742b73f..b497445 100644 --- a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.vsh +++ b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.vsh @@ -25,7 +25,7 @@ void main() { vertexPosition = gl_Position.xyz; vertexDistance = length((ModelViewMat * vec4(Position + ChunkOffset, 1.0)).xyz); - vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); + vertexColor = Color; texCoord0 = UV0; normal = ProjMat * ModelViewMat * vec4(Normal, 0.0); } \ No newline at end of file