From 6760388bc785b028c076764c38ac3e027c4b344f Mon Sep 17 00:00:00 2001 From: Christian Knaapen Date: Sat, 30 Oct 2021 20:00:47 +0200 Subject: [PATCH] Fixed block preview shader dissolve effect. Fixed reach upgrade item icons. --- .../EffortlessBuilding.java | 6 +-- .../render/BuildRenderTypes.java | 39 +++++-------------- .../shaders/core/dissolve.fsh | 8 +--- 3 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java index c7d9bc2..5e45fce 100644 --- a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java +++ b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java @@ -51,9 +51,9 @@ public class EffortlessBuilding { private static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, EffortlessBuilding.MODID); public static final RegistryObject RANDOMIZER_BAG_ITEM = ITEMS.register("randomizer_bag", RandomizerBagItem::new); - public static final RegistryObject REACH_UPGRADE_1_ITEM = ITEMS.register("reach_upgrade_1", ReachUpgrade1Item::new); - public static final RegistryObject REACH_UPGRADE_2_ITEM = ITEMS.register("reach_upgrade_2", ReachUpgrade2Item::new); - public static final RegistryObject REACH_UPGRADE_3_ITEM = ITEMS.register("reach_upgrade_3", ReachUpgrade3Item::new); + public static final RegistryObject REACH_UPGRADE_1_ITEM = ITEMS.register("reach_upgrade1", ReachUpgrade1Item::new); + public static final RegistryObject REACH_UPGRADE_2_ITEM = ITEMS.register("reach_upgrade2", ReachUpgrade2Item::new); + public static final RegistryObject REACH_UPGRADE_3_ITEM = ITEMS.register("reach_upgrade3", ReachUpgrade3Item::new); public static final RegistryObject> RANDOMIZER_BAG_CONTAINER = CONTAINERS.register("randomizer_bag", () -> registerContainer(RandomizerBagContainer::new)); diff --git a/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java b/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java index fbc812f..5789902 100644 --- a/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java +++ b/src/main/java/nl/requios/effortlessbuilding/render/BuildRenderTypes.java @@ -32,7 +32,7 @@ public class BuildRenderTypes extends RenderType { //Between 0 and 7, but dont override vanilla textures //Also update dissolve.fsh SamplerX - private static final int maskTextureIndex = 7; + private static final int maskTextureIndex = 2; static { final LineStateShard LINE = new LineStateShard(OptionalDouble.of(2.0)); @@ -78,29 +78,20 @@ public class BuildRenderTypes extends RenderType { public static RenderType getBlockPreviewRenderType(float dissolve, BlockPos blockPos, BlockPos firstPos, BlockPos secondPos, boolean red) { - Boolean useShaders = BuildConfig.visuals.useShaders.get(); - //TODO 1.17 don't use shaders if config says no - 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(RenderStateShard.BLOCK_SHEET_MIPPED) .setTransparencyState(TRANSLUCENT_TRANSPARENCY) .setLightmapState(RenderStateShard.NO_LIGHTMAP) + .setCullState(RenderStateShard.CULL) .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)) .createCompositeState(true); //Unique name for every combination, otherwise it will reuse the previous one String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red; @@ -118,25 +109,15 @@ public class BuildRenderTypes extends RenderType { Uniform firstposUniform = shader.getUniform("firstpos"); Uniform secondposUniform = shader.getUniform("secondpos"); - 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); - } - - public static void glActiveTexture(int texture) { - if (GL.getCapabilities().GL_ARB_multitexture && !GL.getCapabilities().OpenGL13) { - ARBMultitexture.glActiveTextureARB(texture); - } else { - GL13.glActiveTexture(texture); - } + if (percentileUniform != null) percentileUniform.set(dissolve); else EffortlessBuilding.log("percentileUniform is null"); + if (highlightUniform != null) highlightUniform.set(highlight ? 1 : 0); else EffortlessBuilding.log("highlightUniform is null"); + if (redUniform != null) redUniform.set(red ? 1 : 0); else EffortlessBuilding.log("redUniform is null"); + if (blockposUniform != null) blockposUniform.set((float) blockpos.x, (float) blockpos.y, (float) blockpos.z); else EffortlessBuilding.log("blockposUniform is null"); + if (firstposUniform != null) firstposUniform.set((float) firstpos.x, (float) firstpos.y, (float) firstpos.z); else EffortlessBuilding.log("firstposUniform is null"); + if (secondposUniform != null) secondposUniform.set((float) secondpos.x, (float) secondpos.y, (float) secondpos.z); else EffortlessBuilding.log("secondposUniform is null"); } private class ShaderInfo { diff --git a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh index 0464c18..82a5300 100644 --- a/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh +++ b/src/main/resources/assets/effortlessbuilding/shaders/core/dissolve.fsh @@ -3,7 +3,7 @@ #moj_import uniform sampler2D Sampler0; -uniform sampler2D Sampler7; +uniform sampler2D Sampler2; uniform float GameTime; uniform vec4 ColorModulator; @@ -27,10 +27,6 @@ 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; @@ -58,7 +54,7 @@ void main() { maskcoord = vec2(worldpos.x, worldpos.y); maskcoord /= 20.0; - vec4 maskColor = texture2D(Sampler7, maskcoord); + vec4 maskColor = texture2D(Sampler2, maskcoord); float maskgs = maskColor.r; color.rgb *= vertexColor.rgb;