From 1b82b3020f27030ff818d9cde69348d3ead2f1bd Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:36:58 +1000 Subject: [PATCH] Fix broken memcpy --- .../building/RenderDataFactory4.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderDataFactory4.java b/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderDataFactory4.java index ecd00def..422b3941 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderDataFactory4.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderDataFactory4.java @@ -145,8 +145,27 @@ public class RenderDataFactory4 { opaque = 0; } } - } + /* + for (int i = 0; i < 32*32*32; i++) { + long block = sectionData[i + 32*32*32];//Get the block mapping + + int modelId = this.modelMan.getModelId(Mapper.getBlockId(block)); + long modelMetadata = this.modelMan.getModelMetadataFromClientId(modelId); + + sectionData[i*2] = modelId|((long) (Mapper.getLightId(block)) <<16)|(((long) (Mapper.getBiomeId(block)))<<24); + //sectionData[i*2+1] = modelMetadata; + + boolean isFullyOpaque = ModelQueries.isFullyOpaque(modelMetadata); + int msk = 1 << (i&31); + opaque &= ~msk; opaque |= isFullyOpaque?msk:0; + + //TODO: here also do bitmask of what neighboring sections are needed to compute (may be getting rid of this in future) + + if ((i&31)==31) this.opaqueMasks[i>>5] = opaque; + } + */ + } private void generateYZFaces() { @@ -370,10 +389,11 @@ public class RenderDataFactory4 { //Prepare everything this.prepareSectionData(); - this.generateYZFaces(); + this.generateYZFaces(); this.generateXFaces(); + //TODO:NOTE! when doing face culling of translucent blocks, // if the connecting type of the translucent block is the same AND the face is full, discard it // this stops e.g. multiple layers of glass (and ocean) from having 3000 layers of quads etc @@ -392,7 +412,7 @@ public class RenderDataFactory4 { for (int face = 0; face < 6; face++) { offsets[face + 2] = coff; int size = this.directionalQuadCounters[face]; - UnsafeUtil.memcpy(this.directionalQuadBufferPtr + (face*(8*(1<<16))) + (size*8L), ptr + coff*8L, (size* 8L)); + UnsafeUtil.memcpy(this.directionalQuadBufferPtr + (face*(8*(1<<16))), ptr + coff*8L, (size* 8L)); coff += size; }