From f745e9c51a58eebe1d75cb552c8ca517f45e5861 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 8 Mar 2026 19:32:52 -0500 Subject: [PATCH] Merge post-processing VBO logic --- .../renderTest/McDebugObjectRenderer.java | 4 +- .../renderTest/McGenericObjectRenderer.java | 2 +- .../common/renderTest/McLodRenderer.java | 4 +- .../renderTest/apply/DhApplyRenderer.java | 40 ++------------ .../renderTest/apply/McCopyRenderer.java | 34 +----------- .../helpers/AbstractUniformBufferWrapper.java | 2 +- .../helpers/McInstancedVboContainer.java | 4 +- .../renderTest/helpers/PostProcessHelper.java | 55 +++++++++++++++++++ .../postProcessing/McFarFadeRenderer.java | 41 +------------- .../postProcessing/McFogRenderer.java | 37 +------------ .../postProcessing/McSsaoRenderer.java | 41 +------------- .../postProcessing/McVanillaFadeRenderer.java | 41 +------------- 12 files changed, 83 insertions(+), 222 deletions(-) create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/PostProcessHelper.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McDebugObjectRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McDebugObjectRenderer.java index 17a562cee..1050db3fa 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McDebugObjectRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McDebugObjectRenderer.java @@ -207,7 +207,7 @@ public class McDebugObjectRenderer implements IMcDebugRenderer // box vertex indexes { ByteBuffer buffer = ByteBuffer.allocateDirect(BOX_OUTLINE_INDICES.length * Integer.BYTES); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer.asIntBuffer().put(BOX_OUTLINE_INDICES); buffer.rewind(); @@ -305,7 +305,7 @@ public class McDebugObjectRenderer implements IMcDebugRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putMat4f(transformMatrix.createJomlMatrix()) // uTransform .putVec4( diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McGenericObjectRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McGenericObjectRenderer.java index db03e9489..cdfc5d6c5 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McGenericObjectRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McGenericObjectRenderer.java @@ -446,7 +446,7 @@ public class McGenericObjectRenderer implements IMcGenericRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putIVec3( LodUtil.getChunkPosFromDouble(boxGroup.getOriginBlockPos().x), diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McLodRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McLodRenderer.java index a1366e526..34d51edab 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McLodRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/McLodRenderer.java @@ -211,7 +211,7 @@ public class McLodRenderer implements IMcLodRenderer .get(); ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); Std140Builder.intoBuffer(buffer) .putInt(0) // uIsWhiteWorld @@ -253,7 +253,7 @@ public class McLodRenderer implements IMcLodRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putFloat(dhNearClipDistance) // uClipDistance .putFloat(Config.Client.Advanced.Graphics.NoiseTexture.noiseIntensity.get()) // uNoiseIntensity diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/DhApplyRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/DhApplyRenderer.java index 3d09de693..5b877080a 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/DhApplyRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/DhApplyRenderer.java @@ -34,6 +34,7 @@ import com.mojang.blaze3d.vertex.VertexFormat; import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; import com.seibel.distanthorizons.common.renderTest.helpers.McTextureViewWrapper; import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; +import com.seibel.distanthorizons.common.renderTest.helpers.PostProcessHelper; import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import net.minecraft.resources.Identifier; @@ -59,6 +60,7 @@ public class DhApplyRenderer protected GpuBuffer vboGpuBuffer; + protected final String name; protected final String identifierName; public String getIdentifierName() { return this.identifierName; } @@ -85,7 +87,8 @@ public class DhApplyRenderer String vertexShaderPath, String fragmentShaderPath ) { - this.identifierName = "distanthorizons:"+name; + this.name = name; + this.identifierName = "distanthorizons:"+this.name; this.blendFunction = blendFunction; this.vertexShaderPath = vertexShaderPath; @@ -98,7 +101,7 @@ public class DhApplyRenderer GpuTexture destinationColorTexture) { this.createPipeline(); - this.uploadVertexData(); + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData(this.name); this.sourceColorTextureViewWrapper.trySetup(sourceColorTexture); this.sourceDepthTextureViewWrapper.trySetup(sourceDepthTexture); @@ -147,38 +150,7 @@ public class DhApplyRenderer } this.pipeline = pipelineBuilder.build(); } - private void uploadVertexData() - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:"+this.identifierName; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = GPU_DEVICE.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - COMMAND_ENCODER.writeToBuffer(bufferSlice, byteBuffer); - } - } + //endregion diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/McCopyRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/McCopyRenderer.java index d791a93ef..bdc663459 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/McCopyRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/apply/McCopyRenderer.java @@ -33,6 +33,7 @@ import com.mojang.blaze3d.vertex.VertexFormat; import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; import com.seibel.distanthorizons.common.renderTest.helpers.McTextureViewWrapper; import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; +import com.seibel.distanthorizons.common.renderTest.helpers.PostProcessHelper; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -112,38 +113,7 @@ public class McCopyRenderer this.pipeline = pipelineBuilder.build(); - // upload vertex data - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:McCopyRenderer"; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - commandEncoder.writeToBuffer(bufferSlice, byteBuffer); - } - } + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData("McCopyRenderer"); } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/AbstractUniformBufferWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/AbstractUniformBufferWrapper.java index e2703eef8..3f6b9e322 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/AbstractUniformBufferWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/AbstractUniformBufferWrapper.java @@ -40,7 +40,7 @@ public abstract class AbstractUniformBufferWrapper implements IUniformBufferWrap || this.buffer.capacity() != size) { this.buffer = ByteBuffer.allocateDirect(size); - this.buffer.order(ByteOrder.LITTLE_ENDIAN); + this.buffer.order(ByteOrder.nativeOrder()); // GpuBuffer.USAGE_UNIFORM = 128 // GpuBuffer.USAGE_INDEX = 64 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/McInstancedVboContainer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/McInstancedVboContainer.java index 58f147a6b..bc8b8036b 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/McInstancedVboContainer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/McInstancedVboContainer.java @@ -197,11 +197,11 @@ public class McInstancedVboContainer implements IInstancedVboContainer int vertexBufferSize = this.vertexBufferSize(); this.vertexBuffer = ByteBuffer.allocateDirect(vertexBufferSize); - this.vertexBuffer.order(ByteOrder.LITTLE_ENDIAN); + this.vertexBuffer.order(ByteOrder.nativeOrder()); int indexBufferSize = this.indexBufferSize(); this.indexBuffer = ByteBuffer.allocateDirect(indexBufferSize); - this.indexBuffer.order(ByteOrder.LITTLE_ENDIAN); + this.indexBuffer.order(ByteOrder.nativeOrder()); } this.vertexBuffer.position(0); this.indexBuffer.position(0); diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/PostProcessHelper.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/PostProcessHelper.java new file mode 100644 index 000000000..c5b03d767 --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/helpers/PostProcessHelper.java @@ -0,0 +1,55 @@ +package com.seibel.distanthorizons.common.renderTest.helpers; + +import com.mojang.blaze3d.buffers.GpuBuffer; +import com.mojang.blaze3d.buffers.GpuBufferSlice; +import com.mojang.blaze3d.systems.CommandEncoder; +import com.mojang.blaze3d.systems.GpuDevice; +import com.mojang.blaze3d.systems.RenderSystem; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.function.Supplier; + +public class PostProcessHelper +{ + + private static final GpuDevice GPU_DEVICE = RenderSystem.getDevice(); + private static final CommandEncoder COMMAND_ENCODER = GPU_DEVICE.createCommandEncoder(); + + // vertices for a full-screen quad + private static final float[] VERTICES = new float[] + { + // PosX,Y, + -1f, -1f, + 1f, -1f, + 1f, 1f, + -1f, 1f, + }; + + + public static GpuBuffer createAndUploadScreenVertexData(String name) + { + + Supplier labelSupplier = () -> "distantHorizons:"+name; + // TODO + int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side + int size = VERTICES.length * Float.BYTES; + GpuBuffer vboGpuBuffer = GPU_DEVICE.createBuffer(labelSupplier, usage, size); + + { + int length = VERTICES.length * Float.BYTES; + GpuBufferSlice bufferSlice = new GpuBufferSlice(vboGpuBuffer, /*offset*/ 0, length); + + ByteBuffer byteBuffer = ByteBuffer.allocateDirect(VERTICES.length * Float.BYTES); + // Fill buffer with vertices. + byteBuffer.order(ByteOrder.nativeOrder()); + byteBuffer.asFloatBuffer().put(VERTICES); + byteBuffer.rewind(); + + COMMAND_ENCODER.writeToBuffer(bufferSlice, byteBuffer); + } + + return vboGpuBuffer; + } + +} diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFarFadeRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFarFadeRenderer.java index a99d313e0..70387a5ac 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFarFadeRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFarFadeRenderer.java @@ -33,12 +33,9 @@ import com.mojang.blaze3d.systems.RenderPass; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.*; import com.mojang.blaze3d.vertex.VertexFormat; -import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; +import com.seibel.distanthorizons.common.renderTest.helpers.*; import com.seibel.distanthorizons.common.renderTest.apply.McCopyRenderer; import com.seibel.distanthorizons.common.renderTest.McLodRenderer; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureViewWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.UniformHandler; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -136,39 +133,7 @@ public class McFarFadeRenderer implements IMcFarFadeRenderer this.pipeline = pipelineBuilder.build(); - // upload vertex data - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:McFadeRenderer"; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - commandEncoder.writeToBuffer(bufferSlice, byteBuffer); - } - } - + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData("McFadeRenderer"); } //endregion @@ -226,7 +191,7 @@ public class McFarFadeRenderer implements IMcFarFadeRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putFloat(fadeStartDistance) // uStartFadeBlockDistance .putFloat(fadeEndDistance) // uEndFadeBlockDistance diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFogRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFogRenderer.java index e0e251937..9494c6a04 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFogRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McFogRenderer.java @@ -44,6 +44,7 @@ import com.seibel.distanthorizons.common.renderTest.apply.DhApplyRenderer; import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; import com.seibel.distanthorizons.common.renderTest.McLodRenderer; import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; +import com.seibel.distanthorizons.common.renderTest.helpers.PostProcessHelper; import com.seibel.distanthorizons.common.renderTest.helpers.UniformHandler; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; @@ -151,39 +152,7 @@ public class McFogRenderer implements IMcFogRenderer this.pipeline = pipelineBuilder.build(); - // upload vertex data - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:McFogRenderer"; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - commandEncoder.writeToBuffer(bufferSlice, byteBuffer); - } - } - + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData("McFogRenderer"); } //endregion @@ -302,7 +271,7 @@ public class McFogRenderer implements IMcFogRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) // fog uniforms diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McSsaoRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McSsaoRenderer.java index 25e9db043..52065d2bb 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McSsaoRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McSsaoRenderer.java @@ -38,11 +38,8 @@ import com.mojang.blaze3d.textures.*; import com.mojang.blaze3d.vertex.VertexFormat; import com.seibel.distanthorizons.api.objects.math.DhApiMat4f; import com.seibel.distanthorizons.common.renderTest.apply.DhApplyRenderer; -import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; +import com.seibel.distanthorizons.common.renderTest.helpers.*; import com.seibel.distanthorizons.common.renderTest.McLodRenderer; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureViewWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.UniformHandler; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; @@ -141,39 +138,7 @@ public class McSsaoRenderer implements IMcSsaoRenderer this.pipeline = pipelineBuilder.build(); - // upload vertex data - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:McFadeRenderer"; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - commandEncoder.writeToBuffer(bufferSlice, byteBuffer); - } - } - + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData("McSsao"); } //endregion @@ -227,7 +192,7 @@ public class McSsaoRenderer implements IMcSsaoRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putInt(6) // uSampleCount diff --git a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McVanillaFadeRenderer.java b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McVanillaFadeRenderer.java index ec91d7e08..122c0e44d 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McVanillaFadeRenderer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/renderTest/postProcessing/McVanillaFadeRenderer.java @@ -35,10 +35,7 @@ import com.mojang.blaze3d.textures.*; import com.mojang.blaze3d.vertex.VertexFormat; import com.seibel.distanthorizons.common.renderTest.McLodRenderer; import com.seibel.distanthorizons.common.renderTest.apply.McCopyRenderer; -import com.seibel.distanthorizons.common.renderTest.helpers.DhVertexFormat; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureViewWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.McTextureWrapper; -import com.seibel.distanthorizons.common.renderTest.helpers.UniformHandler; +import com.seibel.distanthorizons.common.renderTest.helpers.*; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLogger; @@ -139,39 +136,7 @@ public class McVanillaFadeRenderer implements IMcVanillaFadeRenderer this.pipeline = pipelineBuilder.build(); - // upload vertex data - { - // vertices for a full-screen quad - float[] vertices = new float[] - { - // PosX,Y, - -1f, -1f, - 1f, -1f, - 1f, 1f, - -1f, 1f, - }; - - - Supplier labelSupplier = () -> "distantHorizons:McFadeRenderer"; - int usage = 8 | 32; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side - int size = vertices.length * Float.BYTES; - this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, size); - - { - int offset = 0; - int length = vertices.length * Float.BYTES; - GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, offset, length); - - ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * Float.BYTES); - // Fill buffer with vertices. - byteBuffer.order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(vertices); - byteBuffer.rewind(); - - commandEncoder.writeToBuffer(bufferSlice, byteBuffer); - } - } - + this.vboGpuBuffer = PostProcessHelper.createAndUploadScreenVertexData("McFadeRenderer"); } //endregion @@ -245,7 +210,7 @@ public class McVanillaFadeRenderer implements IMcVanillaFadeRenderer // upload data // ByteBuffer buffer = ByteBuffer.allocateDirect(uniformBufferSize); - buffer.order(ByteOrder.LITTLE_ENDIAN); + buffer.order(ByteOrder.nativeOrder()); buffer = Std140Builder.intoBuffer(buffer) .putInt(Config.Client.Advanced.Debugging.lodOnlyMode.get() ? 1 : 0) // uOnlyRenderLods .putFloat(fadeStartDistance) // uStartFadeBlockDistance