From 720aaca1b73c52839c024f9181e6547b78d9300a Mon Sep 17 00:00:00 2001 From: Fabian Maurer Date: Mon, 3 Feb 2025 16:13:53 +0100 Subject: [PATCH] Add functionality to fake blockId for shaders --- README.MD | 2 +- dependencies.gradle | 2 +- .../buffers/ChunkModelVertexTransformer.java | 4 +- .../render/chunk/format/ModelVertexSink.java | 3 +- .../hfp/HFPModelVertexBufferWriterNio.java | 2 +- .../hfp/HFPModelVertexBufferWriterUnsafe.java | 2 +- .../sfp/SFPModelVertexBufferWriterNio.java | 2 +- .../sfp/SFPModelVertexBufferWriterUnsafe.java | 2 +- .../client/render/pipeline/BlockRenderer.java | 3 +- .../client/render/pipeline/FluidRenderer.java | 2 +- src/main/java/net/coderbot/iris/Iris.java | 39 +++++++++++++++++++ .../XHFPModelVertexBufferWriterNio.java | 4 +- .../XHFPModelVertexBufferWriterUnsafe.java | 4 +- 13 files changed, 56 insertions(+), 15 deletions(-) diff --git a/README.MD b/README.MD index 3a91e9e50..9879736b7 100644 --- a/README.MD +++ b/README.MD @@ -15,7 +15,7 @@ # Required Dependencies * [UniMixins](https://github.com/LegacyModdingMC/UniMixins/releases) >= 0.1.19 -* [GTNHLib](https://github.com/GTNewHorizons/GTNHLib/releases) >= 0.6.6 +* [GTNHLib](https://github.com/GTNewHorizons/GTNHLib/releases) >= 0.6.20 * NOTE: Some mods are not required, but a specific version is required if present - see: `Permanent Incompatibilities` below. # Known (temporary) Incompatibilities diff --git a/dependencies.gradle b/dependencies.gradle index 8c8048649..ada882f24 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -61,7 +61,7 @@ dependencies { // Iris Shaders compileOnly('org.jetbrains:annotations:26.0.2') - api("com.github.GTNewHorizons:GTNHLib:0.6.13:dev") + api("com.github.GTNewHorizons:GTNHLib:0.6.20:dev") shadowImplementation("org.anarres:jcpp:1.4.14") // Apache 2.0 shadowImplementation("org.taumc:glsl-transformation-lib:0.2.0-4.g6b42bca") { exclude module: "antlr4" // we only want to shadow the runtime module diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelVertexTransformer.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelVertexTransformer.java index 73fa02ed4..8e7948774 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelVertexTransformer.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelVertexTransformer.java @@ -17,7 +17,7 @@ public class ChunkModelVertexTransformer extends AbstractVertexTransformer blockMatches = BlockRenderingSettings.INSTANCE.getBlockMatches(); + if (blockMatches == null) { + return -1; + } + contextHolder = new BlockContextHolder(blockMatches); + + } + contextHolder.set(block, (short) block.getRenderType()); + return contextHolder.blockId; + } + + public static void setShaderMaterialOverride(Block block, int meta) { + if (!AngelicaConfig.enableIris) + return; + + int blockId = getShaderMaterialOverrideId(block, meta); + + CapturingTessellator tess = (CapturingTessellator) TessellatorManager.get(); + tess.setShaderBlockId(blockId); + } + + public static void resetShaderMaterialOverride() { + if (!AngelicaConfig.enableIris) + return; + CapturingTessellator tess = (CapturingTessellator) TessellatorManager.get(); + tess.setShaderBlockId(-1); + } } diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterNio.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterNio.java index 0585aaab8..17ecdef72 100644 --- a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterNio.java +++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterNio.java @@ -30,7 +30,7 @@ public class XHFPModelVertexBufferWriterNio extends VertexBufferWriterNio implem } @Override - public void writeQuad(float x, float y, float z, int color, float u, float v, int light) { + public void writeQuad(float x, float y, float z, int color, float u, float v, int light, int shaderBlockId) { uSum += u; vSum += v; @@ -42,7 +42,7 @@ public class XHFPModelVertexBufferWriterNio extends VertexBufferWriterNio implem ModelVertexUtil.denormalizeVertexTextureFloatAsShort(u), ModelVertexUtil.denormalizeVertexTextureFloatAsShort(v), light, - contextHolder.blockId, + shaderBlockId != -1 ? (short)shaderBlockId : contextHolder.blockId, contextHolder.renderType, ExtendedDataHelper.computeMidBlock(x, y, z, contextHolder.localPosX, contextHolder.localPosY, contextHolder.localPosZ) ); diff --git a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterUnsafe.java b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterUnsafe.java index 5f5d8a9a4..0c1f210e5 100644 --- a/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterUnsafe.java +++ b/src/main/java/net/coderbot/iris/sodium/vertex_format/terrain_xhfp/XHFPModelVertexBufferWriterUnsafe.java @@ -30,7 +30,7 @@ public class XHFPModelVertexBufferWriterUnsafe extends VertexBufferWriterUnsafe } @Override - public void writeQuad(float x, float y, float z, int color, float u, float v, int light) { + public void writeQuad(float x, float y, float z, int color, float u, float v, int light, int shaderBlockId) { uSum += u; vSum += v; @@ -42,7 +42,7 @@ public class XHFPModelVertexBufferWriterUnsafe extends VertexBufferWriterUnsafe ModelVertexUtil.denormalizeVertexTextureFloatAsShort(u), ModelVertexUtil.denormalizeVertexTextureFloatAsShort(v), light, - contextHolder.blockId, + shaderBlockId != -1 ? (short)shaderBlockId : contextHolder.blockId, contextHolder.renderType, ExtendedDataHelper.computeMidBlock(x, y, z, contextHolder.localPosX, contextHolder.localPosY, contextHolder.localPosZ) );