diff --git a/src/main/java/me/cortex/zenith/client/core/DistanceTracker.java b/src/main/java/me/cortex/zenith/client/core/DistanceTracker.java index 3300157e..951bba63 100644 --- a/src/main/java/me/cortex/zenith/client/core/DistanceTracker.java +++ b/src/main/java/me/cortex/zenith/client/core/DistanceTracker.java @@ -28,7 +28,7 @@ public class DistanceTracker { this.minYSection = MinecraftClient.getInstance().world.getBottomSectionCoord()/2; this.maxYSection = MinecraftClient.getInstance().world.getTopSectionCoord()/2; - if (false) { + if (true) { this.rings[0] = new TransitionRing2D(5, MinecraftClient.getInstance().options.getViewDistance().getValue() / 2, (x, z) -> { for (int y = this.minYSection; y <= this.maxYSection; y++) { this.tracker.remLvl0(x, y, z); diff --git a/src/main/java/me/cortex/zenith/client/core/model/ModelManager.java b/src/main/java/me/cortex/zenith/client/core/model/ModelManager.java index 07b8e440..913aa1b9 100644 --- a/src/main/java/me/cortex/zenith/client/core/model/ModelManager.java +++ b/src/main/java/me/cortex/zenith/client/core/model/ModelManager.java @@ -439,12 +439,32 @@ public class ModelManager { return res; } + //TODO:FIXME: if the model is not already in the cache for some reason it renders black, need to figure out why public long getModelMetadata(int blockId) { - int map = this.idMappings[blockId]; + int map = 0; + while ((map = this.idMappings[blockId]) == -1) { + Thread.onSpinWait(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + if (map == -1) { throw new IllegalArgumentException("Id hasnt been computed yet: " + blockId); } - return this.metadataCache[map]; + long meta = 0; + + while ((meta = this.metadataCache[map]) == 0) { + Thread.onSpinWait(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + return meta; } public int getModelId(int blockId) { diff --git a/src/main/java/me/cortex/zenith/client/core/rendering/Gl46FarWorldRenderer.java b/src/main/java/me/cortex/zenith/client/core/rendering/Gl46FarWorldRenderer.java index 567f803a..3369d4cf 100644 --- a/src/main/java/me/cortex/zenith/client/core/rendering/Gl46FarWorldRenderer.java +++ b/src/main/java/me/cortex/zenith/client/core/rendering/Gl46FarWorldRenderer.java @@ -115,7 +115,6 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer { RenderLayer.getCutoutMipped().startDrawing(); int oldActiveTexture = glGetInteger(GL_ACTIVE_TEXTURE); - int oldBoundTexture = glGetInteger(GL_TEXTURE_BINDING_2D); //RenderSystem.enableBlend(); //RenderSystem.defaultBlendFunc(); @@ -127,8 +126,9 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer { //Bind the texture atlas - glBindSampler(0, this.models.getSamplerId()); glActiveTexture(GL_TEXTURE0); + int oldBoundTexture = glGetInteger(GL_TEXTURE_BINDING_2D); + glBindSampler(0, this.models.getSamplerId()); glBindTexture(GL_TEXTURE_2D, this.models.getTextureId()); glClearNamedBufferData(this.glCommandCountBuffer.id, GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, new int[1]); @@ -174,10 +174,10 @@ public class Gl46FarWorldRenderer extends AbstractFarWorldRenderer { RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); int oldActiveTexture = glGetInteger(GL_ACTIVE_TEXTURE); - int oldBoundTexture = glGetInteger(GL_TEXTURE_BINDING_2D); glBindSampler(0, this.models.getSamplerId()); glActiveTexture(GL_TEXTURE0); + int oldBoundTexture = glGetInteger(GL_TEXTURE_BINDING_2D); glBindTexture(GL_TEXTURE_2D, this.models.getTextureId()); this.lodShader.bind(); diff --git a/src/main/java/me/cortex/zenith/client/importers/WorldImporter.java b/src/main/java/me/cortex/zenith/client/importers/WorldImporter.java index b2a394ec..1330a6f8 100644 --- a/src/main/java/me/cortex/zenith/client/importers/WorldImporter.java +++ b/src/main/java/me/cortex/zenith/client/importers/WorldImporter.java @@ -216,7 +216,7 @@ public class WorldImporter { biomes, (bx, by, bz, state) -> { int block = 0; - int sky = 15;//since sky is inverted + int sky = 0; if (blockLight != null) { block = blockLight.get(bx, by, bz); } diff --git a/src/main/java/me/cortex/zenith/client/mixin/sodium/MixinSodiumWorldRender.java b/src/main/java/me/cortex/zenith/client/mixin/sodium/MixinSodiumWorldRender.java index be7ae1e8..503371cb 100644 --- a/src/main/java/me/cortex/zenith/client/mixin/sodium/MixinSodiumWorldRender.java +++ b/src/main/java/me/cortex/zenith/client/mixin/sodium/MixinSodiumWorldRender.java @@ -14,6 +14,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class MixinSodiumWorldRender { @Inject(method = "drawChunkLayer", at = @At("HEAD"), cancellable = true) private void cancelRender(RenderLayer renderLayer, MatrixStack matrixStack, double x, double y, double z, CallbackInfo ci) { - ci.cancel(); + //ci.cancel(); } } diff --git a/src/main/resources/assets/zenith/shaders/lod/gl46/cull/raster.vert b/src/main/resources/assets/zenith/shaders/lod/gl46/cull/raster.vert index 42c6a5e7..d0e62e03 100644 --- a/src/main/resources/assets/zenith/shaders/lod/gl46/cull/raster.vert +++ b/src/main/resources/assets/zenith/shaders/lod/gl46/cull/raster.vert @@ -21,7 +21,7 @@ void main() { ivec3 pos = (((ipos<>2)&1, (gl_VertexID>>1)&1)*(size+1))*(1<>2)&1, (gl_VertexID>>1)&1)*(size+2))*(1<