From 646882e1a9a1e9d7e89b6be1e0636697d8cce4eb Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 17 May 2026 18:20:27 -0500 Subject: [PATCH] update 26.2 snapshot 5 -> 7 --- .../postProcessing/BlazeDhFogRenderer.java | 19 ++- .../postProcessing/BlazeDhSsaoRenderer.java | 19 ++- .../BlazeVanillaFadeRenderer.java | 26 +-- .../test/BlazeDhTestTriangleRenderer.java | 18 +-- .../blaze/util/BlazeDhVertexFormatUtil.java | 21 ++- .../blaze/util/BlazePostProcessUtil.java | 3 +- .../wrappers/BlazeVertexFormatBuilder.java | 53 ++++++ .../blaze/wrappers/RenderPassWrapper.java | 152 ++++++++++++++++++ .../RenderPipelineBuilderWrapper.java | 38 +++++ .../texture/BlazeTextureViewWrapper.java | 9 +- .../wrappers/texture/BlazeTextureWrapper.java | 23 ++- .../wrappers/texture/IDhBlazeTexture.java | 12 ++ .../minecraft/MinecraftGLWrapper.java | 8 +- .../minecraft/MinecraftRenderWrapper.java | 2 +- coreSubProjects | 2 +- versionProperties/26.2.0.properties | 7 +- 16 files changed, 354 insertions(+), 58 deletions(-) create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/BlazeVertexFormatBuilder.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPassWrapper.java create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/IDhBlazeTexture.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhFogRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhFogRenderer.java index cd6b8fc44..d76cd1b58 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhFogRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhFogRenderer.java @@ -29,6 +29,7 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiHeightFogDirection; import com.seibel.distanthorizons.api.enums.rendering.EDhApiHeightFogMixMode; import com.seibel.distanthorizons.common.render.blaze.BlazeDhMetaRenderer; import com.seibel.distanthorizons.common.render.blaze.apply.BlazeDhApplyRenderer; +import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPassWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPipelineBuilderWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.BlazeTextureWrapper; import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil; @@ -353,21 +354,19 @@ public class BlazeDhFogRenderer implements IDhFogRenderer private void renderFogToTexture() { - try (RenderPass renderPass = COMMAND_ENCODER.createRenderPass( + try (RenderPassWrapper renderPassWrapper = new RenderPassWrapper( this::getRenderPassName, - this.fogColorTextureWrapper.textureView, - /*optionalClearColorAsInt*/ OptionalInt.empty(), - this.fogDepthTextureWrapper.textureView, - /*optionalDepthValueAsDouble*/ OptionalDouble.empty())) + this.fogColorTextureWrapper, + this.fogDepthTextureWrapper)) { - renderPass.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureView, BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureSampler); + renderPassWrapper.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper); - renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); + renderPassWrapper.renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); - renderPass.setVertexBuffer(0, this.vboGpuBuffer); // vertex buffer can only be "0" lol - renderPass.setPipeline(this.pipeline); + renderPassWrapper.setVertexBuffer(this.vboGpuBuffer); // vertex buffer can only be "0" lol + renderPassWrapper.renderPass.setPipeline(this.pipeline); - renderPass.draw(/*indexStart*/ 0, /*indexCount*/ 4); + renderPassWrapper.draw(/*indexCount*/ 4); } } private String getRenderPassName() { return "distantHorizons:McFogRenderer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhSsaoRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhSsaoRenderer.java index f57cda94c..932e3e690 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhSsaoRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeDhSsaoRenderer.java @@ -26,6 +26,7 @@ public class BlazeDhSsaoRenderer {} import com.seibel.distanthorizons.common.render.blaze.BlazeDhMetaRenderer; import com.seibel.distanthorizons.common.render.blaze.apply.BlazeDhApplyRenderer; +import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPassWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPipelineBuilderWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.BlazeTextureWrapper; import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil; @@ -277,21 +278,19 @@ public class BlazeDhSsaoRenderer implements IDhSsaoRenderer private void renderSsaoToTexture() { - try (RenderPass renderPass = COMMAND_ENCODER.createRenderPass( + try (RenderPassWrapper renderPassWrapper = new RenderPassWrapper( this::getRenderPassName, - this.ssaoColorTextureWrapper.textureView, - /*optionalClearColorAsInt*/ OptionalInt.empty(), - this.ssaoDepthTextureWrapper.textureView, - /*optionalDepthValueAsDouble*/ OptionalDouble.empty())) + this.ssaoColorTextureWrapper, + this.ssaoDepthTextureWrapper)) { - renderPass.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureView, BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureSampler); + renderPassWrapper.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper); - renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); + renderPassWrapper.renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); - renderPass.setVertexBuffer(0, this.vboGpuBuffer); // vertex buffer can only be "0" lol + renderPassWrapper.setVertexBuffer(this.vboGpuBuffer); - renderPass.setPipeline(this.pipeline); - renderPass.draw(/*indexStart*/ 0, /*indexCount*/ 4); + renderPassWrapper.renderPass.setPipeline(this.pipeline); + renderPassWrapper.draw(4); } } private String getRenderPassName() { return "distantHorizons:McSsaoRenderer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeVanillaFadeRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeVanillaFadeRenderer.java index 884e45432..6e8c6a9d3 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeVanillaFadeRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/postProcessing/BlazeVanillaFadeRenderer.java @@ -40,6 +40,7 @@ import com.seibel.distanthorizons.common.render.blaze.BlazeDhMetaRenderer; import com.seibel.distanthorizons.common.render.blaze.apply.BlazeDhCopyRenderer; import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil; import com.seibel.distanthorizons.common.render.blaze.util.BlazeUniformUtil; +import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPassWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPipelineBuilderWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.BlazeTextureViewWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.BlazeTextureWrapper; @@ -80,6 +81,7 @@ public class BlazeVanillaFadeRenderer implements IDhVanillaFadeRenderer public static final BlazeVanillaFadeRenderer INSTANCE = new BlazeVanillaFadeRenderer(); + private RenderPipeline pipeline; private boolean init = false; @@ -240,25 +242,23 @@ public class BlazeVanillaFadeRenderer implements IDhVanillaFadeRenderer private void renderFadeToTexture() { - try (RenderPass renderPass = COMMAND_ENCODER.createRenderPass( + try (RenderPassWrapper renderPassWrapper = new RenderPassWrapper( this::getRenderPassName, - this.fadeColorTextureWrapper.textureView, - /*optionalClearColorAsInt*/ OptionalInt.empty(), - this.fadeDepthTextureWrapper.textureView, - /*optionalDepthValueAsDouble*/ OptionalDouble.empty())) + this.fadeColorTextureWrapper, + this.fadeDepthTextureWrapper)) { - renderPass.bindTexture("uMcDepthTexture", this.mcDepthTextureWrapper.textureView, this.mcDepthTextureWrapper.textureSampler); - renderPass.bindTexture("uCombinedMcDhColorTexture", this.mcColorTextureWrapper.textureView, this.mcColorTextureWrapper.textureSampler); + renderPassWrapper.bindTexture("uMcDepthTexture", this.mcDepthTextureWrapper); + renderPassWrapper.bindTexture("uCombinedMcDhColorTexture", this.mcColorTextureWrapper); - renderPass.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureView, BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper.textureSampler); - renderPass.bindTexture("uDhColorTexture", BlazeDhMetaRenderer.INSTANCE.dhColorTextureWrapper.textureView, BlazeDhMetaRenderer.INSTANCE.dhColorTextureWrapper.textureSampler); + renderPassWrapper.bindTexture("uDhDepthTexture", BlazeDhMetaRenderer.INSTANCE.dhDepthTextureWrapper); + renderPassWrapper.bindTexture("uDhColorTexture", BlazeDhMetaRenderer.INSTANCE.dhColorTextureWrapper); - renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); + renderPassWrapper.renderPass.setUniform("fragUniformBlock", this.fragUniformBuffer); - renderPass.setVertexBuffer(0, this.vboGpuBuffer); // vertex buffer can only be "0" lol + renderPassWrapper.setVertexBuffer(this.vboGpuBuffer); - renderPass.setPipeline(this.pipeline); - renderPass.draw(/*indexStart*/ 0, /*indexCount*/ 4); + renderPassWrapper.renderPass.setPipeline(this.pipeline); + renderPassWrapper.draw(/*indexCount*/ 4); } } private String getRenderPassName() { return "distantHorizons:McFadeRenderer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/test/BlazeDhTestTriangleRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/test/BlazeDhTestTriangleRenderer.java index dfc440ca8..c9c9e76d7 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/test/BlazeDhTestTriangleRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/test/BlazeDhTestTriangleRenderer.java @@ -35,6 +35,8 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.*; import com.mojang.blaze3d.vertex.VertexFormat; import com.seibel.distanthorizons.common.render.blaze.util.BlazeDhVertexFormatUtil; +import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeVertexFormatBuilder; +import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPassWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.RenderPipelineBuilderWrapper; import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.BlazeTextureViewWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper; @@ -107,7 +109,7 @@ public class BlazeDhTestTriangleRenderer implements IDhTestTriangleRenderer pipelineBuilder.withVertexShader("test/blaze/vert"); pipelineBuilder.withFragmentShader("test/blaze/frag"); - VertexFormat vertexFormat = VertexFormat.builder() + VertexFormat vertexFormat = new BlazeVertexFormatBuilder() .add("vPosition", BlazeDhVertexFormatUtil.SCREEN_POS) .add("vColor", BlazeDhVertexFormatUtil.RGBA_FLOAT_COLOR) .build(); @@ -168,16 +170,14 @@ public class BlazeDhTestTriangleRenderer implements IDhTestTriangleRenderer this.mcColorTextureViewWrapper.tryWrap(MinecraftRenderWrapper.INSTANCE.getRenderTarget().getColorTexture()); this.mcDepthTextureViewWrapper.tryWrap(MinecraftRenderWrapper.INSTANCE.getRenderTarget().getDepthTexture()); - try (RenderPass renderPass = COMMAND_ENCODER.createRenderPass( + try (RenderPassWrapper renderPassWrapper = new RenderPassWrapper( this::getRenderPassName, - this.mcColorTextureViewWrapper.textureView, - /*optionalClearColorAsInt*/ OptionalInt.empty(), - this.mcDepthTextureViewWrapper.textureView, - /*optionalDepthValueAsDouble*/ OptionalDouble.empty())) + this.mcColorTextureViewWrapper, + this.mcDepthTextureViewWrapper)) { - renderPass.setVertexBuffer(0, this.vboGpuBuffer); - renderPass.setPipeline(this.pipeline); - renderPass.draw(/*indexStart*/ 0, /*indexCount*/ 3); + renderPassWrapper.setVertexBuffer(this.vboGpuBuffer); + renderPassWrapper.renderPass.setPipeline(this.pipeline); + renderPassWrapper.draw(3); } } private String getRenderPassName() { return "distantHorizons:DhTestRenderer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazeDhVertexFormatUtil.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazeDhVertexFormatUtil.java index 5f77690bf..62b8c6c89 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazeDhVertexFormatUtil.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazeDhVertexFormatUtil.java @@ -4,7 +4,7 @@ package com.seibel.distanthorizons.common.render.blaze.util; public class BlazeDhVertexFormatUtil {} #else - + import com.mojang.blaze3d.vertex.VertexFormatElement; import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi; import com.seibel.distanthorizons.core.config.Config; @@ -88,7 +88,7 @@ public class BlazeDhVertexFormatUtil IRIS_NORMAL = VertexFormatElement.register(/*id*/29, /*index*/0, VertexFormatElement.Type.BYTE, false, /*count*/ 1); FLOAT_XYZ_POS = VertexFormatElement.register(/*id*/30, /*index*/0, VertexFormatElement.Type.FLOAT, false, /*count*/ 3); - #else + #elif MC_VER <= MC_26_1_2 SCREEN_POS = VertexFormatElement.register(/*id*/22, /*index*/0, GpuFormat.RG32_FLOAT); // 2 floats RGBA_FLOAT_COLOR = VertexFormatElement.register(/*id*/23, /*index*/0, GpuFormat.RGBA32_FLOAT); // 4 floats @@ -102,6 +102,21 @@ public class BlazeDhVertexFormatUtil IRIS_NORMAL = VertexFormatElement.register(/*id*/29, /*index*/0, GpuFormat.R8_UINT); // 1 byte FLOAT_XYZ_POS = VertexFormatElement.register(/*id*/30, /*index*/0, GpuFormat.RGB32_FLOAT); // 3 floats + + #else + + SCREEN_POS = new VertexFormatElement("Screen Pos", Float.BYTES * 2, GpuFormat.RG32_FLOAT); + RGBA_FLOAT_COLOR = new VertexFormatElement("RGBA Float Color", Float.BYTES * 4, GpuFormat.RGBA32_FLOAT); + + SHORT_XYZ_POS = new VertexFormatElement("Short XYZ Pos", Short.BYTES * 3, GpuFormat.RGB16_UINT); + BYTE_PAD = new VertexFormatElement("Byte Pad", 1, GpuFormat.R8_UINT); + + META = new VertexFormatElement("DH Meta", Short.BYTES, GpuFormat.R16_UINT); + RGBA_UBYTE_COLOR = new VertexFormatElement("Rgba Ubyte Color", 4, GpuFormat.RGBA8_UNORM); + IRIS_MATERIAL = new VertexFormatElement("Iris Material", 1, GpuFormat.R8_UINT); + IRIS_NORMAL = new VertexFormatElement("Iris Normal", 1, GpuFormat.R8_UINT); + + FLOAT_XYZ_POS = new VertexFormatElement("Float XYZ Pos", Float.BYTES * 3, GpuFormat.RGB32_FLOAT); #endif } catch (Exception e) @@ -137,5 +152,7 @@ public class BlazeDhVertexFormatUtil + + } #endif \ No newline at end of file diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazePostProcessUtil.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazePostProcessUtil.java index c1a29951f..c3ea58870 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazePostProcessUtil.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/util/BlazePostProcessUtil.java @@ -11,6 +11,7 @@ import com.mojang.blaze3d.systems.CommandEncoder; import com.mojang.blaze3d.systems.GpuDevice; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.VertexFormat; +import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeVertexFormatBuilder; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -67,7 +68,7 @@ public class BlazePostProcessUtil public static VertexFormat createVertexFormat() { - VertexFormat vertexFormat = VertexFormat.builder() + VertexFormat vertexFormat = new BlazeVertexFormatBuilder() .add("vPosition", BlazeDhVertexFormatUtil.SCREEN_POS) .build(); return vertexFormat; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/BlazeVertexFormatBuilder.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/BlazeVertexFormatBuilder.java new file mode 100644 index 000000000..ad9fdf774 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/BlazeVertexFormatBuilder.java @@ -0,0 +1,53 @@ +package com.seibel.distanthorizons.common.render.blaze.wrappers; + +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.blaze3d.vertex.VertexFormatElement; +import com.seibel.distanthorizons.common.render.blaze.util.BlazeDhVertexFormatUtil; + +public class BlazeVertexFormatBuilder +{ + private final VertexFormat.Builder builder; + + + + //=============// + // constructor // + //=============// + //region + + public BlazeVertexFormatBuilder() + { + #if MC_VER <= MC_26_1_2 + this.builder = VertexFormat.builder(); + #else + this.builder = VertexFormat.builder(0); + #endif + } + + //endregion + + + + //==========// + // building // + //==========// + //region + + public BlazeVertexFormatBuilder add(String name, VertexFormatElement element) + { + #if MC_VER <= MC_26_1_2 + this.builder.add(name, element); + #else + this.builder.addAttribute(name, element.format()); + #endif + + return this; + } + + public VertexFormat build() { return this.builder.build(); } + + //endregion + + + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPassWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPassWrapper.java new file mode 100644 index 000000000..fbe33ccfd --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPassWrapper.java @@ -0,0 +1,152 @@ +package com.seibel.distanthorizons.common.render.blaze.wrappers; + +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderPass; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.seibel.distanthorizons.common.render.blaze.wrappers.texture.IDhBlazeTexture; +import com.seibel.distanthorizons.core.logging.DhLogger; +import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; + +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.OptionalInt; +import java.util.function.Supplier; + +#if MC_VER <= MC_26_1_2 +#else +import com.mojang.blaze3d.IndexType; +#endif + +public class RenderPassWrapper implements AutoCloseable +{ + public static final DhLogger LOGGER = new DhLoggerBuilder().build(); + + private static final GpuDevice GPU_DEVICE = RenderSystem.getDevice(); + private static final CommandEncoder COMMAND_ENCODER = GPU_DEVICE.createCommandEncoder(); + + + public final RenderPass renderPass; + + + + //=============// + // constructor // + //=============// + //region + + public RenderPassWrapper( + final Supplier nameGetterFunc, + final IDhBlazeTexture colorTexture, + final IDhBlazeTexture depthTexture) + { + #if MC_VER <= MC_26_1_2 + this.renderPass = COMMAND_ENCODER.createRenderPass( + nameGetterFunc, + colorTexture.getTextureView(), + /*optionalClearColorAsInt*/ OptionalInt.empty(), + depthTexture.getTextureView(), + /*optionalDepthValueAsDouble*/ OptionalDouble.empty()); + #else + this.renderPass = COMMAND_ENCODER.createRenderPass( + nameGetterFunc, + colorTexture.getTextureView(), + /*clearColor*/ Optional.empty(), + depthTexture.getTextureView(), + /*clearDepth*/ OptionalDouble.empty()); + #endif + } + + //endregion + + + + //=======// + // setup // + //=======// + //region + + public void bindTexture( + final String name, + final IDhBlazeTexture textureView) + { + this.renderPass.bindTexture( + name, + textureView.getTextureView(), + textureView.getTextureSampler()); + } + + public void setVertexBuffer(GpuBuffer buffer) + { + #if MC_VER <= MC_26_1_2 + this.renderPass.setVertexBuffer(/*slot*/0, buffer); + #else + this.renderPass.setVertexBuffer(/*slot*/0, buffer.slice()); + #endif + } + + public void setIndexBuffer(GpuBuffer buffer) + { + #if MC_VER <= MC_26_1_2 + this.renderPass.setIndexBuffer(buffer, VertexFormat.IndexType.INT); + #else + this.renderPass.setIndexBuffer(buffer, IndexType.INT); + #endif + } + + //endregion + + + + //===========// + // rendering // + //===========// + //region + + public void draw(int vertexCount) + { + #if MC_VER <= MC_26_1_2 + this.renderPass.draw(0, vertexCount); + #else + this.renderPass.draw(vertexCount, /*instanceCount*/1, /*firstVertex*/0, /*firstInstance*/0); + #endif + } + + public void drawIndexed(int indexCount) + { + #if MC_VER <= MC_26_1_2 + this.renderPass.drawIndexed( + /*indexStart*/ 0, + /*firstIndex*/0, + indexCount, + /*instanceCount*/1); + #else + this.renderPass.drawIndexed( + indexCount, + /*instanceCount*/1, + /*firstVertex*/0, + /*vertexOffset*/0, + /*firstInstance*/0); + #endif + + } + + //endregion + + + + //================// + // base overrides // + //================// + //region + + @Override + public void close() { this.renderPass.close(); } + + //endregion + + + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPipelineBuilderWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPipelineBuilderWrapper.java index d2b370929..c44e74d84 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPipelineBuilderWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/RenderPipelineBuilderWrapper.java @@ -14,8 +14,12 @@ import net.minecraft.resources.Identifier; #if MC_VER <= MC_1_21_11 import com.mojang.blaze3d.platform.DepthTestFunction; +#elif MC_VER <= MC_26_1_2 +import com.mojang.blaze3d.platform.CompareOp; #else import com.mojang.blaze3d.platform.CompareOp; +import com.mojang.blaze3d.GpuFormat; +import com.mojang.blaze3d.PrimitiveTopology; #endif import java.io.IOException; @@ -262,12 +266,22 @@ public class RenderPipelineBuilderWrapper } this.blazePipelineBuilder.withDepthStencilState(new DepthStencilState(compareOp, this.writeDepth)); + #if MC_VER <= MC_26_1_2 this.blazePipelineBuilder.withColorTargetState( new ColorTargetState( Optional.ofNullable(this.blendFunction), this.writeColor ? ColorTargetState.WRITE_ALL : ColorTargetState.WRITE_NONE ) ); + #else + this.blazePipelineBuilder.withColorTargetState( + new ColorTargetState( + Optional.ofNullable(this.blendFunction), + GpuFormat.RGBA8_UNORM, + this.writeColor ? ColorTargetState.WRITE_ALL : ColorTargetState.WRITE_NONE + ) + ); + #endif #endif } @@ -275,6 +289,7 @@ public class RenderPipelineBuilderWrapper // vertex format { + #if MC_VER <= MC_26_1_2 VertexFormat.Mode blazeVertexMode; switch (this.vertexMode) { @@ -293,6 +308,29 @@ public class RenderPipelineBuilderWrapper } this.blazePipelineBuilder.withVertexFormat(vertexFormat, blazeVertexMode); + #else + + PrimitiveTopology primitiveTopology; + switch (this.vertexMode) + { + case TRIANGLES: + primitiveTopology = PrimitiveTopology.TRIANGLES; + break; + case TRIANGLE_FAN: + primitiveTopology = PrimitiveTopology.TRIANGLE_FAN; + break; + case LINES: + primitiveTopology = PrimitiveTopology.DEBUG_LINES; + break; + + default: + throw new UnsupportedOperationException("No PrimitiveTopology defined for type ["+this.vertexMode+"]."); + } + + this.blazePipelineBuilder.withVertexBinding(0, vertexFormat); + this.blazePipelineBuilder.withPrimitiveTopology(primitiveTopology); + + #endif } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureViewWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureViewWrapper.java index 5f5a33d2b..3e3d58dc8 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureViewWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureViewWrapper.java @@ -14,7 +14,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import java.util.OptionalDouble; -public class BlazeTextureViewWrapper +public class BlazeTextureViewWrapper implements IDhBlazeTexture { public static final DhLogger LOGGER = new DhLoggerBuilder().build(); @@ -22,8 +22,11 @@ public class BlazeTextureViewWrapper private static final CommandEncoder COMMAND_ENCODER = GPU_DEVICE.createCommandEncoder(); - public GpuTextureView textureView = null; - public GpuSampler textureSampler = null; + private GpuTextureView textureView = null; + public GpuTextureView getTextureView() { return this.textureView; } + + private GpuSampler textureSampler = null; + public GpuSampler getTextureSampler() { return this.textureSampler; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper.java index 1908a4a04..b75c646db 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/BlazeTextureWrapper.java @@ -22,9 +22,10 @@ import com.mojang.blaze3d.textures.*; #else import com.mojang.blaze3d.GpuFormat; +import org.joml.Vector4f; #endif -public class BlazeTextureWrapper +public class BlazeTextureWrapper implements IDhBlazeTexture { public static final DhLogger LOGGER = new DhLoggerBuilder().build(); @@ -42,8 +43,13 @@ public class BlazeTextureWrapper #endif public GpuTexture texture = null; - public GpuTextureView textureView = null; - public GpuSampler textureSampler = null; + + private GpuTextureView textureView = null; + public GpuTextureView getTextureView() { return this.textureView; } + + private GpuSampler textureSampler = null; + public GpuSampler getTextureSampler() { return this.textureSampler; } + private int width = -1; private int height = -1; @@ -185,7 +191,18 @@ public class BlazeTextureWrapper { if (this.texture != null) { + #if MC_VER <= MC_26_1_2 COMMAND_ENCODER.clearColorTexture(this.texture, clearArgbColor); + #else + Vector4f clearColor = new Vector4f( + // color values should be between 0.0 and 1.0 + ColorUtil.getRed(clearArgbColor) / 255.0f, + ColorUtil.getGreen(clearArgbColor) / 255.0f, + ColorUtil.getBlue(clearArgbColor) / 255.0f, + ColorUtil.getAlpha(clearArgbColor) / 255.0f + ); + COMMAND_ENCODER.clearColorTexture(this.texture, clearColor); + #endif } } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/IDhBlazeTexture.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/IDhBlazeTexture.java new file mode 100644 index 000000000..95f37c91f --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/texture/IDhBlazeTexture.java @@ -0,0 +1,12 @@ +package com.seibel.distanthorizons.common.render.blaze.wrappers.texture; + +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.textures.GpuTextureView; + +public interface IDhBlazeTexture +{ + + GpuTextureView getTextureView(); + GpuSampler getTextureSampler(); + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftGLWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftGLWrapper.java index 4639d2ae2..d7b83b281 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftGLWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftGLWrapper.java @@ -157,8 +157,10 @@ public class MinecraftGLWrapper GL32.glEnable(GL32.GL_BLEND); #if MC_VER <= MC_1_12_2 GlStateManager.enableBlend(); - #else + #elif MC_VER <= MC_26_1_2 GlStateManager._enableBlend(); + #else + GlStateManager._enableBlend(0); #endif } /** @see GL32#GL_BLEND */ @@ -167,8 +169,10 @@ public class MinecraftGLWrapper GL32.glDisable(GL32.GL_BLEND); #if MC_VER <= MC_1_12_2 GlStateManager.disableBlend(); + #elif MC_VER <= MC_26_1_2 + GlStateManager._disableBlend(); #else - GlStateManager._disableBlend(); + GlStateManager._disableBlend(0); #endif } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java index f0a39f21f..4e5a5c290 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -456,8 +456,8 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper .backendName(); boolean isVulkan = backendName.equalsIgnoreCase("Vulkan"); this.renderApi = isVulkan ? EDhRenderApi.VULKAN : EDhRenderApi.OPEN_GL; - return this.renderApi; #endif + return this.renderApi; } diff --git a/coreSubProjects b/coreSubProjects index 51b52a7d2..946551249 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 51b52a7d2af4a3b6ffb78ebe4e9e987bf568e2e4 +Subproject commit 9465512491287b58091eb5946f30428748a612b0 diff --git a/versionProperties/26.2.0.properties b/versionProperties/26.2.0.properties index b177059e3..f5da4cb9b 100644 --- a/versionProperties/26.2.0.properties +++ b/versionProperties/26.2.0.properties @@ -1,9 +1,10 @@ # 26.2.0 version java_version=25 -minecraft_version=26.2-snapshot-5 +minecraft_version=26.2-snapshot-7 parchment_version=1.21:2024.07.28 # version range should be used instead of individual versions due to how NeoForge handles version loading -compatible_minecraft_versions=["26.2.0","26.2-alpha.5"] +# TODO this isn't currently a version range for fabric, it's just 2 versions +compatible_minecraft_versions=["26.2.0","26.2-alpha.7"] accessWidenerVersion=26_1 builds_for=fabric #,neoforge @@ -17,7 +18,7 @@ lwjgl_version=3.4.1 # Fabric loader fabric_loader_version=0.18.5 -fabric_api_version=0.147.1+26.2 +fabric_api_version=0.149.0+26.2 modmenu_version= starlight_version_fabric= phosphor_version_fabric=