Update #13 - Big FPS boost for most players

The hotbar, chat, and debug overlays in the game have been optimized and now only require a fraction as much CPU/GPU usage to be displayed on screen
This commit is contained in:
LAX1DUDE
2023-01-18 04:46:49 -08:00
parent bae705ef18
commit 48ba6f6176
20 changed files with 285 additions and 122 deletions

View File

@ -14,17 +14,20 @@
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+
> CHANGE 3 : 6 @ 3 : 6
> CHANGE 3 : 7 @ 3 : 6
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
> DELETE 2 @ 2 : 11
> DELETE 2 @ 2 : 3
> DELETE 1 @ 1 : 2
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.renderer.entity.RenderManager;
> CHANGE 32 : 33 @ 32 : 33
@ -34,9 +37,15 @@
> DELETE 27 @ 27 : 28
> CHANGE 95 : 96 @ 95 : 98
> CHANGE 16 : 17 @ 16 : 21
~ this.overlayDebug.renderDebugInfo(scaledresolution, partialTicks);
~ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
> DELETE 21 @ 21 : 30
> CHANGE 44 : 45 @ 44 : 47
~ this.overlayDebug.renderDebugInfo(scaledresolution);
> INSERT 87 : 90 @ 87
@ -44,7 +53,21 @@
+ j -= 10;
+ }
> DELETE 166 @ 166 : 170
> INSERT 19 : 30 @ 19
+ public void renderGameOverlayCrosshairs(int scaledResWidth, int scaledResHeight) {
+ if (this.showCrosshair()) {
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ this.mc.getTextureManager().bindTexture(icons);
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(775, 769, 1, 0);
+ GlStateManager.enableAlpha();
+ this.drawTexturedModalRect(scaledResWidth / 2 - 7, scaledResHeight / 2 - 7, 0, 0, 16, 16);
+ }
+ }
+
> DELETE 147 @ 147 : 151
> CHANGE 17 : 18 @ 17 : 18
@ -54,10 +77,80 @@
~ for (Score score1 : (List<Score>) arraylist1) {
> CHANGE 343 : 344 @ 343 : 344
> INSERT 64 : 65 @ 64
+ this.mc.getTextureManager().bindTexture(icons);
> CHANGE 224 : 225 @ 224 : 225
~ public void renderVignette(float parFloat1, int scaledWidth, int scaledHeight) {
> CHANGE 29 : 32 @ 29 : 33
~ worldrenderer.pos(0.0D, (double) scaledHeight, -90.0D).tex(0.0D, 1.0D).endVertex();
~ worldrenderer.pos((double) scaledWidth, scaledHeight, -90.0D).tex(1.0D, 1.0D).endVertex();
~ worldrenderer.pos((double) scaledWidth, 0.0D, -90.0D).tex(1.0D, 0.0D).endVertex();
> CHANGE 21 : 22 @ 21 : 22
~ EaglerTextureAtlasSprite textureatlassprite = this.mc.getBlockRendererDispatcher().getBlockModelShapes()
> DELETE 57 @ 57 : 58
> INSERT 60 : 113 @ 60
+ public void drawEaglerPlayerOverlay(int x, int y, float partialTicks) {
+ Entity e = mc.getRenderViewEntity();
+ if (e != null && e instanceof EntityLivingBase) {
+ EntityLivingBase ent = (EntityLivingBase) e;
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ GlStateManager.enableDepth();
+ GlStateManager.enableColorMaterial();
+ GlStateManager.pushMatrix();
+ GlStateManager.translate((float) x - 10, (float) y + 36, 50.0F);
+ GlStateManager.scale(-17.0F, 17.0F, 17.0F);
+ GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
+ float f = ent.renderYawOffset;
+ float f1 = ent.rotationYaw;
+ float f2 = ent.prevRotationYaw;
+ float f3 = ent.prevRotationYawHead;
+ float f4 = ent.rotationYawHead;
+ float f5 = ent.prevRenderYawOffset;
+ GlStateManager.rotate(115.0F, 0.0F, 1.0F, 0.0F);
+ RenderHelper.enableStandardItemLighting();
+ float f6 = ent.prevRenderYawOffset + (ent.renderYawOffset - ent.prevRenderYawOffset) * partialTicks;
+ ent.rotationYawHead -= f6;
+ ent.prevRotationYawHead -= f6;
+ ent.rotationYawHead *= 0.5f;
+ ent.prevRotationYawHead *= 0.5f;
+ ent.renderYawOffset = 0.0f;
+ ent.prevRenderYawOffset = 0.0f;
+ ent.prevRotationYaw = 0.0f;
+ ent.rotationYaw = 0.0f;
+ GlStateManager.rotate(-135.0F
+ - (ent.prevRotationYawHead + (ent.rotationYawHead - ent.prevRotationYawHead) * partialTicks) * 0.5F,
+ 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(ent.rotationPitch * 0.2f, 1.0F, 0.0F, 0.0F);
+ RenderManager rendermanager = Minecraft.getMinecraft().getRenderManager();
+ rendermanager.setPlayerViewY(180.0F);
+ rendermanager.setRenderShadow(false);
+ rendermanager.renderEntityWithPosYaw(ent, 0.0D, 0.0D, 0.0D, 0.0F, partialTicks);
+ rendermanager.setRenderShadow(true);
+ ent.renderYawOffset = f;
+ ent.rotationYaw = f1;
+ ent.prevRotationYaw = f2;
+ ent.prevRotationYawHead = f3;
+ ent.rotationYawHead = f4;
+ ent.prevRenderYawOffset = f5;
+ GlStateManager.popMatrix();
+ RenderHelper.disableStandardItemLighting();
+ GlStateManager.disableDepth();
+ GlStateManager.disableRescaleNormal();
+ GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
+ GlStateManager.disableTexture2D();
+ GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
+ }
+ }
+
> EOF

View File

@ -50,13 +50,12 @@
> DELETE 1 @ 1 : 3
> CHANGE 10 : 13 @ 10 : 11
> INSERT 11 : 13 @ 11
~ public void renderDebugInfo(ScaledResolution scaledResolutionIn, float partialTicks) {
~ int ww = scaledResolutionIn.getScaledWidth();
~ int hh = scaledResolutionIn.getScaledHeight();
+ int ww = scaledResolutionIn.getScaledWidth();
+ int hh = scaledResolutionIn.getScaledHeight();
> CHANGE 1 : 24 @ 1 : 7
> CHANGE 1 : 20 @ 1 : 7
~ if (this.mc.gameSettings.showDebugInfo) {
~ GlStateManager.pushMatrix();
@ -77,10 +76,6 @@
~ if (this.mc.gameSettings.hudCoords) {
~ drawXYZ(2, i);
~ }
~
~ if (this.mc.gameSettings.hudPlayer) {
~ drawPlayer(ww - 3, 3, partialTicks);
~ }
> INSERT 2 : 26 @ 2
@ -109,7 +104,7 @@
+ }
+
> INSERT 3 : 195 @ 3
> INSERT 3 : 142 @ 3
+ private void drawFPS(int x, int y) {
+ this.fontRenderer.drawStringWithShadow(this.mc.renderGlobal.getDebugInfoShort(), x, y, 0xFFFFFF);
@ -246,59 +241,6 @@
+ this.fontRenderer.drawStringWithShadow(lightString + " " + tempString, x, y - 8, 0xFFFFFF);
+ }
+
+ private void drawPlayer(int x, int y, float partialTicks) {
+ Entity e = mc.getRenderViewEntity();
+ if (e != null && e instanceof EntityLivingBase) {
+ EntityLivingBase ent = (EntityLivingBase) e;
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ GlStateManager.enableDepth();
+ GlStateManager.enableColorMaterial();
+ GlStateManager.pushMatrix();
+ GlStateManager.translate((float) x - 10, (float) y + 36, 50.0F);
+ GlStateManager.scale(-17.0F, 17.0F, 17.0F);
+ GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
+ float f = ent.renderYawOffset;
+ float f1 = ent.rotationYaw;
+ float f2 = ent.prevRotationYaw;
+ float f3 = ent.prevRotationYawHead;
+ float f4 = ent.rotationYawHead;
+ float f5 = ent.prevRenderYawOffset;
+ GlStateManager.rotate(115.0F, 0.0F, 1.0F, 0.0F);
+ RenderHelper.enableStandardItemLighting();
+ float f6 = ent.prevRenderYawOffset + (ent.renderYawOffset - ent.prevRenderYawOffset) * partialTicks;
+ ent.rotationYawHead -= f6;
+ ent.prevRotationYawHead -= f6;
+ ent.rotationYawHead *= 0.5f;
+ ent.prevRotationYawHead *= 0.5f;
+ ent.renderYawOffset = 0.0f;
+ ent.prevRenderYawOffset = 0.0f;
+ ent.prevRotationYaw = 0.0f;
+ ent.rotationYaw = 0.0f;
+ GlStateManager.rotate(-135.0F
+ - (ent.prevRotationYawHead + (ent.rotationYawHead - ent.prevRotationYawHead) * partialTicks) * 0.5F,
+ 0.0F, 1.0F, 0.0F);
+ GlStateManager.rotate(ent.rotationPitch * 0.2f, 1.0F, 0.0F, 0.0F);
+ RenderManager rendermanager = Minecraft.getMinecraft().getRenderManager();
+ rendermanager.setPlayerViewY(180.0F);
+ rendermanager.setRenderShadow(false);
+ rendermanager.renderEntityWithPosYaw(ent, 0.0D, 0.0D, 0.0D, 0.0F, partialTicks);
+ rendermanager.setRenderShadow(true);
+ ent.renderYawOffset = f;
+ ent.rotationYaw = f1;
+ ent.prevRotationYaw = f2;
+ ent.prevRotationYawHead = f3;
+ ent.rotationYawHead = f4;
+ ent.prevRenderYawOffset = f5;
+ GlStateManager.popMatrix();
+ RenderHelper.disableStandardItemLighting();
+ GlStateManager.disableDepth();
+ GlStateManager.disableRescaleNormal();
+ GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
+ GlStateManager.disableTexture2D();
+ GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
+ }
+ }
+
+ private void drawHideHUD(int x, int y, int fade) {
+ drawCenteredString(fontRenderer, I18n.format("options.hud.note"), x, y, 0xEECC00 | (fade << 24));
+ }

View File

@ -14,7 +14,7 @@
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~ import net.lax1dude.eaglercraft.v1_8.HString;
> INSERT 1 : 14 @ 1
> INSERT 1 : 15 @ 1
+
+ import com.google.common.base.Predicate;
@ -26,6 +26,7 @@
+ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EffectPipelineFXAA;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GameOverlayFramebuffer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
@ -42,9 +43,17 @@
~ private EaglercraftRandom random = new EaglercraftRandom();
> DELETE 43 @ 43 : 44
> DELETE 43 @ 43 : 61
> DELETE 30 @ 30 : 31
> INSERT 1 : 2 @ 1
+ private GameOverlayFramebuffer overlayFramebuffer;
> DELETE 2 @ 2 : 4
> CHANGE 8 : 9 @ 8 : 9
~ this.overlayFramebuffer = new GameOverlayFramebuffer();
> INSERT 1 : 10 @ 1
@ -64,13 +73,13 @@
> DELETE 3 @ 3 : 9
> DELETE 7 @ 7 : 22
> DELETE 3 @ 3 : 4
> DELETE 3 @ 3 : 18
> CHANGE 3 : 4 @ 3 : 18
> DELETE 3 @ 3 : 18
~ this.useShader = false;
> DELETE 3 @ 3 : 18
> DELETE 3 @ 3 : 14
@ -129,7 +138,47 @@
> DELETE 39 @ 39 : 52
> CHANGE 28 : 29 @ 28 : 29
> CHANGE 4 : 41 @ 4 : 5
~ long framebufferAge = this.overlayFramebuffer.getAge();
~ if (framebufferAge == -1l || framebufferAge > (Minecraft.getDebugFPS() < 25 ? 125l : 75l)) {
~ this.overlayFramebuffer.beginRender(mc.displayWidth, mc.displayHeight);
~ GlStateManager.colorMask(true, true, true, true);
~ GlStateManager.clearColor(0.0f, 0.0f, 0.0f, 0.0f);
~ GlStateManager.clear(16640);
~ this.mc.ingameGUI.renderGameOverlay(parFloat1);
~ this.overlayFramebuffer.endRender();
~ }
~ this.setupOverlayRendering();
~ GlStateManager.enableBlend();
~ if (Minecraft.isFancyGraphicsEnabled()) {
~ this.mc.ingameGUI.renderVignette(parFloat1, l, i1);
~ }
~ this.mc.ingameGUI.renderGameOverlayCrosshairs(l, i1);
~ GlStateManager.bindTexture(this.overlayFramebuffer.getTexture());
~ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
~ GlStateManager.enableBlend();
~ GlStateManager.blendFunc(770, 771);
~ GlStateManager.disableAlpha();
~ GlStateManager.disableDepth();
~ GlStateManager.depthMask(false);
~ Tessellator tessellator = Tessellator.getInstance();
~ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
~ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX);
~ worldrenderer.pos(0.0D, (double) i1, -90.0D).tex(0.0D, 0.0D).endVertex();
~ worldrenderer.pos((double) l, (double) i1, -90.0D).tex(1.0D, 0.0D).endVertex();
~ worldrenderer.pos((double) l, 0.0D, -90.0D).tex(1.0D, 1.0D).endVertex();
~ worldrenderer.pos(0.0D, 0.0D, -90.0D).tex(0.0D, 1.0D).endVertex();
~ tessellator.draw();
~ GlStateManager.depthMask(true);
~ GlStateManager.enableDepth();
~ GlStateManager.enableAlpha();
~ GlStateManager.disableBlend();
~ if (this.mc.gameSettings.hudPlayer) { // give the player model HUD good fps
~ this.mc.ingameGUI.drawEaglerPlayerOverlay(l - 3, 3, parFloat1);
~ }
> CHANGE 23 : 24 @ 23 : 24
~ return EntityRenderer.this.mc.currentScreen.getClass().getName();

View File

@ -77,7 +77,7 @@
+ public boolean hudFps = true;
+ public boolean hudCoords = true;
+ public boolean hudPlayer = true;
+ public boolean hudPlayer = false;
+ public boolean hudWorld = false;
+ public boolean hudStats = false;
+ public boolean hud24h = false;