This commit is contained in:
mcrcortex
2025-05-02 16:13:30 +10:00
parent d2ec4c359f
commit 2829ddb085
2 changed files with 70 additions and 6 deletions

View File

@@ -36,12 +36,6 @@ public class RenderDistanceTracker {
} }
public void setCenterAndProcess(double x, double z) { public void setCenterAndProcess(double x, double z) {
//Do some very cheeky stuff for MiB
if (false) {
int sector = (((int)Math.floor(x)>>4)+512)>>10;
x -= sector<<14;//10+4
}
double dx = this.posX-x; double dx = this.posX-x;
double dz = this.posZ-z; double dz = this.posZ-z;
if (CHECK_DISTANCE_BLOCKS*CHECK_DISTANCE_BLOCKS<dx*dx+dz*dz) { if (CHECK_DISTANCE_BLOCKS*CHECK_DISTANCE_BLOCKS<dx*dx+dz*dz) {

View File

@@ -10,6 +10,7 @@ public class SharedIndexBuffer {
public static final int CUBE_INDEX_OFFSET = (1<<16)*6*2; public static final int CUBE_INDEX_OFFSET = (1<<16)*6*2;
public static final SharedIndexBuffer INSTANCE = new SharedIndexBuffer(); public static final SharedIndexBuffer INSTANCE = new SharedIndexBuffer();
public static final SharedIndexBuffer INSTANCE_BYTE = new SharedIndexBuffer(true); public static final SharedIndexBuffer INSTANCE_BYTE = new SharedIndexBuffer(true);
public static final SharedIndexBuffer INSTANCE_BB_BYTE = new SharedIndexBuffer(true, true);
private final GlBuffer indexBuffer; private final GlBuffer indexBuffer;
@@ -40,6 +41,15 @@ public class SharedIndexBuffer {
cubeBuff.free(); cubeBuff.free();
} }
private SharedIndexBuffer(boolean type2, boolean type3) {
this.indexBuffer = new GlBuffer(6*2*3*(256/8));
var cubeBuff = generateByteCubesIndexBuffer(256/8);
cubeBuff.cpyTo(UploadStream.INSTANCE.upload(this.indexBuffer, 0, this.indexBuffer.size()));
UploadStream.INSTANCE.commit();
cubeBuff.free();
}
private static MemoryBuffer generateCubeIndexBuffer() { private static MemoryBuffer generateCubeIndexBuffer() {
var buffer = new MemoryBuffer(6*2*3); var buffer = new MemoryBuffer(6*2*3);
long ptr = buffer.address; long ptr = buffer.address;
@@ -96,6 +106,66 @@ public class SharedIndexBuffer {
return buffer; return buffer;
} }
private static MemoryBuffer generateByteCubesIndexBuffer(int cnt) {
var buffer = new MemoryBuffer((long) cnt *6*2*3);
long ptr = buffer.address;
MemoryUtil.memSet(ptr, 0, buffer.size);
for (int i = 0; i < cnt; i++) {
int j = i*8;
//Bottom face
MemoryUtil.memPutByte(ptr++, (byte) (0+j));
MemoryUtil.memPutByte(ptr++, (byte) (1+j));
MemoryUtil.memPutByte(ptr++, (byte) (2+j));
MemoryUtil.memPutByte(ptr++, (byte) (3+j));
MemoryUtil.memPutByte(ptr++, (byte) (2+j));
MemoryUtil.memPutByte(ptr++, (byte) (1+j));
//top face
MemoryUtil.memPutByte(ptr++, (byte) (6+j));
MemoryUtil.memPutByte(ptr++, (byte) (5+j));
MemoryUtil.memPutByte(ptr++, (byte) (4+j));
MemoryUtil.memPutByte(ptr++, (byte) (5+j));
MemoryUtil.memPutByte(ptr++, (byte) (6+j));
MemoryUtil.memPutByte(ptr++, (byte) (7+j));
//north face
MemoryUtil.memPutByte(ptr++, (byte) (0+j));
MemoryUtil.memPutByte(ptr++, (byte) (4+j));
MemoryUtil.memPutByte(ptr++, (byte) (1+j));
MemoryUtil.memPutByte(ptr++, (byte) (5+j));
MemoryUtil.memPutByte(ptr++, (byte) (1+j));
MemoryUtil.memPutByte(ptr++, (byte) (4+j));
//south face
MemoryUtil.memPutByte(ptr++, (byte) (3+j));
MemoryUtil.memPutByte(ptr++, (byte) (6+j));
MemoryUtil.memPutByte(ptr++, (byte) (2+j));
MemoryUtil.memPutByte(ptr++, (byte) (6+j));
MemoryUtil.memPutByte(ptr++, (byte) (3+j));
MemoryUtil.memPutByte(ptr++, (byte) (7+j));
//west face
MemoryUtil.memPutByte(ptr++, (byte) (2+j));
MemoryUtil.memPutByte(ptr++, (byte) (4+j));
MemoryUtil.memPutByte(ptr++, (byte) (0+j));
MemoryUtil.memPutByte(ptr++, (byte) (4+j));
MemoryUtil.memPutByte(ptr++, (byte) (2+j));
MemoryUtil.memPutByte(ptr++, (byte) (6+j));
//east face
MemoryUtil.memPutByte(ptr++, (byte) (1+j));
MemoryUtil.memPutByte(ptr++, (byte) (5+j));
MemoryUtil.memPutByte(ptr++, (byte) (3+j));
MemoryUtil.memPutByte(ptr++, (byte) (7+j));
MemoryUtil.memPutByte(ptr++, (byte) (3+j));
MemoryUtil.memPutByte(ptr++, (byte) (5+j));
}
return buffer;
}
public static MemoryBuffer generateQuadIndicesByte(int quadCount) { public static MemoryBuffer generateQuadIndicesByte(int quadCount) {
if ((quadCount*4) >= 1<<8) { if ((quadCount*4) >= 1<<8) {
throw new IllegalArgumentException("Quad count to large"); throw new IllegalArgumentException("Quad count to large");