From b93faa77b77e1ba03afec3747a6ea627c22b77e9 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 8 Oct 2022 00:57:18 +0700 Subject: [PATCH] coloredRectRenderType --- .../mc/otm/client/render/RenderHelper.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/RenderHelper.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/RenderHelper.kt index 180a95c3d..65e926319 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/RenderHelper.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/RenderHelper.kt @@ -5,6 +5,8 @@ import com.mojang.blaze3d.systems.RenderSystem import com.mojang.blaze3d.vertex.* import com.mojang.math.Matrix4f import net.minecraft.client.renderer.GameRenderer +import net.minecraft.client.renderer.RenderStateShard +import net.minecraft.client.renderer.RenderType import net.minecraft.client.renderer.texture.TextureAtlasSprite import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11.GL_ALWAYS @@ -668,3 +670,41 @@ fun drawArc( BufferUploader.drawWithShader(builder.end()) } } + +val coloredRectRenderType by lazy { + val builder = RenderType.CompositeState.builder() + + builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionColorShader)) + builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", { + RenderSystem.enableBlend() + RenderSystem.defaultBlendFunc() + }, { + RenderSystem.disableBlend() + })) + + @Suppress("INACCESSIBLE_TYPE") + RenderType.create("colored_rect", + DefaultVertexFormat.POSITION_COLOR, + VertexFormat.Mode.QUADS, + 2048, + false, + false, + builder.createCompositeState(false)) as RenderType +} + +fun VertexConsumer.quad( + pose: PoseStack, + x: Float, + y: Float, + width: Float, + height: Float, + z: Float, + color: RGBAColor? = null, +) { + val intColor = color?.toARGB() ?: 0 + val matrix = pose.last().pose() + vertex(matrix, x, y + height, z).also { if (color != null) it.color(intColor) }.endVertex() + vertex(matrix, x + width, y + height, z).also { if (color != null) it.color(intColor) }.endVertex() + vertex(matrix, x + width, y, z).also { if (color != null) it.color(intColor) }.endVertex() + vertex(matrix, x, y, z).also { if (color != null) it.color(intColor) }.endVertex() +}