diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/AbstractFarWorldRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/AbstractFarWorldRenderer.java index ce8b96f6..347be8a7 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/AbstractFarWorldRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/AbstractFarWorldRenderer.java @@ -59,6 +59,8 @@ public abstract class AbstractFarWorldRenderer { private final List viewports = new ArrayList<>(); + protected IntArrayList updatedSectionIds; + private final ConcurrentLinkedDeque blockStateUpdates = new ConcurrentLinkedDeque<>(); private final ConcurrentLinkedDeque biomeUpdates = new ConcurrentLinkedDeque<>(); public AbstractFarWorldRenderer(int geometrySize, int maxSections) { @@ -96,7 +98,7 @@ public abstract class AbstractFarWorldRenderer { } //Upload any new geometry - this.geometry.uploadResults(); + this.updatedSectionIds = this.geometry.uploadResults(); { boolean didHaveBiomeChange = false; diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/Gl46FarWorldRenderer.java b/src/main/java/me/cortex/voxy/client/core/rendering/Gl46FarWorldRenderer.java index 9ec2a035..13d5867e 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/Gl46FarWorldRenderer.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/Gl46FarWorldRenderer.java @@ -29,8 +29,8 @@ import static org.lwjgl.opengl.GL42.*; import static org.lwjgl.opengl.GL42.GL_FRAMEBUFFER_BARRIER_BIT; import static org.lwjgl.opengl.GL43.*; import static org.lwjgl.opengl.GL43.GL_SHADER_STORAGE_BUFFER; -import static org.lwjgl.opengl.GL45C.glBindTextureUnit; -import static org.lwjgl.opengl.GL45C.glClearNamedBufferData; +import static org.lwjgl.opengl.GL45.glBindTextureUnit; +import static org.lwjgl.opengl.GL45.glClearNamedBufferData; public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer { private final Shader commandGen = Shader.make() @@ -104,6 +104,13 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer return; } + {//Mark all of the updated sections as being visible from last frame + for (int id : this.updatedSectionIds) { + long ptr = UploadStream.INSTANCE.upload(viewport.visibilityBuffer, id * 4L, 4); + MemoryUtil.memPutInt(ptr, viewport.frameId - 1);//(visible from last frame) + } + } + glDisable(GL_BLEND); glEnable(GL_DEPTH_TEST);