rename vbo containers

This commit is contained in:
James Seibel
2026-03-09 11:24:09 -05:00
parent 84d1298e18
commit 3c680b5daf
5 changed files with 44 additions and 25 deletions
@@ -53,7 +53,8 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.render.renderer.RenderParams;
import com.seibel.distanthorizons.core.render.renderer.generic.GenericRenderObjectFactory;
import com.seibel.distanthorizons.core.render.renderer.generic.InstancedVboContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.NativeGlGenericObjectVertexContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.RenderableBoxGroup;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.math.Mat4f;
@@ -397,7 +398,7 @@ public class McGenericObjectRenderer implements IMcGenericRenderer
boxGroup.tryUpdateInstancedDataAsync();
// skip groups that haven't been uploaded yet
if (boxGroup.instancedVbos.getState() != InstancedVboContainer.EState.RENDER)
if (boxGroup.instancedVbos.getState() != IGenericObjectVertexBufferContainer.EState.RENDER)
{
continue;
}
@@ -11,7 +11,7 @@ import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLEnums;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import com.seibel.distanthorizons.core.render.renderer.generic.IInstancedVboContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.RenderableBoxGroup;
import com.seibel.distanthorizons.core.util.ColorUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
@@ -28,7 +28,7 @@ import java.util.function.Supplier;
*
* @see RenderableBoxGroup
*/
public class McInstancedVboContainer implements IInstancedVboContainer
public class McInstancedVboContainer implements IGenericObjectVertexBufferContainer
{
private static final DhLogger LOGGER = new DhLoggerBuilder().build();
@@ -170,9 +170,9 @@ public class McInstancedVboContainer implements IInstancedVboContainer
private EState state = EState.NEW;
@Override
public IInstancedVboContainer.EState getState() { return this.state; }
public IGenericObjectVertexBufferContainer.EState getState() { return this.state; }
@Override
public void setState(IInstancedVboContainer.EState state) { this.state = state; }
public void setState(IGenericObjectVertexBufferContainer.EState state) { this.state = state; }
@@ -12,6 +12,12 @@ import java.util.function.Supplier;
public class VertexBufferWrapper implements IVertexBufferWrapper
{
private static final GpuDevice GPU_DEVICE = RenderSystem.getDevice();
private static final CommandEncoder COMMAND_ENCODER = GPU_DEVICE.createCommandEncoder();
public final String name;
public String getName() { return this.name; }
public GpuBuffer vboGpuBuffer = null;
public int vertexCount = -1;
@@ -19,13 +25,20 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
public boolean uploaded = false;
@Override
public int getVertexCount() { return this.vertexCount ;}
//=============//
// constructor //
//=============//
//region
public VertexBufferWrapper(String name) { this.name = name; }
//endregion
//========//
// render //
// upload //
//========//
//region
@@ -37,20 +50,24 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
this.uploaded = true;
GpuDevice gpuDevice = RenderSystem.getDevice();
CommandEncoder commandEncoder = gpuDevice.createCommandEncoder();
Supplier<String> labelSupplier = () -> "distantHorizons:McLodRenderer";
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 byteSize = (buffer.limit() - buffer.position());
this.vboGpuBuffer = gpuDevice.createBuffer(labelSupplier, usage, byteSize);
this.vboGpuBuffer = GPU_DEVICE.createBuffer(this::getName, usage, byteSize);
{
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, /*offset*/0, byteSize);
commandEncoder.writeToBuffer(bufferSlice, buffer);
}
GpuBufferSlice bufferSlice = new GpuBufferSlice(this.vboGpuBuffer, /*offset*/0, byteSize);
COMMAND_ENCODER.writeToBuffer(bufferSlice, buffer);
}
//endregion
//================//
// base overrides //
//================//
//region
@Override
public void close()
{
@@ -60,8 +77,8 @@ public class VertexBufferWrapper implements IVertexBufferWrapper
}
}
//endregion
}
@@ -36,7 +36,8 @@ import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
import com.seibel.distanthorizons.core.level.IDhLevel;
import com.seibel.distanthorizons.core.level.IDhServerLevel;
import com.seibel.distanthorizons.core.render.renderer.generic.IInstancedVboContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
import com.seibel.distanthorizons.core.render.renderer.generic.IGenericObjectVertexBufferContainer;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
@@ -363,12 +364,12 @@ public class WrapperFactory implements IWrapperFactory
@Override
public IVertexBufferWrapper createVboWrapper() { return new VertexBufferWrapper(); }
public IVertexBufferWrapper createVboWrapper(String name) { return new VertexBufferWrapper(name); }
@Override
public ILodContainerUniformBufferWrapper createLodContainerUniformWrapper() { return new LodContainerUniformBufferWrapper(); }
@Override
public IInstancedVboContainer createInstancedVboContainer() { return new McInstancedVboContainer(); }
public IGenericObjectVertexBufferContainer createInstancedVboContainer() { return new McInstancedVboContainer(); }
@Override
public IMcGenericRenderer createGenericRenderer() { return new McGenericObjectRenderer(); }