From 5f52dc22871888d666907917d6071f483b1d69d3 Mon Sep 17 00:00:00 2001 From: IMS212 Date: Thu, 13 Jan 2022 18:51:56 -0800 Subject: [PATCH] Sodium 0.4.0-alpha5, Iris 1.1.5 --- build.gradle | 2 +- gradle.properties | 4 ++-- .../compat/sodium/SodiumVersionCheck.java | 9 +++------ .../pipeline/newshader/TriforcePatcher.java | 3 ++- .../IrisChunkShaderInterface.java | 11 +++++++++-- .../MixinRegionChunkRenderer.java | 19 +++++++++++++++---- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index 563d2fd07f..23219c2dab 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name + project.minecraft_version -version = "${project.mod_version}${getVersionMetadata()}" +version = "${project.mod_version}" group = project.maven_group loom { diff --git a/gradle.properties b/gradle.properties index 749a1aae6f..1ea6d6804e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,10 +12,10 @@ loader_version=0.12.12 # If the Modrinth maven is unavailable or Sodium is not available for whatever reason, # you can set this to false to build a copy of the mod without Sodium compatibility included. sodium_compatibility=true -sodium_version=mc1.18-0.4.0-alpha5 +sodium_version=mc1.18.1-0.4.0-alpha6 # Mod Properties maven_group=net.coderbot.iris_mc1_18 archives_base_name=iris-mc -mod_version=1.1.4 +mod_version=1.1.5 diff --git a/src/main/java/net/coderbot/iris/compat/sodium/SodiumVersionCheck.java b/src/main/java/net/coderbot/iris/compat/sodium/SodiumVersionCheck.java index df5301a065..f2944d9ed2 100644 --- a/src/main/java/net/coderbot/iris/compat/sodium/SodiumVersionCheck.java +++ b/src/main/java/net/coderbot/iris/compat/sodium/SodiumVersionCheck.java @@ -6,13 +6,10 @@ public class SodiumVersionCheck { // The allowed versions of Sodium for use with Iris private static final ImmutableList ALLOWED_SODIUM_VERSIONS = ImmutableList.of( // Official 0.4.0-alpha5 - AllowedSodiumVersion.exact("0.4.0-alpha5+build.9"), + AllowedSodiumVersion.exact("0.4.0-alpha6+build.14"), - // ReplayMod's existing compatible forked 0.4.0-alpha5 version - AllowedSodiumVersion.prefix("0.4.0-alpha5+rev.76d0e6e"), - - // For future use by ReplayMod - AllowedSodiumVersion.prefix("0.4.0-alpha5+replaymod") + // For use by ReplayMod + AllowedSodiumVersion.prefix("0.4.0-alpha6+replaymod") ); public static boolean isAllowedVersion(String sodiumVersion) { diff --git a/src/main/java/net/coderbot/iris/pipeline/newshader/TriforcePatcher.java b/src/main/java/net/coderbot/iris/pipeline/newshader/TriforcePatcher.java index 1696fb2a76..2f268420a5 100644 --- a/src/main/java/net/coderbot/iris/pipeline/newshader/TriforcePatcher.java +++ b/src/main/java/net/coderbot/iris/pipeline/newshader/TriforcePatcher.java @@ -320,6 +320,7 @@ public static String patchSodium(String source, ShaderType type, AlphaTest alpha transformations.define("VERT_POS_SCALE", String.valueOf(positionScale)); transformations.define("VERT_POS_OFFSET", String.valueOf(positionOffset)); transformations.define("VERT_TEX_SCALE", String.valueOf(textureScale)); + transformations.injectLine(Transformations.InjectionPoint.BEFORE_CODE, "uniform vec3 u_RegionOffset;"); transformations.injectLine(Transformations.InjectionPoint.DEFINES, SodiumTerrainPipeline.parseSodiumImport("#import ")); transformations.injectLine(Transformations.InjectionPoint.DEFINES, SodiumTerrainPipeline.parseSodiumImport("#import ")); @@ -340,7 +341,7 @@ public static String patchSodium(String source, ShaderType type, AlphaTest alpha " irisMain();\n" + "}"); - transformations.injectLine(Transformations.InjectionPoint.BEFORE_CODE, "vec4 getVertexPosition() { return vec4(_draw_translation + _vert_position, 1.0); }"); + transformations.injectLine(Transformations.InjectionPoint.BEFORE_CODE, "vec4 getVertexPosition() { return vec4(u_RegionOffset + _draw_translation + _vert_position, 1.0); }"); transformations.injectLine(Transformations.InjectionPoint.BEFORE_CODE, "vec4 ftransform() { return gl_ModelViewProjectionMatrix * gl_Vertex; }"); } else { transformations.injectLine(Transformations.InjectionPoint.BEFORE_CODE, "uniform mat4 u_ModelViewMatrix;"); diff --git a/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/impl/shader_overrides/IrisChunkShaderInterface.java b/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/impl/shader_overrides/IrisChunkShaderInterface.java index 397ce706e1..f4b078b35f 100644 --- a/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/impl/shader_overrides/IrisChunkShaderInterface.java +++ b/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/impl/shader_overrides/IrisChunkShaderInterface.java @@ -4,6 +4,7 @@ import me.jellysquid.mods.sodium.client.gl.buffer.GlMutableBuffer; import me.jellysquid.mods.sodium.client.gl.shader.uniform.GlUniformBlock; import me.jellysquid.mods.sodium.client.gl.shader.uniform.GlUniformFloat; +import me.jellysquid.mods.sodium.client.gl.shader.uniform.GlUniformFloat3v; import me.jellysquid.mods.sodium.client.gl.shader.uniform.GlUniformMatrix4f; import me.jellysquid.mods.sodium.client.model.vertex.type.ChunkVertexType; import net.coderbot.iris.gl.blending.BlendModeOverride; @@ -21,7 +22,7 @@ public class IrisChunkShaderInterface { @Nullable private final GlUniformMatrix4f uniformProjectionMatrix; @Nullable - private final GlUniformMatrix4f uniformModelViewProjectionMatrix; + private final GlUniformFloat3v uniformRegionOffset; @Nullable private final GlUniformMatrix4f uniformNormalMatrix; @Nullable @@ -37,7 +38,7 @@ public IrisChunkShaderInterface(int handle, ShaderBindingContextExt contextExt, boolean isShadowPass, BlendModeOverride blendModeOverride) { this.uniformModelViewMatrix = contextExt.bindUniformIfPresent("u_ModelViewMatrix", GlUniformMatrix4f::new); this.uniformProjectionMatrix = contextExt.bindUniformIfPresent("u_ProjectionMatrix", GlUniformMatrix4f::new); - this.uniformModelViewProjectionMatrix = contextExt.bindUniformIfPresent("u_ModelViewProjectionMatrix", GlUniformMatrix4f::new); + this.uniformRegionOffset = contextExt.bindUniformIfPresent("u_RegionOffset", GlUniformFloat3v::new); this.uniformNormalMatrix = contextExt.bindUniformIfPresent("u_NormalMatrix", GlUniformMatrix4f::new); this.uniformBlockDrawParameters = contextExt.bindUniformBlockIfPresent("ubo_DrawParameters", 0); @@ -97,4 +98,10 @@ public void setDrawUniforms(GlMutableBuffer buffer) { this.uniformBlockDrawParameters.bindBuffer(buffer); } } + + public void setRegionOffset(float x, float y, float z) { + if (this.uniformRegionOffset != null) { + this.uniformRegionOffset.set(x, y, z); + } + } } diff --git a/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/mixin/shader_overrides/MixinRegionChunkRenderer.java b/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/mixin/shader_overrides/MixinRegionChunkRenderer.java index 00ebdf6501..f5d958476e 100644 --- a/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/mixin/shader_overrides/MixinRegionChunkRenderer.java +++ b/src/sodiumCompatibility/java/net/coderbot/iris/compat/sodium/mixin/shader_overrides/MixinRegionChunkRenderer.java @@ -36,6 +36,17 @@ public abstract class MixinRegionChunkRenderer implements ShaderChunkRendererExt } } + @Redirect(method = "render", + at = @At(value = "INVOKE", + target = "Lme/jellysquid/mods/sodium/client/render/chunk/shader/ChunkShaderInterface;setModelViewMatrix(Lorg/joml/Matrix4f;)V"), remap = false) + private void iris$setModelViewMatrix(ChunkShaderInterface itf, Matrix4f matrix) { + if (itf != null) { + itf.setModelViewMatrix(matrix); + } else { + iris$getOverride().getInterface().setModelViewMatrix(matrix); + } + } + @Redirect(method = "render", remap = false, at = @At(value = "INVOKE", target = "me/jellysquid/mods/sodium/client/render/chunk/shader/ChunkShaderInterface.setDrawUniforms (Lme/jellysquid/mods/sodium/client/gl/buffer/GlMutableBuffer;)V")) @@ -49,12 +60,12 @@ public abstract class MixinRegionChunkRenderer implements ShaderChunkRendererExt @Redirect(method = "setModelMatrixUniforms", at = @At(value = "INVOKE", - target = "Lme/jellysquid/mods/sodium/client/render/chunk/shader/ChunkShaderInterface;setModelViewMatrix(Lorg/joml/Matrix4f;)V"), remap = false) - private void iris$setModelViewMatrix(ChunkShaderInterface itf, Matrix4f matrix) { + target = "Lme/jellysquid/mods/sodium/client/render/chunk/shader/ChunkShaderInterface;setRegionOffset(FFF)V"), remap = false) + private void iris$setRegionOffset(ChunkShaderInterface itf, float x, float y, float z) { if (itf != null) { - itf.setModelViewMatrix(matrix); + itf.setRegionOffset(x, y, z); } else { - iris$getOverride().getInterface().setModelViewMatrix(matrix); + iris$getOverride().getInterface().setRegionOffset(x, y, z); } } }