move vertex format

This commit is contained in:
James Seibel
2026-03-09 11:51:38 -05:00
parent 5c5de3c744
commit a2c96ba7ff
11 changed files with 28 additions and 50 deletions
@@ -32,8 +32,8 @@ 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.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.helpers.UniformHandler;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
@@ -120,6 +120,7 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
private GpuBuffer uniformBuffer;
//=============//
// constructor //
//=============//
@@ -145,10 +146,6 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
}
private void createPipelines()
{
GpuDevice gpuDevice = RenderSystem.getDevice();
CommandEncoder commandEncoder = gpuDevice.createCommandEncoder();
RenderPipeline.Builder pipelineBuilder = RenderPipeline.builder();
{
pipelineBuilder.withCull(false);
@@ -157,7 +154,7 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
pipelineBuilder.withColorWrite(true);
pipelineBuilder.withoutBlend();
pipelineBuilder.withPolygonMode(PolygonMode.WIREFRAME);
pipelineBuilder.withLocation(Identifier.parse("distanthorizons:debug_renderer"));
pipelineBuilder.withLocation(Identifier.parse("distanthorizons:debug_wireframe_renderer"));
pipelineBuilder.withVertexShader(Identifier.fromNamespaceAndPath("distanthorizons", "debug/blaze/vert"));
pipelineBuilder.withFragmentShader(Identifier.fromNamespaceAndPath("distanthorizons", "debug/blaze/frag"));
@@ -177,29 +174,23 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
boxVerticesBuffer.rewind();
MemoryUtil.memFree(boxVerticesBuffer);
GpuDevice gpuDevice = RenderSystem.getDevice();
CommandEncoder commandEncoder = gpuDevice.createCommandEncoder();
// upload vertex data
{
Supplier<String> labelSupplier = () -> "distantHorizons:McDebugRenderer";
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 usage = GpuBuffer.USAGE_COPY_DST
| GpuBuffer.USAGE_VERTEX;
int size = BOX_VERTICES.length * Float.BYTES;
this.boxVertexBuffer = gpuDevice.createBuffer(labelSupplier, usage, size);
this.boxVertexBuffer = GPU_DEVICE.createBuffer(() -> "distantHorizons:McDebugWireframeBox", usage, size);
{
int offset = 0;
int length = BOX_VERTICES.length * Float.BYTES;
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.boxVertexBuffer, offset, length);
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.boxVertexBuffer, /*offset*/ 0, length);
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BOX_VERTICES.length * Float.BYTES);
// Fill buffer with vertices.
byteBuffer.order(ByteOrder.nativeOrder());
byteBuffer.asFloatBuffer().put(BOX_VERTICES);
byteBuffer.rewind();
commandEncoder.writeToBuffer(bufferSlice, byteBuffer);
COMMAND_ENCODER.writeToBuffer(bufferSlice, byteBuffer);
}
}
@@ -211,15 +202,15 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
buffer.rewind();
// TODO
// GpuBuffer.USAGE_UNIFORM = 128
// GpuBuffer.USAGE_INDEX = 64
int usage = 8 | 32 | 64 | 128; // is this just using OpenGL VBO flags?, if so I can't find it, supposedly GlDevice on Mojang's side
this.boxIndexBuffer = gpuDevice.createBuffer(() -> "DH Debug Index Buffer", usage, buffer.capacity());
int usage = GpuBuffer.USAGE_COPY_DST
| GpuBuffer.USAGE_VERTEX
| GpuBuffer.USAGE_INDEX
| GpuBuffer.USAGE_UNIFORM;
this.boxIndexBuffer = GPU_DEVICE.createBuffer(() -> "DH Debug Index Buffer", usage, buffer.capacity());
int offset = 0;
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.boxIndexBuffer, offset, buffer.capacity());
commandEncoder.writeToBuffer(bufferSlice, buffer);
COMMAND_ENCODER.writeToBuffer(bufferSlice, buffer);
}
}
@@ -266,15 +257,6 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
//===========//
// rendering //
//===========//
//#region
// validation //
// uniforms
{
int uniformBufferSize = new Std140SizeCalculator()
@@ -329,13 +311,13 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
this::getName,
McLodRenderer.INSTANCE.dhColorTextureWrapper.textureView,
/*optionalClearColorAsInt*/ OptionalInt.empty(),
McLodRenderer.INSTANCE.dhDepthTextureWrapper.textureView, /*optionalDepthValueAsDouble*/ OptionalDouble.empty()))
McLodRenderer.INSTANCE.dhDepthTextureWrapper.textureView,
/*optionalDepthValueAsDouble*/ OptionalDouble.empty()))
{
// Bind instance data //
renderPass.setUniform("uniformBlock", this.uniformBuffer);
// set pipeline
renderPass.setPipeline(this.pipeline); // TODO
renderPass.setPipeline(this.pipeline);
renderPass.setIndexBuffer(this.boxIndexBuffer, VertexFormat.IndexType.INT);
renderPass.setVertexBuffer(0, this.boxVertexBuffer);
@@ -346,8 +328,6 @@ public class BlazeDebugWireframeRenderer implements IMcDebugRenderer
/*indexCount*/BOX_OUTLINE_INDICES.length,
/*instanceCount*/1);
}
//#endregion
}
private String getName() { return "distantHorizons:McDebugRenderer"; }
@@ -42,8 +42,8 @@ import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiBeforeG
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading;
import com.seibel.distanthorizons.common.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.helpers.BlazeGenericObjectVertexContainer;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.helpers.UniformHandler;
import com.seibel.distanthorizons.common.wrappers.misc.LightMapWrapper;
@@ -18,6 +18,7 @@ import com.mojang.blaze3d.textures.*;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.seibel.distanthorizons.common.render.blaze.apply.DhApplyRenderer;
import com.seibel.distanthorizons.common.render.blaze.helpers.*;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.common.render.blaze.wrappers.VertexBufferWrapper;
@@ -31,7 +31,7 @@ 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.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
import com.seibel.distanthorizons.core.logging.DhLogger;
@@ -29,7 +29,7 @@ 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.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
@@ -79,10 +79,6 @@ public class McCopyRenderer
GpuDevice gpuDevice = RenderSystem.getDevice();
CommandEncoder commandEncoder = gpuDevice.createCommandEncoder();
this.vertexFormat = VertexFormat.builder()
.add("vPosition", DhBlazeVertexFormat.SCREEN_POS)
.build();
@@ -36,6 +36,7 @@ import com.seibel.distanthorizons.common.render.blaze.McLodRenderer;
import com.seibel.distanthorizons.common.render.blaze.apply.McCopyRenderer;
import com.seibel.distanthorizons.common.render.blaze.helpers.*;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
@@ -41,7 +41,7 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiHeightFogMixMode;
import com.seibel.distanthorizons.api.objects.math.DhApiMat4f;
import com.seibel.distanthorizons.common.render.blaze.McLodRenderer;
import com.seibel.distanthorizons.common.render.blaze.apply.DhApplyRenderer;
import com.seibel.distanthorizons.common.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
import com.seibel.distanthorizons.common.render.blaze.helpers.UniformHandler;
@@ -38,7 +38,7 @@ import com.mojang.blaze3d.vertex.VertexFormat;
import com.seibel.distanthorizons.api.objects.math.DhApiMat4f;
import com.seibel.distanthorizons.common.render.blaze.McLodRenderer;
import com.seibel.distanthorizons.common.render.blaze.apply.DhApplyRenderer;
import com.seibel.distanthorizons.common.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
import com.seibel.distanthorizons.common.render.blaze.helpers.UniformHandler;
@@ -36,6 +36,7 @@ import com.seibel.distanthorizons.common.render.blaze.McLodRenderer;
import com.seibel.distanthorizons.common.render.blaze.apply.McCopyRenderer;
import com.seibel.distanthorizons.common.render.blaze.helpers.*;
import com.seibel.distanthorizons.common.render.blaze.util.BlazePostProcessUtil;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureViewWrapper;
import com.seibel.distanthorizons.common.render.blaze.wrappers.BlazeTextureWrapper;
import com.seibel.distanthorizons.core.config.Config;
@@ -30,7 +30,7 @@ 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.render.blaze.helpers.DhBlazeVertexFormat;
import com.seibel.distanthorizons.common.render.blaze.util.DhBlazeVertexFormat;
import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.render.IMcTestRenderer;
@@ -1,4 +1,4 @@
package com.seibel.distanthorizons.common.render.blaze.helpers;
package com.seibel.distanthorizons.common.render.blaze.util;
import com.mojang.blaze3d.vertex.VertexFormatElement;
import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.LodQuadBuilder;
@@ -20,8 +20,7 @@ public class DhBlazeVertexFormat
public static final VertexFormatElement IRIS_NORMAL = VertexFormatElement.register(/*id*/14, /*index*/0, VertexFormatElement.Type.BYTE, VertexFormatElement.Usage.GENERIC, /*count*/ 1);
public static final VertexFormatElement FLOAT_XYZ_POS = VertexFormatElement.register(/*id*/15, /*index*/0, VertexFormatElement.Type.FLOAT, VertexFormatElement.Usage.POSITION, /*count*/ 3);
public static final VertexFormatElement VEC3 = VertexFormatElement.register(/*id*/16, /*index*/0, VertexFormatElement.Type.FLOAT, VertexFormatElement.Usage.GENERIC, /*count*/ 3);
public static final VertexFormatElement IVEC3 = VertexFormatElement.register(/*id*/17, /*index*/0, VertexFormatElement.Type.INT, VertexFormatElement.Usage.GENERIC, /*count*/ 3);
}