Updated EndSky-Rendering

This commit is contained in:
Frank Bauer 2021-06-30 13:24:01 +02:00
parent 3386f1c6b0
commit 2b71f7782a

View file

@ -2,7 +2,9 @@ package ru.betterend.mixin.client;
import java.util.Random; import java.util.Random;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.math.Matrix4f; import com.mojang.math.Matrix4f;
import net.minecraft.client.renderer.GameRenderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -113,6 +115,7 @@ public class WorldRendererMixin {
//RenderSystem.enableAlphaTest(); //RenderSystem.enableAlphaTest();
//RenderSystem.alphaFunc(516, 0.0F); //RenderSystem.alphaFunc(516, 0.0F);
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
} }
float blindA = 1F - BackgroundInfo.blindness; float blindA = 1F - BackgroundInfo.blindness;
@ -123,35 +126,31 @@ public class WorldRendererMixin {
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(new Quaternion(0, time, 0, false)); matrices.mulPose(new Quaternion(0, time, 0, false));
RenderSystem.setShaderTexture(0, HORIZON); RenderSystem.setShaderTexture(0, HORIZON);
//textureManager.bind(HORIZON); be_renderBuffer(matrices, matrix4f, horizon, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, 0.7F * blindA);
be_renderBuffer(matrices, horizon, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, 0.7F * blindA);
matrices.popPose(); matrices.popPose();
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(new Quaternion(0, -time, 0, false)); matrices.mulPose(new Quaternion(0, -time, 0, false));
//textureManager.bind(NEBULA_1);
RenderSystem.setShaderTexture(0, NEBULA_1); RenderSystem.setShaderTexture(0, NEBULA_1);
be_renderBuffer(matrices, nebulas1, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind02); be_renderBuffer(matrices, matrix4f, nebulas1, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind02);
matrices.popPose(); matrices.popPose();
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(new Quaternion(0, time2, 0, false)); matrices.mulPose(new Quaternion(0, time2, 0, false));
//textureManager.bind(NEBULA_2);
RenderSystem.setShaderTexture(0, NEBULA_2); RenderSystem.setShaderTexture(0, NEBULA_2);
be_renderBuffer(matrices, nebulas2, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind02); be_renderBuffer(matrices, matrix4f, nebulas2, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind02);
matrices.popPose(); matrices.popPose();
//textureManager.bind(STARS);
RenderSystem.setShaderTexture(0, STARS); RenderSystem.setShaderTexture(0, STARS);
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(axis3.rotation(time)); matrices.mulPose(axis3.rotation(time));
be_renderBuffer(matrices, stars3, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind06); be_renderBuffer(matrices, matrix4f ,stars3, DefaultVertexFormat.POSITION_TEX, 0.77F, 0.31F, 0.73F, blind06);
matrices.popPose(); matrices.popPose();
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(axis4.rotation(time2)); matrices.mulPose(axis4.rotation(time2));
be_renderBuffer(matrices, stars4, DefaultVertexFormat.POSITION_TEX, 1F, 1F, 1F, blind06); be_renderBuffer(matrices, matrix4f, stars4, DefaultVertexFormat.POSITION_TEX, 1F, 1F, 1F, blind06);
matrices.popPose(); matrices.popPose();
} }
@ -159,8 +158,7 @@ public class WorldRendererMixin {
if (a > 0) { if (a > 0) {
if (a > 1) a = 1; if (a > 1) a = 1;
RenderSystem.setShaderTexture(0, FOG); RenderSystem.setShaderTexture(0, FOG);
//textureManager.bind(FOG); be_renderBuffer(matrices, matrix4f, fog, DefaultVertexFormat.POSITION_TEX, BackgroundInfo.fogColorRed, BackgroundInfo.fogColorGreen, BackgroundInfo.fogColorBlue, a);
be_renderBuffer(matrices, fog, DefaultVertexFormat.POSITION_TEX, BackgroundInfo.fogColorRed, BackgroundInfo.fogColorGreen, BackgroundInfo.fogColorBlue, a);
} }
RenderSystem.disableTexture(); RenderSystem.disableTexture();
@ -168,29 +166,30 @@ public class WorldRendererMixin {
if (blindA > 0) { if (blindA > 0) {
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(axis1.rotation(time3)); matrices.mulPose(axis1.rotation(time3));
be_renderBuffer(matrices, stars1, DefaultVertexFormat.POSITION, 1, 1, 1, blind06); be_renderBuffer(matrices, matrix4f, stars1, DefaultVertexFormat.POSITION, 1, 1, 1, blind06);
matrices.popPose(); matrices.popPose();
matrices.pushPose(); matrices.pushPose();
matrices.mulPose(axis2.rotation(time2)); matrices.mulPose(axis2.rotation(time2));
be_renderBuffer(matrices, stars2, DefaultVertexFormat.POSITION, 0.95F, 0.64F, 0.93F, blind06); be_renderBuffer(matrices, matrix4f, stars2, DefaultVertexFormat.POSITION, 0.95F, 0.64F, 0.93F, blind06);
matrices.popPose(); matrices.popPose();
} }
RenderSystem.enableTexture(); RenderSystem.enableTexture();
RenderSystem.depthMask(true); RenderSystem.depthMask(true);
RenderSystem.defaultBlendFunc();
RenderSystem.disableBlend();
info.cancel(); info.cancel();
} }
} }
private void be_renderBuffer(PoseStack matrices, VertexBuffer buffer, VertexFormat format, float r, float g, float b, float a) { private void be_renderBuffer(PoseStack matrices, Matrix4f matrix4f, VertexBuffer buffer, VertexFormat format, float r, float g, float b, float a) {
RenderSystem.setShaderColor(r, g, b, a); RenderSystem.setShaderColor(r, g, b, a);
buffer.bind(); buffer.bind();
//format.setupBufferState(0L);
//buffer.draw(matrices.last().pose(), 7);
format.setupBufferState(); format.setupBufferState();
buffer.draw(); buffer.drawWithShader(matrices.last().pose(), matrix4f, GameRenderer.getPositionTexShader());
VertexBuffer.unbind(); VertexBuffer.unbind();
format.clearBufferState(); format.clearBufferState();
} }