-
-
Save kineticneticat/1fefeef06a01c9010ebdafd15e7ae86d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
public void render(HoldoutEntity holdout, float yaw, float partialTick, PoseStack ps, MultiBufferSource multiBufferSource, int packedLight) { | |
Vec3 pos = holdout.position(); | |
RenderSystem.enableDepthTest(); | |
LaggingMaskRenderTarget.draw(holdout.level().getGameTime()); | |
if (!(multiBufferSource instanceof MultiBufferSource.BufferSource buffer)) return; | |
RenderSystem.enableDepthTest(); | |
LaggingMaskRenderTarget.use(() -> { | |
// Renderer3d.renderFilled(ps, Color.WHITE, new Vec3(0, 70, 0), new Vec3(2, 2, 2)); | |
int colour = 0xffffffff; | |
int black = 0; | |
float inner = 1f; | |
// float hitboxSize = 4f / 16f; | |
Vector3f innerSize = new Vector3f(inner, inner, inner); | |
ps.pushPose(); | |
ps.mulPose(Axis.YP.rotationDegrees(180f - yaw)); | |
// ps.mulPose(Axis.XP.rotationDegrees(180 - nix.getXRot())); | |
ps.mulPose(Axis.ZP.rotationDegrees(180f)); | |
int light = LevelRenderer.getLightColor(holdout.level(), BlockPos.containing(holdout.position())); | |
RenderSystem.enableDepthTest(); | |
drawCube(holdout, innerSize, new Vector3f(-innerSize.x / 2f, -innerSize.y / 2f, innerSize.z / 2f), ps, buffer, 16, 0x00_ffffff); | |
RenderSystem.enableDepthTest(); | |
ps.popPose(); | |
}); | |
RenderSystem.enableDepthTest(); | |
super.render(holdout, yaw, partialTick, ps, multiBufferSource, packedLight); | |
RenderSystem.enableDepthTest(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package dev.kineticcat.complexhex.client.render.entity.holdoutrenderingshenannigans;//package dev.kineticcat.complexhex.client.render.entity.holdoutrenderingshenannigans;//package dev.kineticcat.complexhex.client.render.entity.holdoutrenderingshenannigans; | |
import com.mojang.blaze3d.pipeline.RenderTarget; | |
import com.mojang.blaze3d.platform.GlStateManager; | |
import com.mojang.blaze3d.systems.RenderSystem; | |
import dev.kineticcat.complexhex.ComplexhexClient; | |
import net.minecraft.client.Minecraft; | |
import org.lwjgl.opengl.GL30C; | |
// this whole thing and associated files only exist due to the help of "0x150" on the fabric dc server lmao | |
public class LaggingMaskRenderTarget extends RenderTarget { | |
private static LaggingMaskRenderTarget instance; | |
private LaggingMaskRenderTarget(int width, int height) { | |
super(false); | |
RenderSystem.assertOnRenderThreadOrInit(); | |
this.resize(width, height, true); | |
this.setClearColor(0f, 0f, 0f, 0f); | |
} | |
private static LaggingMaskRenderTarget obtain() { | |
if (instance == null) { | |
instance = new LaggingMaskRenderTarget( | |
Minecraft.getInstance().getMainRenderTarget().width, | |
Minecraft.getInstance().getMainRenderTarget().height); | |
} | |
return instance; | |
} | |
public static void use(Runnable r) { | |
RenderTarget mainBuffer = Minecraft.getInstance().getMainRenderTarget(); | |
RenderSystem.assertOnRenderThreadOrInit(); | |
LaggingMaskRenderTarget buffer = obtain(); | |
if (buffer.width != mainBuffer.width || buffer.height != mainBuffer.height) { | |
buffer.resize(mainBuffer.width, mainBuffer.height, false); | |
} | |
GlStateManager._glBindFramebuffer(GL30C.GL_DRAW_FRAMEBUFFER, buffer.frameBufferId); | |
buffer.bindWrite(true); | |
r.run(); | |
buffer.unbindWrite(); | |
GlStateManager._glBindFramebuffer(GL30C.GL_DRAW_FRAMEBUFFER, mainBuffer.frameBufferId); | |
mainBuffer.bindWrite(false); | |
} | |
public static void draw(long time) { | |
RenderTarget mainBuffer = Minecraft.getInstance().getMainRenderTarget(); | |
LaggingMaskRenderTarget buffer = obtain(); | |
ComplexhexClient.mse.setSamplerUniform("Mask", buffer); | |
ComplexhexClient.mse.setUniformValue("time", (float) time); | |
ComplexhexClient.mse.render(Minecraft.getInstance().getDeltaFrameTime()); | |
buffer.clear(false); | |
mainBuffer.bindWrite(false); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment