From cb9b41baf65133e091ee8d803b171fdfe75d4436 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Mon, 8 Sep 2025 00:25:47 +1000 Subject: [PATCH] move patch data to seperate files --- .../voxy/client/iris/IrisShaderPatch.java | 25 +++++++++++++++---- .../iris/MixinShaderPackSourceNames.java | 2 ++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java index 3bd97bd3..e0275daf 100644 --- a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java +++ b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java @@ -149,8 +149,8 @@ public class IrisShaderPatch { public String[] uniforms; @JsonAdapter(SamplerDeserializer.class) public Object2ObjectLinkedOpenHashMap samplers; - public String[] opaquePatchData; - public String[] translucentPatchData; + public String opaquePatchData; + public String translucentPatchData; @JsonAdapter(SSBODeserializer.class) public Int2ObjectOpenHashMap ssbos; @JsonAdapter(BlendStateDeserializer.class) @@ -188,10 +188,10 @@ public class IrisShaderPatch { return new Int2ObjectLinkedOpenHashMap<>(this.ssbos); } public String getPatchOpaqueSource() { - return String.join("\n", this.patchData.opaquePatchData); + return this.patchData.opaquePatchData; } public String getPatchTranslucentSource() { - return this.patchData.translucentPatchData!=null?String.join("\n", this.patchData.translucentPatchData):null; + return this.patchData.translucentPatchData; } public String getTAAShift() { return this.patchData.taaOffset == null?"{return vec2(0.0);}":this.patchData.taaOffset; @@ -293,7 +293,22 @@ public class IrisShaderPatch { voxyPatchData = builder.toString(); } patchData = GSON.fromJson(voxyPatchData, PatchGson.class); - if (patchData != null && !patchData.checkValid()) { + if (patchData != null) { + throw new IllegalStateException("voxy json patch not valid: " + voxyPatchData); + } + + {//Inject data from the auxilery files if they are present + var opaque = sourceProvider.apply(directory.resolve("voxy_opaque.glsl")); + if (opaque != null) { + patchData.opaquePatchData = opaque; + } + var translucent = sourceProvider.apply(directory.resolve("voxy_translucent.glsl")); + if (translucent != null) { + patchData.translucentPatchData = translucent; + } + } + + if (!patchData.checkValid()) { throw new IllegalStateException("voxy json patch not valid: " + voxyPatchData); } } catch (Exception e) { diff --git a/src/main/java/me/cortex/voxy/client/mixin/iris/MixinShaderPackSourceNames.java b/src/main/java/me/cortex/voxy/client/mixin/iris/MixinShaderPackSourceNames.java index 94ebd010..3314a01d 100644 --- a/src/main/java/me/cortex/voxy/client/mixin/iris/MixinShaderPackSourceNames.java +++ b/src/main/java/me/cortex/voxy/client/mixin/iris/MixinShaderPackSourceNames.java @@ -13,6 +13,8 @@ public class MixinShaderPackSourceNames { private static ImmutableList.Builder voxy$injectVoxyShaderPatch(Operation> original){ var builder = original.call(); builder.add("voxy.json"); + builder.add("voxy_opaque.glsl"); + builder.add("voxy_translucent.glsl"); return builder; } }