Skip to content

Commit 8004e0e

Browse files
committed
swap outline renderers to transform the baked quads directly
1 parent 7e605b8 commit 8004e0e

File tree

4 files changed

+17
-66
lines changed

4 files changed

+17
-66
lines changed

src/main/java/mekanism/client/render/MekanismRenderer.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,7 @@ public static void onStitch(TextureAtlasStitchedEvent event) {
308308
RenderDimensionalStabilizer.resetCachedVisuals();
309309
RenderFluidTank.resetCachedModels();
310310
RenderNutritionalLiquifier.resetCachedModels();
311-
RenderPigmentMixer.resetCached();
312311
RenderMechanicalPipe.onStitch();
313-
RenderSeismicVibrator.resetCached();
314312
RenderTickHandler.resetCached();
315313
RenderTeleporter.resetCachedModels();
316314

src/main/java/mekanism/client/render/RenderTickHandler.java

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import mekanism.client.render.armor.ISpecialGear;
2020
import mekanism.client.render.armor.MekaSuitArmor;
2121
import mekanism.client.render.hud.RadiationOverlay;
22-
import mekanism.client.render.lib.Quad;
23-
import mekanism.client.render.lib.QuadUtils;
2422
import mekanism.client.render.lib.Vertex;
2523
import mekanism.client.render.lib.effect.BoltRenderer;
2624
import mekanism.client.render.tileentity.IWireFrameRenderer;
@@ -56,6 +54,7 @@
5654
import net.minecraft.client.renderer.MultiBufferSource;
5755
import net.minecraft.client.renderer.RenderType;
5856
import net.minecraft.client.renderer.Sheets;
57+
import net.minecraft.client.renderer.block.model.BakedQuad;
5958
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
6059
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
6160
import net.minecraft.client.renderer.texture.OverlayTexture;
@@ -480,54 +479,19 @@ public void onBlockHover(RenderHighlightEvent.Block event) {
480479
}
481480

482481
private void renderQuadsWireFrame(BlockState state, VertexConsumer buffer, PoseStack matrix, RandomSource rand, int red, int green, int blue, int alpha) {
483-
List<Vertex[]> vertices = cachedWireFrames.get(state);
484-
if (vertices == null) {
485-
BakedModel bakedModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(state);
486-
//TODO: Eventually we may want to add support for Model data and maybe render type
487-
ModelData modelData = ModelData.EMPTY;
488-
vertices = new ArrayList<>();
489-
for (Direction direction : EnumUtils.DIRECTIONS) {
490-
for (Quad quad : QuadUtils.unpack(bakedModel.getQuads(state, direction, rand, modelData, null))) {
491-
vertices.add(quad.getVertices());
492-
}
493-
}
494-
for (Quad quad : QuadUtils.unpack(bakedModel.getQuads(state, null, rand, modelData, null))) {
495-
vertices.add(quad.getVertices());
482+
//TODO: Eventually we may want to add support for Model data and maybe render type
483+
ModelData modelData = ModelData.EMPTY;
484+
BakedModel bakedModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(state);
485+
for (Direction direction : EnumUtils.DIRECTIONS) {
486+
for (BakedQuad quad : bakedModel.getQuads(state, direction, rand, modelData, null)) {
487+
buffer.putBulkData(matrix.last(), quad, red, green, blue, alpha, 0, OverlayTexture.NO_OVERLAY, false);
496488
}
497-
cachedWireFrames.put(state, vertices);
498489
}
499-
renderVertexWireFrame(vertices, buffer, matrix.last().pose(), red, green, blue, alpha);
500-
}
501-
502-
public static void renderVertexWireFrame(List<Vertex[]> allVertices, VertexConsumer buffer, Matrix4f matrix, int red, int green, int blue, int alpha) {
503-
for (Vertex[] vertices : allVertices) {
504-
Vector4f vertex = getVertex(matrix, vertices[0]);
505-
Vector3f normal = vertices[0].getNormal();
506-
Vector4f vertex2 = getVertex(matrix, vertices[1]);
507-
Vector3f normal2 = vertices[1].getNormal();
508-
Vector4f vertex3 = getVertex(matrix, vertices[2]);
509-
Vector3f normal3 = vertices[2].getNormal();
510-
Vector4f vertex4 = getVertex(matrix, vertices[3]);
511-
Vector3f normal4 = vertices[3].getNormal();
512-
buffer.vertex(vertex.x(), vertex.y(), vertex.z()).color(red, green, blue, alpha).normal(normal.x(), normal.y(), normal.z()).endVertex();
513-
buffer.vertex(vertex2.x(), vertex2.y(), vertex2.z()).color(red, green, blue, alpha).normal(normal2.x(), normal2.y(), normal2.z()).endVertex();
514-
515-
buffer.vertex(vertex3.x(), vertex3.y(), vertex3.z()).color(red, green, blue, alpha).normal(normal3.x(), normal3.y(), normal3.z()).endVertex();
516-
buffer.vertex(vertex4.x(), vertex4.y(), vertex4.z()).color(red, green, blue, alpha).normal(normal4.x(), normal4.y(), normal4.z()).endVertex();
517-
518-
buffer.vertex(vertex2.x(), vertex2.y(), vertex2.z()).color(red, green, blue, alpha).normal(normal2.x(), normal2.y(), normal2.z()).endVertex();
519-
buffer.vertex(vertex3.x(), vertex3.y(), vertex3.z()).color(red, green, blue, alpha).normal(normal3.x(), normal3.y(), normal3.z()).endVertex();
520-
521-
buffer.vertex(vertex.x(), vertex.y(), vertex.z()).color(red, green, blue, alpha).normal(normal.x(), normal.y(), normal.z()).endVertex();
522-
buffer.vertex(vertex4.x(), vertex4.y(), vertex4.z()).color(red, green, blue, alpha).normal(normal4.x(), normal4.y(), normal4.z()).endVertex();
490+
for (BakedQuad quad : bakedModel.getQuads(state, null, rand, modelData, null)) {
491+
buffer.putBulkData(matrix.last(), quad, red, green, blue, alpha, 0, OverlayTexture.NO_OVERLAY, false);
523492
}
524493
}
525494

526-
private static Vector4f getVertex(Matrix4f matrix4f, Vertex vertex) {
527-
Vector4f vector4f = new Vector4f((float) vertex.getPos().x(), (float) vertex.getPos().y(), (float) vertex.getPos().z(), 1);
528-
return vector4f.mul(matrix4f);
529-
}
530-
531495
private void renderJetpackSmoke(Level world, Vec3 pos, Vec3 motion) {
532496
world.addParticle(MekanismParticleTypes.JETPACK_FLAME.get(), pos.x, pos.y, pos.z, motion.x, motion.y, motion.z);
533497
world.addParticle(MekanismParticleTypes.JETPACK_SMOKE.get(), pos.x, pos.y, pos.z, motion.x, motion.y, motion.z);

src/main/java/mekanism/client/render/tileentity/RenderPigmentMixer.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import net.minecraft.client.renderer.Sheets;
1818
import net.minecraft.client.renderer.block.model.BakedQuad;
1919
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
20+
import net.minecraft.client.renderer.texture.OverlayTexture;
2021
import net.minecraft.util.profiling.ProfilerFiller;
2122
import net.minecraft.world.level.block.entity.BlockEntity;
2223
import net.minecraft.world.level.block.state.BlockState;
@@ -26,13 +27,8 @@
2627
@NothingNullByDefault
2728
public class RenderPigmentMixer extends MekanismTileEntityRenderer<TileEntityPigmentMixer> implements IWireFrameRenderer {
2829

29-
private static final List<Vertex[]> vertices = new ArrayList<>();
3030
private static final float SHAFT_SPEED = 5F;
3131

32-
public static void resetCached() {
33-
vertices.clear();
34-
}
35-
3632
public RenderPigmentMixer(BlockEntityRendererProvider.Context context) {
3733
super(context);
3834
}
@@ -73,11 +69,10 @@ public boolean isCombined() {
7369
@Override
7470
public void renderWireFrame(BlockEntity tile, float partialTick, PoseStack matrix, VertexConsumer buffer, int red, int green, int blue, int alpha) {
7571
if (tile instanceof TileEntityPigmentMixer mixer) {
76-
if (vertices.isEmpty()) {
77-
MekanismModelCache.INSTANCE.PIGMENT_MIXER_SHAFT.collectQuadVertices(vertices, tile.getLevel().random);
78-
}
7972
setupRenderer(mixer, partialTick, matrix);
80-
RenderTickHandler.renderVertexWireFrame(vertices, buffer, matrix.last().pose(), red, green, blue, alpha);
73+
for (BakedQuad quad : MekanismModelCache.INSTANCE.PIGMENT_MIXER_SHAFT.getQuads(tile.getLevel().random)) {
74+
buffer.putBulkData(matrix.last(), quad, red, green, blue, alpha, 0, OverlayTexture.NO_OVERLAY, false);
75+
}
8176
matrix.popPose();
8277
}
8378
}

src/main/java/mekanism/client/render/tileentity/RenderSeismicVibrator.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.minecraft.client.renderer.Sheets;
1616
import net.minecraft.client.renderer.block.model.BakedQuad;
1717
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
18+
import net.minecraft.client.renderer.texture.OverlayTexture;
1819
import net.minecraft.core.BlockPos;
1920
import net.minecraft.util.profiling.ProfilerFiller;
2021
import net.minecraft.world.level.block.entity.BlockEntity;
@@ -23,12 +24,6 @@
2324
@NothingNullByDefault
2425
public class RenderSeismicVibrator extends MekanismTileEntityRenderer<TileEntitySeismicVibrator> implements IWireFrameRenderer {
2526

26-
private static final List<Vertex[]> vertices = new ArrayList<>();
27-
28-
public static void resetCached() {
29-
vertices.clear();
30-
}
31-
3227
public RenderSeismicVibrator(BlockEntityRendererProvider.Context context) {
3328
super(context);
3429
}
@@ -58,11 +53,10 @@ public boolean isCombined() {
5853
@Override
5954
public void renderWireFrame(BlockEntity tile, float partialTick, PoseStack matrix, VertexConsumer buffer, int red, int green, int blue, int alpha) {
6055
if (tile instanceof TileEntitySeismicVibrator vibrator) {
61-
if (vertices.isEmpty()) {
62-
MekanismModelCache.INSTANCE.VIBRATOR_SHAFT.collectQuadVertices(vertices, tile.getLevel().random);
63-
}
6456
setupRenderer(vibrator, partialTick, matrix);
65-
RenderTickHandler.renderVertexWireFrame(vertices, buffer, matrix.last().pose(), red, green, blue, alpha);
57+
for (BakedQuad quad : MekanismModelCache.INSTANCE.VIBRATOR_SHAFT.getQuads(tile.getLevel().random)) {
58+
buffer.putBulkData(matrix.last(), quad, red, green, blue, alpha, 0, OverlayTexture.NO_OVERLAY, false);
59+
}
6660
matrix.popPose();
6761
}
6862
}

0 commit comments

Comments
 (0)