fix some broken shapes and text rendering on background. Still doublesiding doesn't work properly until I got to renderpasses

This commit is contained in:
gnembon committed 2025-03-22 15:27:01 +01:00
1 parent 57df043efa
commit 41a7d8df46
1 file changed
+74 -25
@@ -526,7 +526,7 @@ public class ShapesRenderer
MultiBufferSource.BufferSource immediate = MultiBufferSource.immediate(new ByteBufferBuilder(RenderType.TRANSIENT_BUFFER_SIZE));
// text doesn't appear if backgroud is set
///script run draw_shape('label', 100, 'pos', [200, 100, 200], 'text', 'Hewwo World!', 'color', 0xffffffff, 'fill', 0x33333333)
textRenderer.drawInBatch(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.last().pose(), immediate, Font.DisplayMode.NORMAL, shape.textbck, 15728880);
textRenderer.drawInBatch(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.last().pose(), immediate, Font.DisplayMode.SEE_THROUGH, shape.textbck, 15728880);
immediate.endBatch();
matrices.popPose();
////RenderSystem.enableCull();
@@ -629,6 +629,7 @@ public class ShapesRenderer
public static class RenderedPolyface extends RenderedShape<ShapeDispatcher.Polyface>
{
// mode now can only be 4, 5, or 6
private static final VertexFormat.Mode[] faceIndices = new VertexFormat.Mode[]{
Mode.LINES, Mode.LINE_STRIP, Mode.DEBUG_LINES, Mode.DEBUG_LINE_STRIP, Mode.TRIANGLES, Mode.TRIANGLE_STRIP, Mode.TRIANGLE_FAN, Mode.QUADS};
@@ -637,10 +638,10 @@ public class ShapesRenderer
RenderType.debugLineStrip(1),
RenderType.debugLineStrip(1),
RenderType.debugLineStrip(1),
RenderType.debugLineStrip(1), // TODO wrong
RenderType.debugLineStrip(1), // TODO wrong
RenderType.debugLineStrip(1),
RenderType.debugQuads()
RenderType.debugTriangleFan(), // TODO wrong
RenderType.debugTriangleFan(), // TODO wrong
RenderType.debugTriangleFan(),
RenderType.debugQuads()
};
public RenderedPolyface(Minecraft client, ShapeDispatcher.ExpiringShape shape)
@@ -714,7 +715,7 @@ public class ShapesRenderer
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
if (shape.inneredges)
{
BufferBuilder builderr = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
BufferBuilder builderr = tesselator.begin(Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);
for (int i = 1; i < shape.vertexList.size() - 1; i++)
{
Vec3 vec = shape.vertexList.get(i);
@@ -722,7 +723,7 @@ public class ShapesRenderer
{
vec = shape.relativiseRender(client.level, vec, partialTick);
}
builderr.addVertex((float) (vec0.x() - cx), (float) (vec0.y() - cy), (float) (vec0.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builderr.addVertex((float) (vec.x() - cx), (float) (vec.y() - cy), (float) (vec.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builderr.addVertex((float) (vec0.x() - cx), (float) (vec0.y() - cy), (float) (vec0.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
}
@@ -776,9 +777,10 @@ public class ShapesRenderer
}
if (shape.mode == 4)
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
//
for (int i = 0; i < shape.vertexList.size(); i++)
{
BufferBuilder builder = tesselator.begin(Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);
Vec3 vecA = shape.vertexList.get(i);
if (shape.relative.get(i))
{
@@ -799,13 +801,15 @@ public class ShapesRenderer
builder.addVertex((float) (vecA.x() - cx), (float) (vecA.y() - cy), (float) (vecA.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builder.addVertex((float) (vecB.x() - cx), (float) (vecB.y() - cy), (float) (vecB.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builder.addVertex((float) (vecB.x() - cx), (float) (vecB.y() - cy), (float) (vecB.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
//builder.addVertex((float) (vecB.x() - cx), (float) (vecB.y() - cy), (float) (vecB.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builder.addVertex((float) (vecC.x() - cx), (float) (vecC.y() - cy), (float) (vecC.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builder.addVertex((float) (vecC.x() - cx), (float) (vecC.y() - cy), (float) (vecC.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
//builder.addVertex((float) (vecC.x() - cx), (float) (vecC.y() - cy), (float) (vecC.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
builder.addVertex((float) (vecA.x() - cx), (float) (vecA.y() - cy), (float) (vecA.z() - cz)).setColor(shape.r, shape.g, shape.b, shape.a);
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
//drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}
}
@@ -865,7 +869,7 @@ public class ShapesRenderer
drawCylinderWireframe(tesselator,
(float) (vc.x - cx - dir * renderEpsilon), (float) (vc.y - cy - dir * renderEpsilon), (float) (vc.z - cz - dir * renderEpsilon),
(float) (shape.radius + renderEpsilon), (float) (shape.height + 2 * dir * renderEpsilon), shape.axis,
shape.subdivisions, shape.radius == 0,
shape.subdivisions, shape.height == 0,
shape.r, shape.g, shape.b, shape.a);
}
@@ -891,7 +895,7 @@ public class ShapesRenderer
public static void drawLine(Tesselator tesselator, float x1, float y1, float z1, float x2, float y2, float z2, float red1, float grn1, float blu1, float alpha)
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
BufferBuilder builder = tesselator.begin(Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);
builder.addVertex(x1, y1, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z2).setColor(red1, grn1, blu1, alpha);
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
@@ -904,7 +908,8 @@ public class ShapesRenderer
boolean xthick, boolean ythick, boolean zthick,
float red1, float grn1, float blu1, float alpha, float red2, float grn2, float blu2)
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
BufferBuilder builder = tesselator.begin(Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);
/* old lines not using strip
if (xthick)
{
builder.addVertex(x1, y1, z1).setColor(red1, grn2, blu2, alpha);
@@ -946,6 +951,51 @@ public class ShapesRenderer
builder.addVertex(x2, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z2).setColor(red1, grn1, blu1, alpha);
}
*/
if (xthick)
{
builder.addVertex(x1, y1, z1).setColor(red1, grn2, blu2, alpha);
builder.addVertex(x2, y1, z1).setColor(red1, grn2, blu2, alpha);
builder.addVertex(x2, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y1, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y1, z2).setColor(red1, grn1, blu1, alpha);
}
if (ythick)
{
builder.addVertex(x1, y1, z1).setColor(red2, grn1, blu2, alpha);
builder.addVertex(x1, y2, z1).setColor(red2, grn1, blu2, alpha);
builder.addVertex(x2, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y1, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y1, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y1, z2).setColor(red1, grn1, blu1, alpha);
}
if (zthick)
{
builder.addVertex(x1, y1, z1).setColor(red2, grn2, blu1, alpha);
builder.addVertex(x1, y1, z2).setColor(red2, grn2, blu1, alpha);
builder.addVertex(x1, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x1, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z1).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y2, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y1, z2).setColor(red1, grn1, blu1, alpha);
builder.addVertex(x2, y1, z1).setColor(red1, grn1, blu1, alpha);
}
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
@@ -1062,7 +1112,7 @@ public class ShapesRenderer
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}
else
/* else
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
for (int i = 0; i <= num_steps180; i++)
@@ -1074,7 +1124,7 @@ public class ShapesRenderer
builder.addVertex(cx + x, cy, cz - z).setColor(red, grn, blu, alpha);
}
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}*/
}
else if (axis == Direction.Axis.X)
@@ -1111,19 +1161,19 @@ public class ShapesRenderer
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}
else
/*else
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
for (int i = 0; i <= num_steps180; i++)
BufferBuilder builder = tesselator.begin(Mode.DEBUG_LINE_STRIP, DefaultVertexFormat.POSITION_COLOR);
for (int i = 0; i <= num_steps360+1; i++)
{
float theta = step * i;
float y = r * Mth.cos(theta);
float z = r * Mth.sin(theta);
builder.addVertex(cx, cy - y, cz + z).setColor(red, grn, blu, alpha);
builder.addVertex(cx, cy + y, cz - z).setColor(red, grn, blu, alpha);
builder.addVertex(cx, cy + y, cz + z).setColor(red, grn, blu, alpha);
//builder.addVertex(cx, cy + y, cz - z).setColor(red, grn, blu, alpha);
}
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}*/
}
else if (axis == Direction.Axis.Z)
{
@@ -1158,7 +1208,7 @@ public class ShapesRenderer
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}
else
/*else
{
BufferBuilder builder = tesselator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR);
for (int i = 0; i <= num_steps180; i++)
@@ -1170,8 +1220,7 @@ public class ShapesRenderer
builder.addVertex(cx - x, cy + y, cz).setColor(red, grn, blu, alpha);
}
drawWithShader(builder.buildOrThrow(), RenderType.debugLineStrip(1));
}
}*/
}
}