diff --git a/src/main/java/com/altnoir/mia/client/renderer/AbyssBrinkDimEffects.java b/src/main/java/com/altnoir/mia/client/renderer/AbyssBrinkDimEffects.java index fffe74fa..91412f69 100644 --- a/src/main/java/com/altnoir/mia/client/renderer/AbyssBrinkDimEffects.java +++ b/src/main/java/com/altnoir/mia/client/renderer/AbyssBrinkDimEffects.java @@ -36,9 +36,25 @@ public boolean isFoggyAt(int x, int y) { public boolean renderSky(ClientLevel level, int ticks, float partialTick, Matrix4f modelViewMatrix, Camera camera, Matrix4f projectionMatrix, boolean isFoggy, Runnable setupFog) { ResourceLocation sunTexture = MiaUtil.miaId("textures/skybox/abyss_brink.png"); + var oldProjectionMatrix = RenderSystem.getProjectionMatrix(); + var projection = new Matrix4f(oldProjectionMatrix); + + float m22 = projection.m22(); + float m32 = projection.m32(); + + float near = m32 / (m22 - 1.0F); + float far = 1.0E6F; + + projection.m22((far + near) / (near - far)); + projection.m32((2.0F * far * near) / (near - far)); + + RenderSystem.setProjectionMatrix(projection, VertexSorting.ORTHOGRAPHIC_Z); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderTexture(0, sunTexture); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); PoseStack poseStack = new PoseStack(); poseStack.mulPose(modelViewMatrix); @@ -59,6 +75,10 @@ public boolean renderSky(ClientLevel level, int ticks, float partialTick, Matrix bufferbuilder.addVertex(pose, -size - playerX, height, size - playerZ).setUv(0.0F, 1.0F); BufferUploader.drawWithShader(bufferbuilder.buildOrThrow()); + + RenderSystem.setProjectionMatrix(oldProjectionMatrix, VertexSorting.ORTHOGRAPHIC_Z); + RenderSystem.disableBlend(); + return true; } }