Skip to content

Commit

Permalink
Performance improvements of some of the impl of MekanismRenderHelper
Browse files Browse the repository at this point in the history
  • Loading branch information
pupnewfster committed Jul 8, 2019
1 parent d882ba2 commit b828a61
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 32 deletions.
3 changes: 1 addition & 2 deletions src/main/java/mekanism/client/render/GLSMHelper.java
Expand Up @@ -51,8 +51,7 @@ public HELPER translateXZ(float x, float z) {
}

public HELPER translateXZ(double x, double z) {
GlStateManager.translate(x, 0, z);
return (HELPER) this;
return translate(x, 0, z);
}

public HELPER translateYZ(float y, float z) {
Expand Down
35 changes: 21 additions & 14 deletions src/main/java/mekanism/client/render/MekanismRenderHelper.java
@@ -1,7 +1,8 @@
package mekanism.client.render;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.EnumMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import mekanism.api.EnumColor;
Expand All @@ -18,14 +19,12 @@
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.opengl.GL11;

@SideOnly(Side.CLIENT)
public class MekanismRenderHelper extends GLSMHelper<MekanismRenderHelper> {

//TODO: Keep track of things so if they are toggled back manually we don't toggle them twice at the end
private Deque<Pair<KnownStates, Boolean>> changedStates = new ArrayDeque<>();
private Map<KnownStates, Boolean> changedStates = new EnumMap<>(KnownStates.class);
private boolean hasMatrix;
private boolean colorSet;
private boolean colorMasked;
Expand Down Expand Up @@ -58,9 +57,8 @@ public void cleanup() {
GlStateManager.color(1, 1, 1, 1);
colorSet = false;
}
while (!changedStates.isEmpty()) {
Pair<KnownStates, Boolean> stateInfo = changedStates.pop();
stateInfo.getKey().cleanup(stateInfo.getValue());
for (Entry<KnownStates, Boolean> entry : changedStates.entrySet()) {
entry.getKey().cleanup(entry.getValue());
}
if (hasMatrix) {
GlStateManager.popMatrix();
Expand All @@ -69,13 +67,21 @@ public void cleanup() {
}

private MekanismRenderHelper enable(KnownStates state) {
changedStates.push(Pair.of(state, true));
Boolean previous = changedStates.get(state);
if (previous != null && previous) {
return this;
}
changedStates.put(state, true);
state.enable();
return this;
}

private MekanismRenderHelper disable(KnownStates state) {
changedStates.push(Pair.of(state, false));
Boolean previous = changedStates.get(state);
if (previous != null && !previous) {
return this;
}
changedStates.put(state, false);
state.disable();
return this;
}
Expand Down Expand Up @@ -125,8 +131,8 @@ public MekanismRenderHelper enableGlow(@Nullable Fluid fluid) {

//Color
public MekanismRenderHelper colorMask(boolean red, boolean green, boolean blue, boolean alpha) {
//TODO: If all true then don't set colorMasked
colorMasked = true;
//If they are all being set to true, then we don't need the colorMasked boolean to be true
colorMasked = !red || !green || !blue || !alpha;
GlStateManager.colorMask(red, green, blue, alpha);
return this;
}
Expand All @@ -136,7 +142,8 @@ public MekanismRenderHelper colorMaskAlpha() {
}

public MekanismRenderHelper color(float red, float green, float blue, float alpha) {
colorSet = true;
//If the color is our default color then we do not need to have colorSet be called
colorSet = red != 1 || green != 1 || blue != 1 || alpha != 1;
GlStateManager.color(red, green, blue, alpha);
return this;
}
Expand All @@ -146,7 +153,7 @@ public MekanismRenderHelper colorAlpha(float alpha) {
}

public MekanismRenderHelper color3f(float red, float green, float blue) {
return color(red, green, blue, 1.0F);
return color(red, green, blue, 1);
}

public MekanismRenderHelper color3f(int color) {
Expand Down
16 changes: 0 additions & 16 deletions src/main/java/mekanism/client/render/MekanismRenderer.java
Expand Up @@ -23,7 +23,6 @@
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.GlStateManager.CullFace;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.ModelBakery;
Expand Down Expand Up @@ -218,21 +217,6 @@ public static TextureAtlasSprite getColorIcon(EnumColor color) {
return colors[color.ordinal()];
}

/**
* Blender .objs have a different handedness of coordinate system to MC, so faces are wound backwards.
*/
public static void cullFrontFace() {
//TODO: Can this method be removed?
GlStateManager.enableCull();
GlStateManager.cullFace(CullFace.FRONT);
}

public static void disableCullFace() {
//TODO: Can this method be removed?
GlStateManager.cullFace(CullFace.BACK);
GlStateManager.disableCull();
}

public static float getPartialTick() {
return Minecraft.getMinecraft().getRenderPartialTicks();
}
Expand Down

0 comments on commit b828a61

Please sign in to comment.