Update #18 - Final release, added PBR shaders

This commit is contained in:
LAX1DUDE 2023-04-07 16:48:33 -07:00
parent af6d2ffc18
commit b2274a25b0
497 changed files with 28342 additions and 1014 deletions

View File

@ -5,9 +5,11 @@
lax1dude:
- Creator of Eaglercraft
- Wrote HW accelerated OpenGL 1.3 emulator
- Wrote all desktop emulation code
- Ported the Minecraft 1.8 client src to TeaVM
- Wrote HW accelerated OpenGL 1.3 emulator
- Wrote the default shader pack
- Made the integrated PBR resource pack
- Wrote all desktop emulation code
- Wrote EaglercraftXBungee
- Wrote the patch and build system

View File

@ -1 +1 @@
u17
u18

View File

@ -93,4 +93,11 @@
+ }
+
> INSERT 43 : 47 @ 43
+
+ public boolean eaglerShadersShouldRenderGlassHighlights() {
+ return false;
+ }
> EOF

View File

@ -8,10 +8,17 @@
> CHANGE 2 : 4 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> CHANGE 10 : 11 @ 10 : 11
~ public int quantityDropped(EaglercraftRandom var1) {
> INSERT 14 : 18 @ 14
+
+ public boolean eaglerShadersShouldRenderGlassHighlights() {
+ return DeferredStateManager.isRenderingGlassHighlights();
+ }
> EOF

View File

@ -8,7 +8,7 @@
> CHANGE 2 : 4 @ 2 : 6
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> CHANGE 104 : 105 @ 104 : 105
@ -18,7 +18,14 @@
~ public int quantityDropped(EaglercraftRandom var1) {
> CHANGE 64 : 65 @ 64 : 65
> CHANGE 61 : 65 @ 61 : 62
~ return this.blockMaterial == Material.water
~ ? (DeferredStateManager.isRenderingRealisticWater() ? EnumWorldBlockLayer.REALISTIC_WATER
~ : EnumWorldBlockLayer.TRANSLUCENT)
~ : EnumWorldBlockLayer.SOLID;
> CHANGE 2 : 3 @ 2 : 3
~ public void randomDisplayTick(World world, BlockPos blockpos, IBlockState iblockstate, EaglercraftRandom random) {

View File

@ -8,10 +8,17 @@
> CHANGE 3 : 5 @ 3 : 5
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> CHANGE 47 : 48 @ 47 : 48
~ public Item getItemDropped(IBlockState iblockstate, EaglercraftRandom random, int i) {
> INSERT 101 : 105 @ 101
+ public boolean eaglerShadersShouldRenderGlassHighlights() {
+ return this == Blocks.glass_pane && DeferredStateManager.isRenderingGlassHighlights();
+ }
+
> EOF

View File

@ -14,7 +14,9 @@
> DELETE 1 @ 1 : 2
> DELETE 1 @ 1 : 2
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.resources.I18n;
> DELETE 10 @ 10 : 11
@ -26,7 +28,7 @@
~ GlStateManager.ortho(0.0D, scaledresolution.getScaledWidth_double(),
~ scaledresolution.getScaledHeight_double(), 0.0D, 100.0D, 300.0D);
> INSERT 19 : 33 @ 19
> INSERT 19 : 37 @ 19
+ public void eaglerShow(String line1, String line2) {
+ if (!this.mc.running) {
@ -42,6 +44,10 @@
+ }
+ }
+
+ public void eaglerShowRefreshResources() {
+ eaglerShow(I18n.format("resourcePack.load.refreshing"), I18n.format("resourcePack.load.pleaseWait"));
+ }
+
> CHANGE 13 : 14 @ 13 : 20

View File

@ -5,7 +5,10 @@
# Version: 1.0
# Author: lax1dude
> DELETE 2 @ 2 : 17
> CHANGE 2 : 4 @ 2 : 17
~ import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL._wglBindFramebuffer;
~
> DELETE 2 @ 2 : 6
@ -17,7 +20,7 @@
> DELETE 1 @ 1 : 4
> CHANGE 1 : 32 @ 1 : 4
> CHANGE 1 : 41 @ 1 : 4
~
~ import net.lax1dude.eaglercraft.v1_8.internal.PlatformInput;
@ -44,6 +47,15 @@
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ImageData;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.BlockVertexIDs;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DebugFramebufferView;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShaderPackInfoReloadListener;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderSource;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.EmissiveItems;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.MetalsLUT;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.PBRTextureMapUtils;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.TemperaturesLUT;
~ import net.lax1dude.eaglercraft.v1_8.profile.EaglerProfile;
~ import net.lax1dude.eaglercraft.v1_8.profile.GuiScreenEditProfile;
~ import net.lax1dude.eaglercraft.v1_8.profile.SkinPreviewRenderer;
@ -85,7 +97,9 @@
> DELETE 1 @ 1 : 3
> DELETE 5 @ 5 : 6
> INSERT 6 : 7 @ 6
+ import net.minecraft.util.EnumChatFormatting;
> INSERT 11 : 12 @ 11
@ -119,10 +133,12 @@
~ private final List<FutureTask<?>> scheduledTasks = new LinkedList();
> INSERT 14 : 16 @ 14
> INSERT 14 : 18 @ 14
+ public int joinWorldTickCounter = 0;
+ private int dontPauseTimer = 0;
+ public int bungeeOutdatedMsgTimer = 0;
+ public String bungeeOutdatedMsgVer = null;
> CHANGE 3 : 4 @ 3 : 6
@ -199,7 +215,16 @@
~ this.standardGalacticFontRenderer = new EaglerFontRenderer(this.gameSettings,
> CHANGE 8 : 9 @ 8 : 9
> INSERT 5 : 11 @ 5
+ this.mcResourceManager.registerReloadListener(new ShaderPackInfoReloadListener());
+ this.mcResourceManager.registerReloadListener(PBRTextureMapUtils.blockMaterialConstants);
+ this.mcResourceManager.registerReloadListener(new TemperaturesLUT());
+ this.mcResourceManager.registerReloadListener(new MetalsLUT());
+ this.mcResourceManager.registerReloadListener(new EmissiveItems());
+ this.mcResourceManager.registerReloadListener(new BlockVertexIDs());
> CHANGE 3 : 4 @ 3 : 4
~ return HString.format(parString1, new Object[] { GameSettings
@ -207,7 +232,11 @@
~ GlStateManager.clearDepth(1.0f);
> INSERT 30 : 31 @ 30
> INSERT 10 : 11 @ 10
+ this.textureMapBlocks.setEnablePBREagler(gameSettings.shaders);
> INSERT 20 : 21 @ 20
+ SkinPreviewRenderer.initialize();
@ -276,7 +305,12 @@
~ logger.info("Caught error stitching, removing all assigned resourcepacks");
~ logger.info(runtimeexception);
> CHANGE 16 : 19 @ 16 : 28
> INSERT 9 : 11 @ 9
+ ShaderSource.clearCache();
+
> CHANGE 7 : 10 @ 7 : 19
~ private void updateDisplayMode() {
~ this.displayWidth = Display.getWidth();
@ -333,9 +367,16 @@
> DELETE 18 @ 18 : 26
> CHANGE 1 : 11 @ 1 : 5
> CHANGE 1 : 4 @ 1 : 5
~ if (!Display.contextLost()) {
~ this.mcProfiler.startSection("EaglercraftGPU_optimize");
~ EaglercraftGPU.optimize();
> CHANGE 1 : 11 @ 1 : 2
~ _wglBindFramebuffer(0x8D40, null);
~ GlStateManager.viewport(0, 0, this.displayWidth, this.displayHeight);
~ GlStateManager.clearColor(0.0f, 0.0f, 0.0f, 1.0f);
~ GlStateManager.pushMatrix();
~ GlStateManager.clear(16640);
@ -344,17 +385,16 @@
~ if (this.thePlayer != null && this.thePlayer.isEntityInsideOpaqueBlock()) {
~ this.gameSettings.thirdPersonView = 0;
~ }
~
> CHANGE 1 : 6 @ 1 : 2
> CHANGE 1 : 6 @ 1 : 5
~ this.mcProfiler.endSection();
~ if (!this.skipRenderWorld) {
~ this.mcProfiler.endStartSection("gameRenderer");
~ this.entityRenderer.func_181560_a(this.timer.renderPartialTicks, i);
~ this.mcProfiler.endSection();
~ }
> CHANGE 1 : 13 @ 1 : 5
> CHANGE 2 : 18 @ 2 : 7
~ this.mcProfiler.endSection();
~ if (this.gameSettings.showDebugInfo && this.gameSettings.showDebugProfilerChart
@ -368,9 +408,8 @@
~ } else {
~ this.mcProfiler.profilingEnabled = false;
~ this.prevFrameTime = System.nanoTime();
> CHANGE 2 : 4 @ 2 : 7
~ }
~
~ this.guiAchievement.updateAchievementWindow();
~ GlStateManager.popMatrix();
@ -434,7 +473,11 @@
+ RateLimitTracker.tick();
+
> INSERT 23 : 29 @ 23
> INSERT 15 : 16 @ 15
+ GlStateManager.viewport(0, 0, displayWidth, displayHeight); // to be safe
> INSERT 8 : 14 @ 8
+ if (this.currentScreen == null && this.dontPauseTimer <= 0) {
+ if (!Mouse.isMouseGrabbed()) {
@ -470,18 +513,64 @@
+ KeyBinding.setKeyBindState(gameSettings.keyBindSprint.getKeyCode(), Keyboard.getEventKeyState());
+ }
> CHANGE 26 : 27 @ 26 : 27
> CHANGE 19 : 27 @ 19 : 21
~ if (EaglerDeferredPipeline.instance != null) {
~ if (k == 62) {
~ DebugFramebufferView.toggleDebugView();
~ } else if (k == 0xCB || k == 0xC8) {
~ DebugFramebufferView.switchView(-1);
~ } else if (k == 0xCD || k == 0xD0) {
~ DebugFramebufferView.switchView(1);
~ }
> CHANGE 5 : 6 @ 5 : 6
~ if (k == 1 || (k > -1 && k == this.gameSettings.keyBindClose.getKeyCode())) {
> INSERT 41 : 42 @ 41
> INSERT 11 : 18 @ 11
+ if (k == 19 && Keyboard.isKeyDown(61)) { // F3+R
+ if (gameSettings.shaders) {
+ ShaderSource.clearCache();
+ this.renderGlobal.loadRenderers();
+ }
+ }
+
> INSERT 30 : 31 @ 30
+ GlStateManager.recompileShaders();
> INSERT 206 : 212 @ 206
> INSERT 206 : 237 @ 206
+ if (this.theWorld != null) {
+ ++joinWorldTickCounter;
+ if (bungeeOutdatedMsgTimer > 0) {
+ if (--bungeeOutdatedMsgTimer == 0) {
+ String pfx = EnumChatFormatting.GOLD + "[EagX]" + EnumChatFormatting.AQUA;
+ ingameGUI.getChatGUI()
+ .printChatMessage(new ChatComponentText(pfx + " ---------------------------------------"));
+ ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(
+ pfx + EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + " MESSAGE FROM LAX:"));
+ ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(pfx));
+ ingameGUI.getChatGUI()
+ .printChatMessage(new ChatComponentText(
+ pfx + " This server appears to be using version " + EnumChatFormatting.YELLOW
+ + bungeeOutdatedMsgVer + EnumChatFormatting.AQUA + " of"));
+ ingameGUI.getChatGUI().printChatMessage(
+ new ChatComponentText(pfx + " the EaglerXBungee plugin which has memory leaks"));
+ ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(pfx));
+ ingameGUI.getChatGUI()
+ .printChatMessage(new ChatComponentText(pfx + " If you are the admin update to "
+ + EnumChatFormatting.YELLOW + "1.0.6" + EnumChatFormatting.AQUA + " or newer"));
+ ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(pfx));
+ ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(pfx + EnumChatFormatting.GREEN
+ + " https://ftp.deev.is/EaglerXBungee-1.0.6-MemleakFix.jar"));
+ ingameGUI.getChatGUI()
+ .printChatMessage(new ChatComponentText(pfx + " ---------------------------------------"));
+ }
+ }
+ } else {
+ joinWorldTickCounter = 0;
+ }
@ -503,7 +592,14 @@
~ this.thePlayer = this.playerController.func_178892_a(this.theWorld, new StatFileWriter());
> CHANGE 165 : 166 @ 165 : 166
> CHANGE 34 : 38 @ 34 : 35
~ if (theMinecraft == null)
~ return false;
~ GameSettings g = theMinecraft.gameSettings;
~ return g.ambientOcclusion != 0 && !g.shadersAODisable;
> CHANGE 130 : 131 @ 130 : 131
~ return EagRuntime.getVersion();
@ -579,7 +675,7 @@
> DELETE 24 @ 24 : 32
> INSERT 7 : 15 @ 7
> INSERT 7 : 19 @ 7
+
+ public static int getGLMaximumTextureSize() {
@ -589,5 +685,9 @@
+ public boolean areKeysLocked() {
+ return PlatformInput.lockKeys;
+ }
+
+ public ModelManager getModelManager() {
+ return modelManager;
+ }
> EOF

View File

@ -11,4 +11,26 @@
> DELETE 3 @ 3 : 6
> INSERT 13 : 14 @ 13
+ public float fontScale = 1.0f;
> CHANGE 51 : 66 @ 51 : 53
~ if (fontScale == 1.0f) {
~ this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2,
~ this.yPosition + (this.height - 8) / 2, j);
~ } else {
~ float xScale = fontScale;
~ float yScale = 1.0f + (fontScale - 1.0f) * 0.7f;
~ float strWidth = fontrenderer.getStringWidth(displayString) / xScale;
~ GlStateManager.pushMatrix();
~ GlStateManager.translate(this.xPosition + this.width / 2,
~ this.yPosition + (this.height - 8 * yScale) / 2, 1.0f);
~ GlStateManager.scale(xScale, yScale, 1.0f);
~ GlStateManager.translate(-strWidth * 0.5f * xScale, 0.0f, 0.0f);
~ fontrenderer.drawStringWithShadow(displayString, 0, 0, j);
~ GlStateManager.popMatrix();
~ }
> EOF

View File

@ -37,9 +37,11 @@
> DELETE 27 @ 27 : 28
> CHANGE 16 : 17 @ 16 : 21
> CHANGE 16 : 19 @ 16 : 21
~ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
~ GlStateManager.enableDepth();
~ GlStateManager.disableLighting();
> DELETE 21 @ 21 : 22

View File

@ -20,10 +20,9 @@
~ protected void actionPerformed(GuiButton parGuiButton) {
> INSERT 56 : 58 @ 56
> INSERT 56 : 57 @ 56
+ this.mc.loadingScreen.eaglerShow(I18n.format("resourcePack.load.refreshing"),
+ I18n.format("resourcePack.load.pleaseWait"));
+ this.mc.loadingScreen.eaglerShowRefreshResources();
> INSERT 9 : 10 @ 9

View File

@ -254,19 +254,51 @@
+ s1 = EaglercraftVersion.mainMenuStringD;
+ this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2,
> CHANGE 1 : 9 @ 1 : 7
> CHANGE 1 : 10 @ 1 : 7
~
~ String lbl = "CREDITS.txt";
~ int w = fontRendererObj.getStringWidth(lbl) * 3 / 4;
~
~ if (i >= (this.width - w - 4) && i <= this.width && j >= 0 && j <= 9) {
~ drawRect((this.width - w - 4), 0, this.width, 10, 0x55000099);
~ } else {
~ drawRect((this.width - w - 4), 0, this.width, 10, 0x55200000);
~ GlStateManager.pushMatrix();
~ GlStateManager.scale(0.75f, 0.75f, 0.75f);
~ int www = 0;
~ int hhh = 0;
~ s1 = EaglercraftVersion.mainMenuStringG;
~ if (s1 != null) {
~ www = this.fontRendererObj.getStringWidth(s1);
~ hhh += 10;
> INSERT 2 : 8 @ 2
> INSERT 1 : 20 @ 1
+ s1 = EaglercraftVersion.mainMenuStringH;
+ if (s1 != null) {
+ www = Math.max(www, this.fontRendererObj.getStringWidth(s1));
+ hhh += 10;
+ }
+ if (www > 0) {
+ drawRect(0, 0, www + 6, hhh + 4, 0x55200000);
+ s1 = EaglercraftVersion.mainMenuStringG;
+ if (s1 != null) {
+ www = this.fontRendererObj.getStringWidth(s1);
+ this.drawString(this.fontRendererObj, s1, 3, 3, 0xFFFFFF99);
+ }
+ s1 = EaglercraftVersion.mainMenuStringH;
+ if (s1 != null) {
+ www = Math.max(www, this.fontRendererObj.getStringWidth(s1));
+ this.drawString(this.fontRendererObj, s1, 3, 13, 0xFFFFFF99);
+ }
+ }
+ GlStateManager.popMatrix();
> INSERT 1 : 16 @ 1
+ String lbl = "CREDITS.txt";
+ int w = fontRendererObj.getStringWidth(lbl) * 3 / 4;
+
+ if (i >= (this.width - w - 4) && i <= this.width && j >= 0 && j <= 9) {
+ drawRect((this.width - w - 4), 0, this.width, 10, 0x55000099);
+ } else {
+ drawRect((this.width - w - 4), 0, this.width, 10, 0x55200000);
+ }
+
+ GlStateManager.pushMatrix();
+ GlStateManager.translate((this.width - w - 2), 2.0f, 0.0f);
+ GlStateManager.scale(0.75f, 0.75f, 0.75f);

View File

@ -5,26 +5,25 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 4 @ 2 : 3
> CHANGE 2 : 7 @ 2 : 24
~ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.gui.GuiShaderConfig;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.gui.GuiShadersNotSupported;
~ import net.lax1dude.eaglercraft.v1_8.vfs.SYS;
> DELETE 4 @ 4 : 21
> DELETE 2 @ 2 : 3
> INSERT 12 : 14 @ 12
> INSERT 12 : 13 @ 12
+ private GuiButton notSoSuperSecret;
+ private GuiButton broadcastSettings;
> CHANGE 46 : 48 @ 46 : 48
> CHANGE 47 : 48 @ 47 : 59
~ this.buttonList.add(notSoSuperSecret = new GuiButton(8675309, this.width / 2 + 5, this.height / 6 + 48 - 6, 150,
~ 20, "Super Secret Settings...") {
~ I18n.format("shaders.gui.optionsButton")));
> CHANGE 13 : 16 @ 13 : 15
> CHANGE 2 : 5 @ 2 : 4
~ this.buttonList.add(broadcastSettings = new GuiButton(107, this.width / 2 + 5, this.height / 6 + 72 - 6, 150,
~ 20, I18n.format(EagRuntime.getRecText(), new Object[0])));
@ -53,9 +52,14 @@
~ protected void actionPerformed(GuiButton parGuiButton) {
> CHANGE 32 : 33 @ 32 : 33
> CHANGE 32 : 38 @ 32 : 33
~ notSoSuperSecret.displayString = "Nope!";
~ if (EaglerDeferredPipeline.isSupported()) {
~ this.mc.displayGuiScreen(new GuiShaderConfig(this));
~ } else {
~ this.mc.displayGuiScreen(new GuiShadersNotSupported(this,
~ I18n.format(EaglerDeferredPipeline.getReasonUnsupported())));
~ }
> DELETE 22 @ 22 : 27

View File

@ -107,7 +107,13 @@
~ EagRuntime.setClipboard(copyText);
> INSERT 176 : 177 @ 176
> CHANGE 68 : 71 @ 68 : 69
~ if (s1.length() > 0) {
~ this.fontRendererObj.drawStringWithShadow(s1, (float) j2, (float) k2, -1);
~ }
> INSERT 107 : 108 @ 107
+ String uri = clickevent.getValue();

View File

@ -15,7 +15,7 @@
~ GameSettings.Options.BLOCK_ALTERNATIVES, GameSettings.Options.ENTITY_SHADOWS, GameSettings.Options.FOG,
~ GameSettings.Options.FULLSCREEN, GameSettings.Options.HUD_FPS, GameSettings.Options.HUD_COORDS,
~ GameSettings.Options.HUD_PLAYER, GameSettings.Options.HUD_STATS, GameSettings.Options.HUD_WORLD,
~ GameSettings.Options.HUD_24H, GameSettings.Options.CHUNK_FIX };
~ GameSettings.Options.HUD_24H, GameSettings.Options.CHUNK_FIX, GameSettings.Options.FAST_MATH };
> CHANGE 11 : 13 @ 11 : 14

View File

@ -5,8 +5,23 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 3 @ 2 : 5
> CHANGE 2 : 6 @ 2 : 5
~ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> INSERT 154 : 155 @ 154
+ boolean flag = DeferredStateManager.isEnableShadowRender();
> CHANGE 18 : 19 @ 18 : 19
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 4 : 5 @ 4 : 5
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -7,13 +7,14 @@
> DELETE 2 @ 2 : 4
> CHANGE 3 : 6 @ 3 : 4
> CHANGE 3 : 7 @ 3 : 4
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~ import net.lax1dude.eaglercraft.v1_8.minecraft.AcceleratedEffectRenderer;
~ import net.lax1dude.eaglercraft.v1_8.minecraft.IAcceleratedParticleEngine;
~
> INSERT 1 : 7 @ 1
> INSERT 1 : 9 @ 1
+
+ import com.google.common.collect.Lists;
@ -21,6 +22,8 @@
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.GBufferAcceleratedEffectRenderer;
> DELETE 3 @ 3 : 36
@ -28,19 +31,48 @@
> DELETE 1 @ 1 : 2
> CHANGE 20 : 21 @ 20 : 21
> INSERT 16 : 18 @ 16
+ private static final ResourceLocation particleMaterialsTextures = new ResourceLocation(
+ "eagler:glsl/deferred/particles_s.png");
> CHANGE 4 : 5 @ 4 : 5
~ private EaglercraftRandom rand = new EaglercraftRandom();
> INSERT 2 : 4 @ 2
> INSERT 2 : 5 @ 2
+ private AcceleratedEffectRenderer acceleratedParticleRenderer = new AcceleratedEffectRenderer();
+ public static final AcceleratedEffectRenderer vanillaAcceleratedParticleRenderer = new AcceleratedEffectRenderer();
+ public IAcceleratedParticleEngine acceleratedParticleRenderer = vanillaAcceleratedParticleRenderer;
+
> CHANGE 170 : 172 @ 170 : 172
> CHANGE 157 : 167 @ 157 : 158
~ public boolean hasParticlesInAlphaLayer() {
~ for (int i = 0; i < 3; ++i) {
~ if (!this.fxLayers[i][0].isEmpty()) {
~ return true;
~ }
~ }
~ return false;
~ }
~
~ public void renderParticles(Entity entityIn, float partialTicks, int pass) {
> CHANGE 8 : 12 @ 8 : 10
~ if (!DeferredStateManager.isDeferredRenderer()) {
~ GlStateManager.enableBlend();
~ GlStateManager.blendFunc(770, 771);
~ }
> CHANGE 2 : 7 @ 2 : 4
~ for (int i = 0; i < 3; ++i) {
~ for (int j = 1; j >= 0; --j) {
~ if (pass != 2 && j != pass) {
~ continue;
~ }
> CHANGE 1 : 8 @ 1 : 8
@ -57,11 +89,24 @@
+ float texCoordWidth = 0.001f;
+ float texCoordHeight = 0.001f;
> INSERT 4 : 5 @ 4
> INSERT 3 : 4 @ 3
+ GBufferAcceleratedEffectRenderer.isMaterialNormalTexture = false;
> INSERT 1 : 7 @ 1
+ if (DeferredStateManager.isDeferredRenderer()) {
+ GlStateManager.setActiveTexture(33986);
+ this.renderer.bindTexture(particleMaterialsTextures);
+ GlStateManager.setActiveTexture(33984);
+ }
+ texCoordWidth = texCoordHeight = 1.0f / 256.0f;
> INSERT 3 : 6 @ 3
> INSERT 2 : 3 @ 2
+ GBufferAcceleratedEffectRenderer.isMaterialNormalTexture = true;
> INSERT 1 : 4 @ 1
+ TextureMap blockMap = (TextureMap) this.renderer.getTexture(TextureMap.locationBlocksTexture);
+ texCoordWidth = 1.0f / blockMap.getWidth();

View File

@ -12,11 +12,16 @@
> DELETE 3 @ 3 : 6
> INSERT 3 : 4 @ 3
> INSERT 3 : 5 @ 3
+ import net.minecraft.util.EnumWorldBlockLayer;
+ import net.minecraft.util.MathHelper;
> INSERT 90 : 103 @ 90
> INSERT 15 : 16 @ 15
+ this.particleAlpha = state.getBlock().getBlockLayer() == EnumWorldBlockLayer.TRANSLUCENT ? 0.999f : 1.0f;
> INSERT 75 : 88 @ 75
+ public boolean renderAccelerated(IAcceleratedParticleEngine accelerator, Entity var2, float f, float f1, float f2,
+ float f3, float f4, float f5) {

View File

@ -5,10 +5,11 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 5 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 1 @ 1 : 4
@ -18,8 +19,25 @@
> DELETE 6 @ 6 : 10
> CHANGE 30 : 31 @ 30 : 31
> CHANGE 30 : 32 @ 30 : 31
~ int l = DeferredStateManager.isInDeferredPass() ? ((var2.getBrightnessForRender(f) >> 16) & 0xFF) : 0;
~ worldrenderer.begin(7, DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP);
> CHANGE 4 : 5 @ 4 : 5
~ .lightmap(l, 240).normal(0.0F, 1.0F, 0.0F).endVertex();
> CHANGE 4 : 5 @ 4 : 5
~ .lightmap(l, 240).normal(0.0F, 1.0F, 0.0F).endVertex();
> CHANGE 4 : 5 @ 4 : 5
~ .lightmap(l, 240).normal(0.0F, 1.0F, 0.0F).endVertex();
> CHANGE 4 : 5 @ 4 : 5
~ .lightmap(l, 240).normal(0.0F, 1.0F, 0.0F).endVertex();
> EOF

View File

@ -5,29 +5,137 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 7 @ 2
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.BlockVertexIDs;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.minecraft.block.Block;
> DELETE 4 @ 4 : 6
> CHANGE 7 : 9 @ 7 : 9
> INSERT 1 : 2 @ 1
+ import net.minecraft.init.Blocks;
> CHANGE 6 : 8 @ 6 : 8
~ private EaglerTextureAtlasSprite[] atlasSpritesLava = new EaglerTextureAtlasSprite[2];
~ private EaglerTextureAtlasSprite[] atlasSpritesWater = new EaglerTextureAtlasSprite[2];
> CHANGE 17 : 19 @ 17 : 18
> INSERT 15 : 17 @ 15
~ EaglerTextureAtlasSprite[] atextureatlassprite = blockliquid.getMaterial() == Material.lava
~ ? this.atlasSpritesLava
+ BlockPos tmp = new BlockPos(0, 0, 0);
+ boolean deferred = DeferredStateManager.isDeferredRenderer();
> CHANGE 31 : 32 @ 31 : 32
> INSERT 1 : 3 @ 1
+ boolean lava = blockliquid.getMaterial() == Material.lava;
+ boolean realistic = !lava && DeferredStateManager.isRenderingRealisticWater();
> CHANGE 1 : 2 @ 1 : 3
~ EaglerTextureAtlasSprite[] atextureatlassprite = lava ? this.atlasSpritesLava : this.atlasSpritesWater;
> CHANGE 4 : 10 @ 4 : 6
~ boolean flag = blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.up(tmp), EnumFacing.UP);
~ if (realistic && blockStateIn.getValue(BlockLiquid.LEVEL).intValue() == 0) {
~ Block blockUp = blockAccess.getBlockState(blockPosIn.up(tmp)).getBlock();
~ flag &= !blockUp.isFullCube() || !blockUp.isBlockSolid(blockAccess, blockPosIn.up(tmp), EnumFacing.DOWN);
~ }
~ boolean flag1 = blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.down(tmp), EnumFacing.DOWN);
> CHANGE 1 : 5 @ 1 : 5
~ blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.north(tmp), EnumFacing.NORTH),
~ blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.south(tmp), EnumFacing.SOUTH),
~ blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.west(tmp), EnumFacing.WEST),
~ blockliquid.shouldSideBeRendered(blockAccess, blockPosIn.east(tmp), EnumFacing.EAST) };
> CHANGE 10 : 16 @ 10 : 16
~ float f8 = this.getFluidHeight(blockAccess, blockPosIn.south(tmp), material);
~ float f9 = this.getFluidHeight(blockAccess, blockPosIn.east(tmp).south(tmp), material);
~ float f10 = this.getFluidHeight(blockAccess, blockPosIn.east(tmp), material);
~ double d0 = (double) blockPosIn.x;
~ double d1 = (double) blockPosIn.y;
~ double d2 = (double) blockPosIn.z;
> CHANGE 3 : 4 @ 3 : 4
~ EaglerTextureAtlasSprite textureatlassprite = atextureatlassprite[0];
> CHANGE 105 : 106 @ 105 : 106
> CHANGE 17 : 22 @ 17 : 20
~ if (realistic || f12 < -999.0F) {
~ f13 = realistic ? (f12 < -999.0F ? 0.0f : MathHelper.sin(f12))
~ : textureatlassprite.getInterpolatedU(0.0D);
~ f17 = realistic ? (f12 < -999.0F ? 0.0f : -MathHelper.cos(f12))
~ : textureatlassprite.getInterpolatedV(0.0D);
> CHANGE 1 : 3 @ 1 : 3
~ f18 = realistic ? f17 : textureatlassprite.getInterpolatedV(16.0D);
~ f15 = realistic ? f13 : textureatlassprite.getInterpolatedU(16.0D);
> CHANGE 31 : 36 @ 31 : 32
~ if (deferred)
~ worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id
~ : BlockVertexIDs.builtin_water_flow_vertex_id);
~
~ if (blockliquid.func_176364_g(blockAccess, blockPosIn.up(tmp))) {
> INSERT 8 : 11 @ 8
+ if (deferred)
+ worldRendererIn.genNormals(true, f12 <= -999.0F ? BlockVertexIDs.builtin_water_still_vertex_id
+ : BlockVertexIDs.builtin_water_flow_vertex_id);
> CHANGE 4 : 9 @ 4 : 9
~ float f35 = realistic ? 0.0f : atextureatlassprite[0].getMinU();
~ float f36 = realistic ? 0.0f : atextureatlassprite[0].getMaxU();
~ float f37 = realistic ? 0.0f : atextureatlassprite[0].getMinV();
~ float f38 = realistic ? 0.0f : atextureatlassprite[0].getMaxV();
~ int l1 = blockliquid.getMixedBrightnessForBlock(blockAccess, blockPosIn.down(tmp));
> INSERT 10 : 12 @ 10
+ if (deferred)
+ worldRendererIn.putNormal(0.0f, -1.0f, 0.0f, BlockVertexIDs.builtin_water_still_vertex_id);
> CHANGE 23 : 24 @ 23 : 24
~ EaglerTextureAtlasSprite textureatlassprite1 = atextureatlassprite[1];
> CHANGE 38 : 45 @ 38 : 43
~ float f41 = realistic ? 1.0f : textureatlassprite1.getInterpolatedU(0.0D);
~ float f27 = realistic ? 1.0f : textureatlassprite1.getInterpolatedU(8.0D);
~ float f28 = realistic ? 0.0f
~ : textureatlassprite1.getInterpolatedV((double) ((1.0F - f39) * 16.0F * 0.5F));
~ float f29 = realistic ? 0.0f
~ : textureatlassprite1.getInterpolatedV((double) ((1.0F - f40) * 16.0F * 0.5F));
~ float f30 = realistic ? 0.0f : textureatlassprite1.getInterpolatedV(8.0D);
> CHANGE 15 : 29 @ 15 : 23
~ if (deferred)
~ worldRendererIn.putNormal(j1, 0.0f, k1, BlockVertexIDs.builtin_water_flow_vertex_id);
~ if (!realistic) {
~ worldRendererIn.pos(d3, d1 + 0.0D, d4).color(f32, f33, f34, 1.0F)
~ .tex((double) f41, (double) f30).lightmap(k, l).endVertex();
~ worldRendererIn.pos(d5, d1 + 0.0D, d6).color(f32, f33, f34, 1.0F)
~ .tex((double) f27, (double) f30).lightmap(k, l).endVertex();
~ worldRendererIn.pos(d5, d1 + (double) f40, d6).color(f32, f33, f34, 1.0F)
~ .tex((double) f27, (double) f29).lightmap(k, l).endVertex();
~ worldRendererIn.pos(d3, d1 + (double) f39, d4).color(f32, f33, f34, 1.0F)
~ .tex((double) f41, (double) f28).lightmap(k, l).endVertex();
~ if (deferred)
~ worldRendererIn.putNormal(-j1, 0.0f, -k1, BlockVertexIDs.builtin_water_flow_vertex_id);
~ }
> EOF

View File

@ -5,15 +5,25 @@
# Version: 1.0
# Author: lax1dude
> INSERT 4 : 7 @ 4
> INSERT 4 : 9 @ 4
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.VertexMarkerState;
> DELETE 3 @ 3 : 7
> INSERT 75 : 76 @ 75
> INSERT 72 : 73 @ 72
+ boolean isDeferred = DeferredStateManager.isDeferredRenderer();
> INSERT 1 : 2 @ 1
+ float[] afloat = isDeferred ? new float[EnumFacing.values().length * 2] : null;
> INSERT 2 : 3 @ 2
+ BlockPos.MutableBlockPos pointer = new BlockPos.MutableBlockPos();
@ -21,4 +31,316 @@
~ BlockPos blockpos = blockPosIn.offsetEvenFaster(enumfacing, pointer);
> CHANGE 3 : 4 @ 3 : 4
~ worldRendererIn, list, bitset, afloat);
> CHANGE 8 : 9 @ 8 : 9
~ worldRendererIn, list1, bitset, afloat);
> INSERT 9 : 10 @ 9
+ boolean isDeferred = DeferredStateManager.isDeferredRenderer();
> CHANGE 8 : 9 @ 8 : 9
~ if (!isDeferred && block$enumoffsettype == Block.EnumOffsetType.XYZ) {
> CHANGE 5 : 7 @ 5 : 6
~ int[] vertData = isDeferred ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData();
~ this.fillQuadBounds(blockIn, vertData, bakedquad.getFace(), quadBounds, boundsFlags, isDeferred ? 8 : 7);
> CHANGE 2 : 3 @ 2 : 3
~ worldRendererIn.addVertexData(vertData);
> CHANGE 36 : 37 @ 36 : 37
~ BitSet boundsFlags, int deferredStrideOverride) {
> CHANGE 8 : 12 @ 8 : 11
~ int j = i * deferredStrideOverride;
~ float f6 = Float.intBitsToFloat(vertexData[j]);
~ float f7 = Float.intBitsToFloat(vertexData[j + 1]);
~ float f8 = Float.intBitsToFloat(vertexData[j + 2]);
> INSERT 53 : 60 @ 53
+ private final BlockPos blockpos0 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos1 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos2 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos3 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos4 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos5 = new BlockPos(0, 0, 0);
+
> CHANGE 2 : 4 @ 2 : 3
~ List<BakedQuad> listQuadsIn, BitSet boundsFlags, float[] quadBounds) {
~ boolean isDeferred = DeferredStateManager.isDeferredRenderer();
> CHANGE 11 : 12 @ 11 : 12
~ if (!isDeferred && block$enumoffsettype == Block.EnumOffsetType.XYZ) {
> INSERT 5 : 10 @ 5
+ EnumFacing facingIn = bakedquad.getFace();
+ int[] vertData = isDeferred ? bakedquad.getVertexDataWithNormals() : bakedquad.getVertexData();
+ blockPosIn.offsetEvenFaster(facingIn, blockpos0);
+ this.fillQuadBounds(blockIn, vertData, facingIn, quadBounds, boundsFlags, isDeferred ? 8 : 7);
+ boolean boundsFlags0 = boundsFlags.get(0);
> CHANGE 1 : 2 @ 1 : 5
~ brightnessIn = boundsFlags0 ? blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos0)
> CHANGE 3 : 100 @ 3 : 5
~ worldRendererIn.addVertexData(vertData);
~
~ if (isDeferred) {
~ BlockModelRenderer.EnumNeighborInfo blockmodelrenderer$enumneighborinfo = BlockModelRenderer.EnumNeighborInfo
~ .getNeighbourInfo(facingIn);
~ BlockPos blockPosIn2 = boundsFlags0 ? blockpos0 : blockPosIn;
~ blockPosIn2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[0], blockpos1);
~ int i = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos1);
~ blockPosIn2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[1], blockpos2);
~ int j = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos2);
~ blockPosIn2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos3);
~ int k = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos3);
~ blockPosIn2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos4);
~ int l = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos4);
~
~ blockpos1.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos5);
~ int i1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
~
~ blockpos1.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos5);
~ int j1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
~
~ blockpos2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos5);
~ int k1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
~
~ blockpos2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos5);
~ int l1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
~
~ int[] b = new int[4];
~
~ boolean upIsOpaque = !blockAccessIn.getBlockState(blockpos0).getBlock().isOpaqueCube();
~ int i3;
~ if (boundsFlags0 || upIsOpaque) {
~ i3 = (ownBrightness && boundsFlags0) ? brightnessIn
~ : blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos0);
~ } else {
~ i3 = (ownBrightness && !boundsFlags0) ? brightnessIn
~ : blockIn.getMixedBrightnessForBlock(blockAccessIn, blockPosIn);
~ }
~
~ BlockModelRenderer.VertexTranslations blockmodelrenderer$vertextranslations = BlockModelRenderer.VertexTranslations
~ .getVertexTranslations(facingIn);
~ if (boundsFlags.get(1) && blockmodelrenderer$enumneighborinfo.field_178289_i) {
~ float f13 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[0].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[1].field_178229_m];
~ float f14 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[2].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[3].field_178229_m];
~ float f15 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[4].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[5].field_178229_m];
~ float f16 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[6].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178286_j[7].field_178229_m];
~ float f17 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[0].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[1].field_178229_m];
~ float f18 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[2].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[3].field_178229_m];
~ float f19 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[4].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[5].field_178229_m];
~ float f20 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[6].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178287_k[7].field_178229_m];
~ float f21 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[0].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[1].field_178229_m];
~ float f22 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[2].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[3].field_178229_m];
~ float f23 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[4].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[5].field_178229_m];
~ float f24 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[6].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178284_l[7].field_178229_m];
~ float f25 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[0].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[1].field_178229_m];
~ float f26 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[2].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[3].field_178229_m];
~ float f27 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[4].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[5].field_178229_m];
~ float f28 = quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[6].field_178229_m]
~ * quadBounds[blockmodelrenderer$enumneighborinfo.field_178285_m[7].field_178229_m];
~ int i2 = getAoBrightness(l, i, j1, i3);
~ int j2 = getAoBrightness(k, i, i1, i3);
~ int k2 = getAoBrightness(k, j, k1, i3);
~ int l2 = getAoBrightness(l, j, l1, i3);
~ b[blockmodelrenderer$vertextranslations.field_178191_g] = getVertexBrightness(i2, j2, k2, l2, f13,
~ f14, f15, f16);
~ b[blockmodelrenderer$vertextranslations.field_178200_h] = getVertexBrightness(i2, j2, k2, l2, f17,
~ f18, f19, f20);
~ b[blockmodelrenderer$vertextranslations.field_178201_i] = getVertexBrightness(i2, j2, k2, l2, f21,
~ f22, f23, f24);
~ b[blockmodelrenderer$vertextranslations.field_178198_j] = getVertexBrightness(i2, j2, k2, l2, f25,
~ f26, f27, f28);
~ } else {
~ b[blockmodelrenderer$vertextranslations.field_178191_g] = getAoBrightness(l, i, j1, i3);
~ b[blockmodelrenderer$vertextranslations.field_178200_h] = getAoBrightness(k, i, i1, i3);
~ b[blockmodelrenderer$vertextranslations.field_178201_i] = getAoBrightness(k, j, k1, i3);
~ b[blockmodelrenderer$vertextranslations.field_178198_j] = getAoBrightness(l, j, l1, i3);
~ }
~ worldRendererIn.putBrightness4(b[0], b[1], b[2], b[3]);
~ } else {
~ worldRendererIn.putBrightness4(brightnessIn, brightnessIn, brightnessIn, brightnessIn);
~ }
~
> INSERT 20 : 36 @ 20
+ private static int getAoBrightness(int parInt1, int parInt2, int parInt3, int parInt4) {
+ if (parInt1 == 0) {
+ parInt1 = parInt4;
+ }
+
+ if (parInt2 == 0) {
+ parInt2 = parInt4;
+ }
+
+ if (parInt3 == 0) {
+ parInt3 = parInt4;
+ }
+
+ return parInt1 + parInt2 + parInt3 + parInt4 >> 2 & 16711935;
+ }
+
> CHANGE 45 : 47 @ 45 : 46
~ worldrenderer.putNormal((float) vec3i.getX(), (float) vec3i.getY(), (float) vec3i.getZ(),
~ VertexMarkerState.markId);
> INSERT 9 : 16 @ 9
+ private final BlockPos blockpos0 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos1 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos2 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos3 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos4 = new BlockPos(0, 0, 0);
+ private final BlockPos blockpos5 = new BlockPos(0, 0, 0);
+
> CHANGE 2 : 3 @ 2 : 3
~ BlockPos blockpos = boundsFlags.get(0) ? blockPosIn.offsetEvenFaster(facingIn, blockpos0) : blockPosIn;
> CHANGE 2 : 3 @ 2 : 6
~ blockpos.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[0], blockpos1);
> DELETE 1 @ 1 : 4
> INSERT 1 : 6 @ 1
+ blockpos1.offsetEvenFaster(facingIn, blockpos5);
+ boolean flag = blockAccessIn.getBlockState(blockpos5).getBlock().isTranslucent();
+
+ blockpos.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[1], blockpos2);
+ int j = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos2);
> INSERT 1 : 6 @ 1
+ blockpos2.offsetEvenFaster(facingIn, blockpos5);
+ boolean flag1 = blockAccessIn.getBlockState(blockpos5).getBlock().isTranslucent();
+
+ blockpos.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos3);
+ int k = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos3);
> INSERT 1 : 6 @ 1
+ blockpos3.offsetEvenFaster(facingIn, blockpos5);
+ boolean flag2 = blockAccessIn.getBlockState(blockpos5).getBlock().isTranslucent();
+
+ blockpos.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos4);
+ int l = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos4);
> CHANGE 1 : 4 @ 1 : 5
~ blockpos4.offsetEvenFaster(facingIn, blockpos5);
~ boolean flag3 = blockAccessIn.getBlockState(blockpos5).getBlock().isTranslucent();
~
> CHANGE 6 : 7 @ 6 : 7
~ blockpos1.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos5);
> CHANGE 10 : 13 @ 10 : 13
~ blockpos1.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos5);
~ f5 = blockAccessIn.getBlockState(blockpos5).getBlock().getAmbientOcclusionLightValue();
~ j1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
> CHANGE 8 : 11 @ 8 : 11
~ blockpos2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[2], blockpos5);
~ f6 = blockAccessIn.getBlockState(blockpos5).getBlock().getAmbientOcclusionLightValue();
~ k1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
> CHANGE 8 : 11 @ 8 : 11
~ blockpos2.offsetEvenFaster(blockmodelrenderer$enumneighborinfo.field_178276_g[3], blockpos5);
~ f7 = blockAccessIn.getBlockState(blockpos5).getBlock().getAmbientOcclusionLightValue();
~ l1 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
> INSERT 2 : 3 @ 2
+ blockPosIn.offsetEvenFaster(facingIn, blockpos5);
> CHANGE 1 : 3 @ 1 : 4
~ if (boundsFlags.get(0) || !blockAccessIn.getBlockState(blockpos5).getBlock().isOpaqueCube()) {
~ i3 = blockIn.getMixedBrightnessForBlock(blockAccessIn, blockpos5);
> CHANGE 52 : 64 @ 52 : 64
~ int i2 = getAoBrightness(l, i, j1, i3);
~ int j2 = getAoBrightness(k, i, i1, i3);
~ int k2 = getAoBrightness(k, j, k1, i3);
~ int l2 = getAoBrightness(l, j, l1, i3);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178191_g] = getVertexBrightness(i2,
~ j2, k2, l2, f13, f14, f15, f16);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178200_h] = getVertexBrightness(i2,
~ j2, k2, l2, f17, f18, f19, f20);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178201_i] = getVertexBrightness(i2,
~ j2, k2, l2, f21, f22, f23, f24);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178198_j] = getVertexBrightness(i2,
~ j2, k2, l2, f25, f26, f27, f28);
> CHANGE 5 : 13 @ 5 : 13
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178191_g] = getAoBrightness(l, i, j1,
~ i3);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178200_h] = getAoBrightness(k, i, i1,
~ i3);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178201_i] = getAoBrightness(k, j, k1,
~ i3);
~ this.vertexBrightness[blockmodelrenderer$vertextranslations.field_178198_j] = getAoBrightness(l, j, l1,
~ i3);
> INSERT 7 : 8 @ 7
+ }
> CHANGE 1 : 8 @ 1 : 25
~ private static int getVertexBrightness(int parInt1, int parInt2, int parInt3, int parInt4, float parFloat1,
~ float parFloat2, float parFloat3, float parFloat4) {
~ int i = (int) ((float) (parInt1 >> 16 & 255) * parFloat1 + (float) (parInt2 >> 16 & 255) * parFloat2
~ + (float) (parInt3 >> 16 & 255) * parFloat3 + (float) (parInt4 >> 16 & 255) * parFloat4) & 255;
~ int j = (int) ((float) (parInt1 & 255) * parFloat1 + (float) (parInt2 & 255) * parFloat2
~ + (float) (parInt3 & 255) * parFloat3 + (float) (parInt4 & 255) * parFloat4) & 255;
~ return i << 16 | j;
> EOF

View File

@ -7,11 +7,33 @@
> DELETE 2 @ 2 : 3
> CHANGE 1 : 5 @ 1 : 2
> CHANGE 1 : 6 @ 1 : 2
~
~ import com.google.common.collect.Lists;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> INSERT 3 : 4 @ 3
+ import net.minecraft.util.MathHelper;
> CHANGE 16 : 17 @ 16 : 17
~ public void preRenderChunk(RenderChunk renderChunkIn, EnumWorldBlockLayer enumworldblocklayer) {
> CHANGE 1 : 11 @ 1 : 4
~ float posX = (float) ((double) blockpos.getX() - this.viewEntityX);
~ float posY = (float) ((double) blockpos.getY() - this.viewEntityY);
~ float posZ = (float) ((double) blockpos.getZ() - this.viewEntityZ);
~ GlStateManager.translate(posX, posY, posZ);
~ if (DeferredStateManager.isInForwardPass()) {
~ posX = (float) (blockpos.getX() - (MathHelper.floor_double(this.viewEntityX / 16.0) << 4)); // TODO
~ posY = (float) (blockpos.getY() - (MathHelper.floor_double(this.viewEntityY / 16.0) << 4));
~ posZ = (float) (blockpos.getZ() - (MathHelper.floor_double(this.viewEntityZ / 16.0) << 4));
~ DeferredStateManager.reportForwardRenderObjectPosition((int) posX, (int) posY, (int) posZ);
~ }
> EOF

View File

@ -9,4 +9,9 @@
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
> INSERT 10 : 12 @ 10
+ this.worldRenderers[EnumWorldBlockLayer.REALISTIC_WATER.ordinal()] = new WorldRenderer(262145);
+ this.worldRenderers[EnumWorldBlockLayer.GLASS_HIGHLIGHTS.ordinal()] = new WorldRenderer(131072);
> EOF

View File

@ -7,12 +7,14 @@
> DELETE 2 @ 2 : 7
> CHANGE 6 : 8 @ 6 : 7
> CHANGE 6 : 10 @ 6 : 7
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~ import net.lax1dude.eaglercraft.v1_8.HString;
~ import net.lax1dude.eaglercraft.v1_8.Keyboard;
~
> INSERT 2 : 16 @ 2
> INSERT 2 : 22 @ 2
+
+ import com.google.common.collect.Lists;
@ -25,7 +27,13 @@
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredConfig;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.SharedPipelineShaders;
+ import net.lax1dude.eaglercraft.v1_8.vector.Vector3f;
+ import net.lax1dude.eaglercraft.v1_8.vector.Vector4f;
@ -39,7 +47,15 @@
> DELETE 2 @ 2 : 5
> DELETE 29 @ 29 : 34
> INSERT 15 : 16 @ 15
+ import net.minecraft.util.ChatComponentText;
> INSERT 1 : 2 @ 1
+ import net.minecraft.util.EnumChatFormatting;
> DELETE 13 @ 13 : 18
> DELETE 20 @ 20 : 24
@ -108,21 +124,277 @@
~ EaglercraftRandom random = new EaglercraftRandom(10842L);
> DELETE 70 @ 70 : 79
> DELETE 67 @ 67 : 79
> DELETE 1 @ 1 : 7
> CHANGE 1 : 5 @ 1 : 5
> DELETE 28 @ 28 : 32
~ if (mc.gameSettings.shaders) {
~ if (!EaglerDeferredPipeline.isSupported()) {
~ mc.gameSettings.shaders = false;
~ }
> INSERT 2 : 6 @ 2
+ Blocks.leaves.setGraphicsLevel(mc.gameSettings.shaders || mc.gameSettings.fancyGraphics);
+ Blocks.leaves2.setGraphicsLevel(mc.gameSettings.shaders || mc.gameSettings.fancyGraphics);
+ this.renderDistanceChunks = this.mc.gameSettings.renderDistanceChunks;
+
> INSERT 19 : 76 @ 19
+
+ if (mc.gameSettings.shaders) {
+ EaglerDeferredConfig dfc = mc.gameSettings.deferredShaderConf;
+ dfc.updateConfig();
+ if (theWorld.provider.getHasNoSky()) {
+ dfc.is_rendering_shadowsSun_clamped = 0;
+ dfc.is_rendering_lightShafts = false;
+ } else {
+ int maxDist = renderDistanceChunks << 4;
+ int ss = dfc.is_rendering_shadowsSun;
+ while (ss > 1 && (1 << (ss + 3)) > maxDist) {
+ --ss;
+ }
+ dfc.is_rendering_shadowsSun_clamped = ss;
+ dfc.is_rendering_lightShafts = dfc.lightShafts;
+ }
+ boolean flag = false;
+ if (EaglerDeferredPipeline.instance == null) {
+ EaglerDeferredPipeline.instance = new EaglerDeferredPipeline(mc);
+ flag = true;
+ }
+ try {
+ SharedPipelineShaders.init();
+ EaglerDeferredPipeline.instance.rebuild(dfc);
+ EaglerDeferredPipeline.isSuspended = false;
+ } catch (Throwable ex) {
+ logger.error("Could not enable shaders!");
+ logger.error(ex);
+ EaglerDeferredPipeline.isSuspended = true;
+ }
+ if (flag && !EaglerDeferredPipeline.isSuspended) {
+ ChatComponentText shaderF4Msg = new ChatComponentText("[EaglercraftX]");
+ shaderF4Msg.getChatStyle().setColor(EnumChatFormatting.GOLD);
+ ChatComponentText shaderF4Msg2 = new ChatComponentText(
+ " Press " + Keyboard.getKeyName(mc.gameSettings.keyBindFunction.getKeyCode())
+ + "+4 to access the shader debug menu");
+ shaderF4Msg2.getChatStyle().setColor(EnumChatFormatting.AQUA);
+ shaderF4Msg.appendSibling(shaderF4Msg2);
+ mc.ingameGUI.getChatGUI().printChatMessage(shaderF4Msg);
+ }
+ }
+
+ mc.gameSettings.shadersAODisable = mc.gameSettings.shaders
+ && mc.gameSettings.deferredShaderConf.is_rendering_ssao;
+
+ if (!mc.gameSettings.shaders || EaglerDeferredPipeline.isSuspended) {
+ try {
+ if (EaglerDeferredPipeline.instance != null) {
+ EaglerDeferredPipeline.instance.destroy();
+ EaglerDeferredPipeline.instance = null;
+ }
+ } catch (Throwable ex) {
+ logger.error("Could not safely disable shaders!");
+ logger.error(ex);
+ }
+ SharedPipelineShaders.free();
+ }
> DELETE 9 @ 9 : 13
> DELETE 1 @ 1 : 2
> DELETE 41 @ 41 : 78
> INSERT 6 : 7 @ 6
> CHANGE 53 : 54 @ 53 : 54
+ boolean light = DynamicLightManager.isRenderingLights();
> CHANGE 27 : 36 @ 27 : 54
~ if (!DeferredStateManager.isDeferredRenderer()) {
~ for (int i = 0; i < this.theWorld.weatherEffects.size(); ++i) {
~ Entity entity1 = (Entity) this.theWorld.weatherEffects.get(i);
~ ++this.countEntitiesRendered;
~ if (entity1.isInRangeToRender3d(d0, d1, d2)) {
~ if (light) {
~ entity1.renderDynamicLightsEagler(partialTicks, true);
~ }
~ this.renderManager.renderEntitySimple(entity1, partialTicks);
> DELETE 2 @ 2 : 16
> INSERT 24 : 27 @ 24
+ if (light) {
+ entity2.renderDynamicLightsEagler(partialTicks, flag2);
+ }
> CHANGE 31 : 32 @ 31 : 32
~ for (TileEntity tileentity2 : (List<TileEntity>) list1) {
> CHANGE 52 : 53 @ 52 : 53
> INSERT 41 : 200 @ 41
+ public static interface EntityChunkCullAdapter {
+ boolean shouldCull(RenderChunk renderChunk);
+ }
+
+ public static interface EntityObjectCullAdapter {
+ boolean shouldCull(RenderChunk renderChunk, RenderManager renderManager, Entity entity);
+ }
+
+ public void renderShadowLODEntities(Entity renderViewEntity, float partialTicks,
+ EntityChunkCullAdapter entityChunkCull, EntityObjectCullAdapter entityObjectCull) { // TODO
+ if (renderEntitiesStartupCounter <= 0) {
+ theWorld.theProfiler.startSection("shadow_entity_prepare");
+
+ TileEntityRendererDispatcher.instance.cacheActiveRenderInfo(theWorld, mc.getTextureManager(),
+ mc.fontRendererObj, renderViewEntity, partialTicks);
+ renderManager.cacheActiveRenderInfo(theWorld, mc.fontRendererObj, renderViewEntity, mc.pointedEntity,
+ mc.gameSettings, partialTicks);
+
+ double d3 = renderViewEntity.lastTickPosX
+ + (renderViewEntity.posX - renderViewEntity.lastTickPosX) * (double) partialTicks;
+ double d4 = renderViewEntity.lastTickPosY
+ + (renderViewEntity.posY - renderViewEntity.lastTickPosY) * (double) partialTicks;
+ double d5 = renderViewEntity.lastTickPosZ
+ + (renderViewEntity.posZ - renderViewEntity.lastTickPosZ) * (double) partialTicks;
+ TileEntityRendererDispatcher.staticPlayerX = d3;
+ TileEntityRendererDispatcher.staticPlayerY = d4;
+ TileEntityRendererDispatcher.staticPlayerZ = d5;
+ renderManager.setRenderPosition(d3, d4, d5);
+
+ this.theWorld.theProfiler.endStartSection("shadow_entities");
+ for (RenderGlobal.ContainerLocalRenderInformation containerlocalrenderinformation : this.renderInfos) {
+ RenderChunk currentRenderChunk = containerlocalrenderinformation.renderChunk;
+
+ if (!entityChunkCull.shouldCull(currentRenderChunk)) {
+ Chunk chunk = this.theWorld
+ .getChunkFromBlockCoords(containerlocalrenderinformation.renderChunk.getPosition());
+ ClassInheritanceMultiMap<Entity> classinheritancemultimap = chunk
+ .getEntityLists()[containerlocalrenderinformation.renderChunk.getPosition().getY() / 16];
+ if (!classinheritancemultimap.isEmpty()) {
+ Iterator<Entity> iterator = classinheritancemultimap.iterator();
+ while (iterator.hasNext()) {
+ Entity entity2 = iterator.next();
+ if (!entityObjectCull.shouldCull(currentRenderChunk, renderManager, entity2)
+ || entity2.riddenByEntity == this.mc.thePlayer) {
+ if (entity2.posY < 0.0D || entity2.posY >= 256.0D
+ || this.theWorld.isBlockLoaded(new BlockPos(entity2))) {
+ ++this.countEntitiesRendered;
+ this.renderManager.renderEntitySimple(entity2, partialTicks);
+ mc.entityRenderer.disableLightmap();
+ GlStateManager.disableShaderBlendAdd();
+ GlStateManager.disableBlend();
+ GlStateManager.depthMask(true);
+ }
+ }
+
+ }
+
+ // TODO: why?
+ // if (!flag2 && entity2 instanceof EntityWitherSkull) {
+ // this.mc.getRenderManager().renderWitherSkull(entity2, partialTicks);
+ // }
+ }
+
+ List<TileEntity> tileEntities = currentRenderChunk.compiledChunk.getTileEntities();
+ for (int i = 0, l = tileEntities.size(); i < l; ++i) {
+ TileEntityRendererDispatcher.instance.renderTileEntity(tileEntities.get(i), partialTicks, -1);
+ mc.entityRenderer.disableLightmap();
+ GlStateManager.disableShaderBlendAdd();
+ GlStateManager.disableBlend();
+ GlStateManager.depthMask(true);
+ }
+ }
+ }
+
+ synchronized (this.field_181024_n) {
+ for (TileEntity tileentity : this.field_181024_n) {
+ TileEntityRendererDispatcher.instance.renderTileEntity(tileentity, partialTicks, -1);
+ mc.entityRenderer.disableLightmap();
+ GlStateManager.disableShaderBlendAdd();
+ GlStateManager.disableBlend();
+ GlStateManager.depthMask(true);
+ }
+ }
+ theWorld.theProfiler.endSection();
+ }
+ }
+
+ public void renderParaboloidTileEntities(Entity renderViewEntity, float partialTicks, int up) {
+ if (renderEntitiesStartupCounter <= 0) {
+ theWorld.theProfiler.startSection("paraboloid_entity_prepare");
+
+ TileEntityRendererDispatcher.instance.cacheActiveRenderInfo(theWorld, mc.getTextureManager(),
+ mc.fontRendererObj, renderViewEntity, partialTicks);
+ renderManager.cacheActiveRenderInfo(theWorld, mc.fontRendererObj, renderViewEntity, mc.pointedEntity,
+ mc.gameSettings, partialTicks);
+
+ double d3 = renderViewEntity.lastTickPosX
+ + (renderViewEntity.posX - renderViewEntity.lastTickPosX) * (double) partialTicks;
+ double d4 = renderViewEntity.lastTickPosY
+ + (renderViewEntity.posY - renderViewEntity.lastTickPosY) * (double) partialTicks;
+ double d5 = renderViewEntity.lastTickPosZ
+ + (renderViewEntity.posZ - renderViewEntity.lastTickPosZ) * (double) partialTicks;
+ TileEntityRendererDispatcher.staticPlayerX = d3;
+ TileEntityRendererDispatcher.staticPlayerY = d4;
+ TileEntityRendererDispatcher.staticPlayerZ = d5;
+ renderManager.setRenderPosition(d3, d4, d5);
+
+ double rad = 8.0;
+
+ int minX = (int) (d3 - rad);
+ int minY = (int) d4;
+ if (up == -1) {
+ minY -= rad;
+ }
+ int minZ = (int) (d5 - rad);
+
+ int maxX = (int) (d3 + rad);
+ int maxY = (int) d4;
+ if (up == 1) {
+ maxY += rad;
+ }
+ int maxZ = (int) (d5 + rad);
+
+ BlockPos tmp = new BlockPos(0, 0, 0);
+ minX = MathHelper.floor_double(minX / 16.0) * 16;
+ minY = MathHelper.floor_double(minY / 16.0) * 16;
+ minZ = MathHelper.floor_double(minZ / 16.0) * 16;
+ maxX = MathHelper.floor_double(maxX / 16.0) * 16;
+ maxY = MathHelper.floor_double(maxY / 16.0) * 16;
+ maxZ = MathHelper.floor_double(maxZ / 16.0) * 16;
+
+ this.theWorld.theProfiler.endStartSection("paraboloid_entities");
+ for (int cx = minX; cx <= maxX; cx += 16) {
+ for (int cz = minZ; cz <= maxZ; cz += 16) {
+ for (int cy = minY; cy <= maxY; cy += 16) {
+ tmp.x = cx;
+ tmp.y = cy;
+ tmp.z = cz;
+ RenderChunk ch = viewFrustum.getRenderChunk(tmp);
+ CompiledChunk cch;
+ if (ch != null && (cch = ch.compiledChunk) != null) {
+ List<TileEntity> tileEntities = cch.getTileEntities();
+ for (int i = 0, l = tileEntities.size(); i < l; ++i) {
+ mc.entityRenderer.enableLightmap();
+ TileEntityRendererDispatcher.instance.renderTileEntity(tileEntities.get(i),
+ partialTicks, -1);
+ GlStateManager.disableShaderBlendAdd();
+ GlStateManager.disableBlend();
+ GlStateManager.depthMask(true);
+ }
+ }
+ }
+ }
+ }
+ theWorld.theProfiler.endSection();
+ mc.entityRenderer.disableLightmap();
+ }
+ }
+
> CHANGE 11 : 12 @ 11 : 12
~ return HString.format("C: %d/%d %sD: %d, %s",
@ -156,11 +428,111 @@
+ ((ClippingHelperImpl) this.debugFixedClippingHelper).destroy();
> DELETE 94 @ 94 : 104
> INSERT 92 : 129 @ 92
> DELETE 1 @ 1 : 21
+ public static interface ChunkCullAdapter {
+ boolean shouldCull(RenderChunk chunk);
+ }
+
+ public int renderBlockLayerShadow(EnumWorldBlockLayer blockLayerIn, AxisAlignedBB boundingBox,
+ ChunkCullAdapter cullAdapter) {
+ int i = 0;
+ BlockPos tmp = new BlockPos(0, 0, 0);
+ int minXChunk = MathHelper.floor_double(boundingBox.minX / 16.0) * 16;
+ int minYChunk = MathHelper.floor_double(boundingBox.minY / 16.0) * 16;
+ int minZChunk = MathHelper.floor_double(boundingBox.minZ / 16.0) * 16;
+ int maxXChunk = MathHelper.floor_double(boundingBox.maxX / 16.0) * 16;
+ int maxYChunk = MathHelper.floor_double(boundingBox.maxY / 16.0) * 16;
+ int maxZChunk = MathHelper.floor_double(boundingBox.maxZ / 16.0) * 16;
+ for (int cx = minXChunk; cx <= maxXChunk; cx += 16) {
+ for (int cz = minZChunk; cz <= maxZChunk; cz += 16) {
+ for (int cy = minYChunk; cy <= maxYChunk; cy += 16) {
+ tmp.x = cx;
+ tmp.y = cy;
+ tmp.z = cz;
+ RenderChunk ch = viewFrustum.getRenderChunk(tmp);
+ CompiledChunk cch;
+ if (ch != null && (cch = ch.getCompiledChunk()) != null && !cch.isLayerEmpty(blockLayerIn)
+ && !cullAdapter.shouldCull(ch)) {
+ this.renderContainer.addRenderChunk(ch, blockLayerIn);
+ ++i;
+ }
+ }
+ }
+ }
+ if (i > 0) {
+ this.mc.mcProfiler.endStartSection("render_shadow_" + blockLayerIn);
+ this.renderContainer.renderChunkLayer(blockLayerIn);
+ }
+ return i;
+ }
+
> CHANGE 93 : 94 @ 93 : 103
> CHANGE 2 : 16 @ 2 : 10
~ this.renderContainer.renderChunkLayer(blockLayerIn);
~ this.mc.entityRenderer.disableLightmap();
~ }
~
~ public int renderParaboloidBlockLayer(EnumWorldBlockLayer blockLayerIn, double partialTicks, int up,
~ Entity entityIn) {
~ double rad = 8.0;
~
~ int minX = (int) (entityIn.posX - rad);
~ int minY = (int) entityIn.posY;
~ if (up == -1) {
~ minY -= rad * 0.75;
~ } else {
~ minY += 1.0;
> INSERT 1 : 2 @ 1
+ int minZ = (int) (entityIn.posZ - rad);
> CHANGE 1 : 31 @ 1 : 18
~ int maxX = (int) (entityIn.posX + rad);
~ int maxY = (int) entityIn.posY;
~ if (up == 1) {
~ maxY += rad;
~ } else {
~ maxY += 2.0;
~ }
~ int maxZ = (int) (entityIn.posZ + rad);
~
~ BlockPos tmp = new BlockPos(0, 0, 0);
~ minX = MathHelper.floor_double(minX / 16.0) * 16;
~ minY = MathHelper.floor_double(minY / 16.0) * 16;
~ minZ = MathHelper.floor_double(minZ / 16.0) * 16;
~ maxX = MathHelper.floor_double(maxX / 16.0) * 16;
~ maxY = MathHelper.floor_double(maxY / 16.0) * 16;
~ maxZ = MathHelper.floor_double(maxZ / 16.0) * 16;
~
~ int i = 0;
~ for (int cx = minX; cx <= maxX; cx += 16) {
~ for (int cz = minZ; cz <= maxZ; cz += 16) {
~ for (int cy = minY; cy <= maxY; cy += 16) {
~ tmp.x = cx;
~ tmp.y = cy;
~ tmp.z = cz;
~ RenderChunk ch = viewFrustum.getRenderChunk(tmp);
~ CompiledChunk cch;
~ if (ch != null && (cch = ch.getCompiledChunk()) != null && !cch.isLayerEmpty(blockLayerIn)) {
~ this.renderContainer.addRenderChunk(ch, blockLayerIn);
~ ++i;
~ }
> CHANGE 3 : 10 @ 3 : 5
~ if (i > 0) {
~ this.mc.mcProfiler.endStartSection("render_paraboloid_" + up + "_" + blockLayerIn);
~ this.mc.entityRenderer.enableLightmap();
~ this.renderContainer.renderChunkLayer(blockLayerIn);
~ this.mc.entityRenderer.disableLightmap();
~ }
~ return i;
> CHANGE 92 : 93 @ 92 : 102
~ GlStateManager.callList(this.glSkyList);
@ -182,11 +554,21 @@
> DELETE 17 @ 17 : 18
> CHANGE 175 : 176 @ 175 : 176
> CHANGE 155 : 157 @ 155 : 156
~ worldRendererIn.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS
~ : DefaultVertexFormats.BLOCK);
> CHANGE 19 : 20 @ 19 : 20
~ EaglerTextureAtlasSprite textureatlassprite = this.destroyBlockIcons[i];
> CHANGE 21 : 22 @ 21 : 22
> CHANGE 17 : 19 @ 17 : 18
~ if (partialTicks == 0 && movingObjectPositionIn != null
~ && movingObjectPositionIn.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
> CHANGE 3 : 4 @ 3 : 4
~ EaglercraftGPU.glLineWidth(2.0F);

View File

@ -5,25 +5,42 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 5 @ 2 : 5
> CHANGE 2 : 6 @ 2 : 5
~ import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 1 @ 1 : 2
> CHANGE 8 : 10 @ 8 : 10
> CHANGE 7 : 13 @ 7 : 11
~ GlStateManager.disableMCLight(0);
~ GlStateManager.disableMCLight(1);
~ if (!DeferredStateManager.isInDeferredPass()) {
~ GlStateManager.disableLighting();
~ GlStateManager.disableMCLight(0);
~ GlStateManager.disableMCLight(1);
~ GlStateManager.disableColorMaterial();
~ }
> CHANGE 5 : 8 @ 5 : 7
> CHANGE 3 : 10 @ 3 : 21
~ GlStateManager.enableMCLight(0, 0.6f, LIGHT0_POS.xCoord, LIGHT0_POS.yCoord, LIGHT0_POS.zCoord, 0.0D);
~ GlStateManager.enableMCLight(1, 0.6f, LIGHT1_POS.xCoord, LIGHT1_POS.yCoord, LIGHT1_POS.zCoord, 0.0D);
~ GlStateManager.setMCLightAmbient(0.4f, 0.4f, 0.4f);
~ if (!DeferredStateManager.isInDeferredPass()) {
~ GlStateManager.enableLighting();
~ GlStateManager.enableMCLight(0, 0.6f, LIGHT0_POS.xCoord, LIGHT0_POS.yCoord, LIGHT0_POS.zCoord, 0.0D);
~ GlStateManager.enableMCLight(1, 0.6f, LIGHT1_POS.xCoord, LIGHT1_POS.yCoord, LIGHT1_POS.zCoord, 0.0D);
~ GlStateManager.setMCLightAmbient(0.4f, 0.4f, 0.4f);
~ GlStateManager.enableColorMaterial();
~ }
> DELETE 1 @ 1 : 15
> CHANGE 15 : 22 @ 15 : 20
~ if (!DeferredStateManager.isInDeferredPass()) {
~ GlStateManager.pushMatrix();
~ GlStateManager.rotate(-30.0F, 0.0F, 1.0F, 0.0F);
~ GlStateManager.rotate(165.0F, 1.0F, 0.0F, 0.0F);
~ enableStandardItemLighting();
~ GlStateManager.popMatrix();
~ }
> EOF

View File

@ -12,8 +12,9 @@
> DELETE 3 @ 3 : 4
> CHANGE 8 : 9 @ 8 : 9
> CHANGE 7 : 9 @ 7 : 9
~ this.preRenderChunk(renderchunk, enumworldblocklayer);
~ EaglercraftGPU.glCallList(
> EOF

View File

@ -0,0 +1,33 @@
# Eagler Context Redacted Diff
# Copyright (c) 2023 lax1dude. All rights reserved.
# Version: 1.0
# Author: lax1dude
> INSERT 6 : 7 @ 6
+ protected final int[] vertexDataWithNormals;
> INSERT 5 : 6 @ 5
+ this.vertexDataWithNormals = null;
> INSERT 4 : 11 @ 4
+ public BakedQuad(int[] vertexDataIn, int[] vertexDataWithNormalsIn, int tintIndexIn, EnumFacing faceIn) {
+ this.vertexData = vertexDataIn;
+ this.vertexDataWithNormals = vertexDataWithNormalsIn;
+ this.tintIndex = tintIndexIn;
+ this.face = faceIn;
+ }
+
> INSERT 4 : 8 @ 4
+ public int[] getVertexDataWithNormals() {
+ return this.vertexDataWithNormals;
+ }
+
> EOF

View File

@ -7,17 +7,30 @@
> DELETE 3 @ 3 : 6
> INSERT 1 : 3 @ 1
> INSERT 1 : 4 @ 1
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+
> CHANGE 1 : 2 @ 1 : 2
~ private final EaglerTextureAtlasSprite texture;
> CHANGE 1 : 2 @ 1 : 2
> CHANGE 1 : 5 @ 1 : 4
~ public BreakingFour(BakedQuad parBakedQuad, EaglerTextureAtlasSprite textureIn) {
~ super(Arrays.copyOf(parBakedQuad.getVertexData(), parBakedQuad.getVertexData().length),
~ Arrays.copyOf(parBakedQuad.getVertexDataWithNormals(), parBakedQuad.getVertexDataWithNormals().length),
~ parBakedQuad.tintIndex, parBakedQuad.face);
> INSERT 46 : 52 @ 46
+ if (this.vertexDataWithNormals != null) {
+ int i2 = 8 * parInt1;
+ this.vertexDataWithNormals[i2 + 4] = this.vertexData[i + 4];
+ this.vertexDataWithNormals[i2 + 4 + 1] = this.vertexData[i + 4 + 1];
+
+ }
> EOF

View File

@ -5,9 +5,10 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 6 @ 2
> INSERT 2 : 7 @ 2
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.VertexMarkerState;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
+ import net.lax1dude.eaglercraft.v1_8.vector.Vector3f;
+ import net.lax1dude.eaglercraft.v1_8.vector.Vector4f;
@ -16,31 +17,133 @@
> DELETE 4 @ 4 : 7
> CHANGE 5 : 8 @ 5 : 8
> CHANGE 5 : 11 @ 5 : 8
~ private int stride = 7;
~
~ public BakedQuad makeBakedQuad(Vector3f posFrom, Vector3f posTo, BlockPartFace face,
~ EaglerTextureAtlasSprite sprite, EnumFacing facing, ModelRotation modelRotationIn,
~ BlockPartRotation partRotation, boolean uvLocked, boolean shade) {
~ stride = 7;
> CHANGE 14 : 15 @ 14 : 15
> CHANGE 1 : 4 @ 1 : 3
~ modelRotationIn, partRotation, uvLocked, shade, null);
~ Vector3f calcNormal = getNormalFromVertexData(aint);
~ EnumFacing enumfacing = getFacingFromVertexData(calcNormal);
> CHANGE 8 : 21 @ 8 : 9
~ stride = 8;
~ int[] aint2 = this.makeQuadVertexData(face, sprite, facing, this.getPositionsDiv16(posFrom, posTo),
~ modelRotationIn, partRotation, uvLocked, shade, calcNormal);
~ if (uvLocked) {
~ this.func_178409_a(aint2, enumfacing, face.blockFaceUV, sprite);
~ }
~
~ if (partRotation == null) {
~ this.func_178408_a(aint2, enumfacing);
~ }
~ stride = 7;
~
~ return new BakedQuad(aint, aint2, face.tintIndex, enumfacing);
> CHANGE 2 : 3 @ 2 : 3
~ private int[] makeQuadVertexData(BlockPartFace partFace, EaglerTextureAtlasSprite sprite, EnumFacing facing,
> CHANGE 47 : 49 @ 47 : 49
> CHANGE 1 : 3 @ 1 : 3
~ boolean parFlag2, Vector3f calcNormal) {
~ int[] aint = new int[stride * 4];
> CHANGE 3 : 4 @ 3 : 4
~ parFlag2, calcNormal);
> CHANGE 40 : 42 @ 40 : 42
~ float[] sprite, EaglerTextureAtlasSprite modelRotationIn, ModelRotation partRotation,
~ BlockPartRotation uvLocked, boolean shade, boolean parFlag2) {
~ BlockPartRotation uvLocked, boolean shade, boolean parFlag2, Vector3f calcNormal) {
> CHANGE 13 : 14 @ 13 : 14
> CHANGE 1 : 2 @ 1 : 2
~ EaglerTextureAtlasSprite sprite, BlockFaceUV faceUV) {
~ int i = (parFlag2 && stride != 8) ? this.getFaceShadeColor(enumfacing) : -1;
> CHANGE 113 : 114 @ 113 : 114
> CHANGE 7 : 9 @ 7 : 8
~ this.storeVertexData(faceData, j, vertexIndex, vector3f, i, modelRotationIn, partFace.blockFaceUV, enumfacing,
~ calcNormal);
> CHANGE 3 : 5 @ 3 : 8
~ EaglerTextureAtlasSprite sprite, BlockFaceUV faceUV, EnumFacing facing, Vector3f calcNormal) {
~ int i = storeIndex * stride;
> INSERT 4 : 27 @ 4
+ if (stride == 8) {
+ faceData[i] = Float.floatToRawIntBits(position.x * VertexMarkerState.localCoordDeriveHackX);
+ faceData[i + 1] = Float.floatToRawIntBits(position.y * VertexMarkerState.localCoordDeriveHackY);
+ faceData[i + 2] = Float.floatToRawIntBits(position.z * VertexMarkerState.localCoordDeriveHackZ);
+ if (calcNormal != null) {
+ int x = (byte) ((int) (calcNormal.x * 127.0F)) & 255;
+ int y = (byte) ((int) (calcNormal.y * 127.0F)) & 255;
+ int z = (byte) ((int) (calcNormal.z * 127.0F)) & 255;
+ int l = x | y << 8 | z << 16 | ((byte) VertexMarkerState.markId) << 24;
+ faceData[i + 6] = l;
+ } else {
+ Vec3i vec = facing.getDirectionVec();
+ int x = (byte) ((int) (vec.x * 127.0F)) & 255;
+ int y = (byte) ((int) (vec.y * 127.0F)) & 255;
+ int z = (byte) ((int) (vec.z * 127.0F)) & 255;
+ int l = x | y << 8 | z << 16 | ((byte) VertexMarkerState.markId) << 24;
+ faceData[i + 6] = l;
+ }
+ } else {
+ faceData[i] = Float.floatToRawIntBits(position.x);
+ faceData[i + 1] = Float.floatToRawIntBits(position.y);
+ faceData[i + 2] = Float.floatToRawIntBits(position.z);
+ }
> CHANGE 66 : 67 @ 66 : 67
~ public static Vector3f getNormalFromVertexData(int[] faceData) {
> INSERT 17 : 21 @ 17
+ return vector3f5;
+ }
+
+ public static EnumFacing getFacingFromVertexData(Vector3f normal) {
> CHANGE 6 : 7 @ 6 : 7
~ float f2 = Vector3f.dot(normal, vector3f6);
> CHANGE 14 : 15 @ 14 : 15
~ EaglerTextureAtlasSprite parTextureAtlasSprite) {
> CHANGE 76 : 77 @ 76 : 77
> CHANGE 18 : 19 @ 18 : 19
~ int j = stride * i;
> CHANGE 31 : 32 @ 31 : 32
~ int j1 = stride * i1;
> CHANGE 10 : 11 @ 10 : 11
~ int l = stride * k;
> CHANGE 14 : 16 @ 14 : 16
~ EaglerTextureAtlasSprite parTextureAtlasSprite) {
~ int i = stride * facing;
> CHANGE 43 : 44 @ 43 : 44
~ int j = parBlockFaceUV.func_178345_c(facing) * stride;
> EOF

View File

@ -7,11 +7,12 @@
> DELETE 2 @ 2 : 3
> CHANGE 1 : 4 @ 1 : 2
> CHANGE 1 : 5 @ 1 : 2
~
~ import com.google.common.collect.Lists;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> CHANGE 1 : 2 @ 1 : 3
@ -57,11 +58,17 @@
> DELETE 2 @ 2 : 6
> INSERT 8 : 16 @ 8
> INSERT 8 : 22 @ 8
+ public boolean canExecuteYet() {
+ if (this.type == ChunkCompileTaskGenerator.Type.RESORT_TRANSPARENCY) {
+ return !this.renderChunk.getCompiledChunk().isLayerEmpty(EnumWorldBlockLayer.TRANSLUCENT);
+ CompiledChunk ch = this.renderChunk.getCompiledChunk();
+ if (DeferredStateManager.isRenderingRealisticWater()) {
+ return !ch.isLayerEmpty(EnumWorldBlockLayer.TRANSLUCENT)
+ || !ch.isLayerEmpty(EnumWorldBlockLayer.REALISTIC_WATER);
+ } else {
+ return !ch.isLayerEmpty(EnumWorldBlockLayer.TRANSLUCENT);
+ }
+ } else {
+ return true;
+ }

View File

@ -5,11 +5,12 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 5 @ 2 : 9
> CHANGE 2 : 6 @ 2 : 9
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
~ import net.lax1dude.eaglercraft.v1_8.minecraft.ChunkUpdateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 2 @ 2 : 6
@ -66,11 +67,7 @@
+ generator.setStatus(ChunkCompileTaskGenerator.Status.UPLOADING);
+
> CHANGE 1 : 4 @ 1 : 2
~ if (compiledchunk == null) {
~ System.out.println(chunkcompiletaskgenerator$type);
~ }
> DELETE 1 @ 1 : 2
> CHANGE 2 : 4 @ 2 : 4
@ -87,9 +84,15 @@
~ this.chunkRenderDispatcher.uploadChunk(
> CHANGE 2 : 5 @ 2 : 3
> CHANGE 2 : 11 @ 2 : 3
~ generator.getRenderChunk(), compiledchunk);
~ if (DeferredStateManager.isRenderingRealisticWater()) {
~ this.chunkRenderDispatcher.uploadChunk(
~ EnumWorldBlockLayer.REALISTIC_WATER, generator.getRegionRenderCacheBuilder()
~ .getWorldRendererByLayer(EnumWorldBlockLayer.REALISTIC_WATER),
~ generator.getRenderChunk(), compiledchunk);
~ }
~ generator.getRenderChunk().setCompiledChunk(compiledchunk);
~ generator.setStatus(ChunkCompileTaskGenerator.Status.DONE);

View File

@ -18,4 +18,19 @@
~ return true;
> INSERT 8 : 9 @ 8
+ private WorldRenderer.State stateWater;
> INSERT 45 : 53 @ 45
+
+ public WorldRenderer.State getStateRealisticWater() {
+ return this.stateWater;
+ }
+
+ public void setStateRealisticWater(WorldRenderer.State stateIn) {
+ this.stateWater = stateIn;
+ }
> EOF

View File

@ -9,14 +9,16 @@
~ import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
> CHANGE 3 : 9 @ 3 : 4
> CHANGE 3 : 11 @ 3 : 4
~
~ import com.google.common.collect.Maps;
~ import com.google.common.collect.Sets;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 4 @ 4 : 7
@ -24,17 +26,45 @@
> DELETE 3 @ 3 : 4
> DELETE 13 @ 13 : 15
> INSERT 8 : 12 @ 8
+ public static enum ShadowFrustumState {
+ OUTSIDE, OUTSIDE_BB, INTERSECT, INSIDE
+ }
+
> DELETE 5 @ 5 : 7
> CHANGE 3 : 4 @ 3 : 5
~ private final float[] modelviewMatrix = new float[16];
> DELETE 13 @ 13 : 19
> INSERT 3 : 9 @ 3
+ public int shadowLOD0FrameIndex = -1;
+ public int shadowLOD1FrameIndex = -1;
+ public int shadowLOD2FrameIndex = -1;
+ public ShadowFrustumState shadowLOD0InFrustum = ShadowFrustumState.OUTSIDE;
+ public ShadowFrustumState shadowLOD1InFrustum = ShadowFrustumState.OUTSIDE;
+ public ShadowFrustumState shadowLOD2InFrustum = ShadowFrustumState.OUTSIDE;
> DELETE 10 @ 10 : 16
> DELETE 11 @ 11 : 15
> DELETE 31 @ 31 : 32
> INSERT 24 : 33 @ 24
+ if (DeferredStateManager.isRenderingRealisticWater() && compiledchunk.getStateRealisticWater() != null
+ && !compiledchunk.isLayerEmpty(EnumWorldBlockLayer.REALISTIC_WATER)) {
+ this.preRenderBlocks(generator.getRegionRenderCacheBuilder()
+ .getWorldRendererByLayer(EnumWorldBlockLayer.REALISTIC_WATER), this.position);
+ generator.getRegionRenderCacheBuilder().getWorldRendererByLayer(EnumWorldBlockLayer.REALISTIC_WATER)
+ .setVertexState(compiledchunk.getStateRealisticWater());
+ this.postRenderBlocks(EnumWorldBlockLayer.REALISTIC_WATER, x, y, z, generator.getRegionRenderCacheBuilder()
+ .getWorldRendererByLayer(EnumWorldBlockLayer.REALISTIC_WATER), compiledchunk);
+ }
> DELETE 7 @ 7 : 8
> CHANGE 2 : 4 @ 2 : 11
@ -56,7 +86,23 @@
~ TileEntity tileentity = regionrendercache.getTileEntity(blockpos$mutableblockpos);
> DELETE 38 @ 38 : 39
> INSERT 21 : 34 @ 21
+
+ if (block.eaglerShadersShouldRenderGlassHighlights()) {
+ enumworldblocklayer1 = EnumWorldBlockLayer.GLASS_HIGHLIGHTS;
+ worldrenderer = generator.getRegionRenderCacheBuilder()
+ .getWorldRendererByLayerId(enumworldblocklayer1.ordinal());
+ if (!compiledchunk.isLayerStarted(enumworldblocklayer1)) {
+ compiledchunk.setLayerStarted(enumworldblocklayer1);
+ this.preRenderBlocks(worldrenderer, blockpos);
+ }
+
+ aboolean[enumworldblocklayer1.ordinal()] |= blockrendererdispatcher.renderBlock(iblockstate,
+ blockpos$mutableblockpos, regionrendercache, worldrenderer);
+ }
> DELETE 17 @ 17 : 18
> CHANGE 1 : 8 @ 1 : 12
@ -92,7 +138,25 @@
~ this.compileTask.setCompiledChunk(this.compiledChunk);
~ return this.compileTask;
> CHANGE 37 : 38 @ 37 : 45
> CHANGE 3 : 5 @ 3 : 4
~ worldRendererIn.begin(7,
~ DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS : DefaultVertexFormats.BLOCK);
> CHANGE 5 : 7 @ 5 : 6
~ if ((layer == EnumWorldBlockLayer.TRANSLUCENT || layer == EnumWorldBlockLayer.REALISTIC_WATER)
~ && !compiledChunkIn.isLayerEmpty(layer)) {
> CHANGE 1 : 6 @ 1 : 2
~ if (layer == EnumWorldBlockLayer.REALISTIC_WATER) {
~ compiledChunkIn.setStateRealisticWater(worldRendererIn.func_181672_a());
~ } else {
~ compiledChunkIn.setState(worldRendererIn.func_181672_a());
~ }
> CHANGE 25 : 26 @ 25 : 33
~ this.compiledChunk = compiledChunkIn;

View File

@ -5,12 +5,14 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 6 @ 2
> INSERT 2 : 8 @ 2
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.NameTagRenderer;
> DELETE 3 @ 3 : 4
@ -20,7 +22,20 @@
> DELETE 10 @ 10 : 11
> CHANGE 61 : 63 @ 61 : 63
> INSERT 12 : 15 @ 12
+ if (DeferredStateManager.isEnableShadowRender()) {
+ return true;
+ }
> INSERT 21 : 25 @ 21
+ public static void renderNameAdapter(Render r, Entity e, double x, double y, double z) {
+ r.renderName(e, x, y, z);
+ }
+
> CHANGE 28 : 30 @ 28 : 30
~ EaglerTextureAtlasSprite textureatlassprite = texturemap.getAtlasSprite("minecraft:blocks/fire_layer_0");
~ EaglerTextureAtlasSprite textureatlassprite1 = texturemap.getAtlasSprite("minecraft:blocks/fire_layer_1");
@ -29,7 +44,23 @@
~ EaglerTextureAtlasSprite textureatlassprite2 = i % 2 == 0 ? textureatlassprite : textureatlassprite1;
> CHANGE 179 : 180 @ 179 : 180
> CHANGE 150 : 152 @ 150 : 152
~ if (!DeferredStateManager.isInDeferredPass() && this.renderManager.options.field_181151_V
~ && this.shadowSize > 0.0F && !entityIn.isInvisible() && this.renderManager.isRenderShadow()) {
> CHANGE 19 : 20 @ 19 : 20
~ public void renderLivingLabel(T entityIn, String str, double x, double y, double z, int maxDistance) {
> INSERT 2 : 6 @ 2
+ if (DeferredStateManager.isInDeferredPass()) {
+ NameTagRenderer.renderNameTag(entityIn, str, x, y, z, maxDistance);
+ return;
+ }
> CHANGE 5 : 6 @ 5 : 6
~ EaglercraftGPU.glNormal3f(0.0F, 1.0F, 0.0F);

View File

@ -5,6 +5,26 @@
# Version: 1.0
# Author: lax1dude
> DELETE 3 @ 3 : 5
> INSERT 2 : 3 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 1 @ 1 : 3
> INSERT 13 : 26 @ 13
+
+ public void doRender(EntityBlaze entityliving, double d0, double d1, double d2, float f, float f1) {
+ if (DeferredStateManager.isInDeferredPass()) {
+ DeferredStateManager.setEmissionConstant(1.0f);
+ try {
+ super.doRender(entityliving, d0, d1, d2, f, f1);
+ } finally {
+ DeferredStateManager.setEmissionConstant(0.0f);
+ }
+ } else {
+ super.doRender(entityliving, d0, d1, d2, f, f1);
+ }
+ }
> EOF

View File

@ -5,10 +5,31 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 5 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
> DELETE 1 @ 1 : 4
> INSERT 1 : 2 @ 1
+ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
> INSERT 34 : 46 @ 34
+ public void doRender(EntityCreeper entitycreeper, double d0, double d1, double d2, float f, float f1) {
+ float ff = entitycreeper.getCreeperFlashIntensity(f);
+ if ((int) (ff * 10.0F) % 2 != 0) {
+ DeferredStateManager.setEmissionConstant(1.0f);
+ }
+ try {
+ super.doRender(entitycreeper, d0, d1, d2, f, f1);
+ } finally {
+ DeferredStateManager.setEmissionConstant(0.0f);
+ }
+ }
+
> EOF

View File

@ -5,13 +5,41 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 5 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 1 @ 1 : 2
> DELETE 2 @ 2 : 5
> INSERT 43 : 67 @ 43
+ if (DeferredStateManager.isDeferredRenderer()) {
+ if (entitydragon.deathTicks > 0) {
+ float f6 = (float) entitydragon.deathTicks / 200.0F;
+ GlStateManager.depthFunc(515);
+ GlStateManager.enableAlpha();
+ GlStateManager.alphaFunc(516, f6);
+ this.bindTexture(enderDragonExplodingTextures);
+ this.mainModel.render(entitydragon, f, f1, f2, f3, f4, f5);
+ GlStateManager.alphaFunc(516, 0.1F);
+ GlStateManager.depthFunc(514);
+ }
+ if (entitydragon.hurtTime > 0) {
+ GlStateManager.enableShaderBlendAdd();
+ GlStateManager.setShaderBlendSrc(0.5f, 0.5f, 0.5f, 1.0f);
+ GlStateManager.setShaderBlendAdd(1.0f, 0.0f, 0.0f, 0.0f);
+ }
+ this.bindEntityTexture(entitydragon);
+ this.mainModel.render(entitydragon, f, f1, f2, f3, f4, f5);
+ GlStateManager.depthFunc(515);
+ if (entitydragon.hurtTime > 0) {
+ GlStateManager.disableShaderBlendAdd();
+ }
+ return;
+ }
> EOF

View File

@ -5,10 +5,9 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 4 @ 2 : 3
> CHANGE 2 : 3 @ 2 : 3
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
> DELETE 2 @ 2 : 4

View File

@ -5,11 +5,13 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 5 @ 2 : 4
> CHANGE 2 : 7 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.minecraft.client.Minecraft;
> DELETE 1 @ 1 : 4
@ -22,4 +24,21 @@
~ float f6 = 0.0F * (float) (i - 1) * 0.5F;
~ float f4 = 0.0F * (float) (i - 1) * 0.5F;
> INSERT 25 : 27 @ 25
+ boolean emissive = entityitem.eaglerEmissiveFlag;
+ entityitem.eaglerEmissiveFlag = false;
> INSERT 8 : 11 @ 8
+ if (emissive) {
+ DeferredStateManager.setEmissionConstant(1.0f);
+ }
> INSERT 43 : 46 @ 43
+ if (emissive) {
+ DeferredStateManager.setEmissionConstant(0.0f);
+ }
> EOF

View File

@ -5,13 +5,20 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 6 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 4 @ 4 : 5
> DELETE 1 @ 1 : 4
> CHANGE 28 : 30 @ 28 : 29
~ worldrenderer.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS
~ : DefaultVertexFormats.BLOCK);
> EOF

View File

@ -5,14 +5,130 @@
# Version: 1.0
# Author: lax1dude
> INSERT 4 : 7 @ 4
> INSERT 4 : 12 @ 4
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture.PassType;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 21 @ 21 : 22
> DELETE 3 @ 3 : 4
> INSERT 21 : 22 @ 21
+ import net.minecraft.item.ItemBlock;
> INSERT 5 : 6 @ 5
+ import net.minecraft.util.EnumWorldBlockLayer;
> INSERT 63 : 67 @ 63
+ public static float renderPosX = 0.0f;
+ public static float renderPosY = 0.0f;
+ public static float renderPosZ = 0.0f;
+
> CHANGE 12 : 82 @ 12 : 15
~ if (DeferredStateManager.isInDeferredPass() && isTransparentItem(stack)) {
~ if (DeferredStateManager.forwardCallbackHandler != null) {
~ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
~ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
~ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(renderPosX,
~ renderPosY, renderPosZ, EaglerDeferredPipeline.instance.getPartialTicks()) {
~ @Override
~ public void draw(PassType pass) {
~ if (pass == PassType.MAIN) {
~ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
~ }
~ EntityRenderer.enableLightmapStatic();
~ GlStateManager.pushMatrix();
~ GlStateManager.loadMatrix(mat);
~ GlStateManager.texCoords2DDirect(1, lx, ly);
~ Minecraft.getMinecraft().getTextureManager()
~ .bindTexture(TextureMap.locationBlocksTexture);
~ RenderItem.this.renderModel(model, stack);
~ if (pass != PassType.SHADOW && stack.hasEffect()) {
~ GlStateManager.color(1.5F, 0.5F, 1.5F, 1.0F);
~ DeferredStateManager.setDefaultMaterialConstants();
~ DeferredStateManager.setRoughnessConstant(0.05f);
~ DeferredStateManager.setMetalnessConstant(0.01f);
~ GlStateManager.blendFunc(768, 1);
~ renderEffect(model);
~ DeferredStateManager.setHDRTranslucentPassBlendFunc();
~ }
~ GlStateManager.popMatrix();
~ EntityRenderer.disableLightmapStatic();
~ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
~ }
~ });
~ }
~ } else {
~ this.renderModel(model, stack);
~ if (stack.hasEffect()) {
~ if (DeferredStateManager.isInDeferredPass()) {
~ if (DeferredStateManager.forwardCallbackHandler != null
~ && !DeferredStateManager.isEnableShadowRender()) {
~ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
~ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
~ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(renderPosX,
~ renderPosY, renderPosZ, EaglerDeferredPipeline.instance.getPartialTicks()) {
~ @Override
~ public void draw(PassType pass) {
~ if (pass == PassType.MAIN) {
~ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
~ }
~ EntityRenderer.enableLightmapStatic();
~ GlStateManager.color(1.5F, 0.5F, 1.5F, 1.0F);
~ DeferredStateManager.setDefaultMaterialConstants();
~ DeferredStateManager.setRoughnessConstant(0.05f);
~ DeferredStateManager.setMetalnessConstant(0.01f);
~ GlStateManager.pushMatrix();
~ GlStateManager.loadMatrix(mat);
~ GlStateManager.texCoords2DDirect(1, lx, ly);
~ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ONE);
~ renderEffect(model);
~ DeferredStateManager.setHDRTranslucentPassBlendFunc();
~ GlStateManager.popMatrix();
~ EntityRenderer.disableLightmapStatic();
~ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
~ }
~ });
~ }
~ } else {
~ GlStateManager.blendFunc(768, 1);
~ this.renderEffect(model);
~ }
~ }
> INSERT 7 : 13 @ 7
+ private static boolean isTransparentItem(ItemStack stack) {
+ Item itm = stack.getItem();
+ return itm instanceof ItemBlock
+ && ((ItemBlock) itm).getBlock().getBlockLayer() == EnumWorldBlockLayer.TRANSLUCENT;
+ }
+
> DELETE 4 @ 4 : 5
> INSERT 123 : 124 @ 123
+ boolean flag = DeferredStateManager.isEnableShadowRender();
> CHANGE 1 : 2 @ 1 : 2
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 3 : 4 @ 3 : 4
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -5,16 +5,46 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 6 @ 2 : 4
> CHANGE 2 : 9 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 4
> CHANGE 21 : 22 @ 21 : 22
> INSERT 11 : 33 @ 11
+ if (DeferredStateManager.isInDeferredPass()) {
+ GlStateManager.disableExtensionPipeline();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.tryBlendFuncSeparate(768, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.disableCull();
+ float bright = 0.04f;
+ GlStateManager.color(6.0f * bright, 6.25f * bright, 7.0f * bright, 1.0f);
+ doRender0(entitylightningbolt, d0, d1, d2, var8, var9);
+ GlStateManager.enableCull();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.enableExtensionPipeline();
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ return;
+ }
+ GlStateManager.enableBlend();
+ GlStateManager.blendFunc(770, 1);
+ doRender0(entitylightningbolt, d0, d1, d2, var8, var9);
+ GlStateManager.disableBlend();
+ }
+
+ private void doRender0(EntityLightningBolt entitylightningbolt, double d0, double d1, double d2, float var8,
+ float var9) {
> DELETE 4 @ 4 : 6
> CHANGE 4 : 5 @ 4 : 5
~ EaglercraftRandom random = new EaglercraftRandom(entitylightningbolt.boltVertex);
@ -22,4 +52,6 @@
~ EaglercraftRandom random1 = new EaglercraftRandom(entitylightningbolt.boltVertex);
> DELETE 73 @ 73 : 74
> EOF

View File

@ -7,7 +7,7 @@
> DELETE 2 @ 2 : 3
> INSERT 1 : 7 @ 1
> INSERT 1 : 8 @ 1
+
+ import com.google.common.collect.Maps;
@ -15,6 +15,7 @@
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 16 @ 16 : 18
@ -35,4 +36,50 @@
~ public <T extends Entity> Render getEntityRenderObject(Entity entityIn) {
> INSERT 85 : 86 @ 85
+ DeferredStateManager.setEmissionConstant(1.0f);
> CHANGE 7 : 13 @ 7 : 9
~ try {
~ return this.doRenderEntity(entity, d0 - this.renderPosX, d1 - this.renderPosY, d2 - this.renderPosZ, f,
~ partialTicks, parFlag);
~ } finally {
~ DeferredStateManager.setEmissionConstant(0.0f);
~ }
> INSERT 2 : 13 @ 2
+ public static void setupLightmapCoords(Entity entity, float partialTicks) {
+ int i = entity.getBrightnessForRender(partialTicks);
+ if (entity.isBurning()) {
+ DeferredStateManager.setEmissionConstant(1.0f);
+ i = 15728880;
+ }
+ int j = i % 65536;
+ int k = i / 65536;
+ OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F);
+ }
+
> CHANGE 18 : 23 @ 18 : 19
~ try {
~ return this.doRenderEntity(entityIn, x, y, z, entityYaw, partialTicks, false);
~ } finally {
~ DeferredStateManager.setEmissionConstant(0.0f);
~ }
> INSERT 14 : 17 @ 14
+ RenderItem.renderPosX = (float) x;
+ RenderItem.renderPosY = (float) y + entity.height * 0.5f;
+ RenderItem.renderPosZ = (float) z;
> CHANGE 14 : 16 @ 14 : 15
~ if (this.debugBoundingBox && !entity.isInvisible() && !parFlag
~ && !DeferredStateManager.isDeferredRenderer()) {
> EOF

View File

@ -80,4 +80,8 @@
~ ((ModelPlayer) modelplayer).renderLeftArm();
~ }
> CHANGE 2 : 3 @ 2 : 3
~ public void renderLivingAt(AbstractClientPlayer abstractclientplayer, double d0, double d1, double d2) {
> EOF

View File

@ -11,4 +11,8 @@
> DELETE 1 @ 1 : 4
> CHANGE 5 : 6 @ 5 : 6
~ public static final ResourceLocation slimeTextures = new ResourceLocation("textures/entity/slime/slime.png");
> EOF

View File

@ -5,10 +5,36 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 4 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 2 @ 2 : 5
> INSERT 28 : 37 @ 28
+ boolean light = entitytntprimed.fuse / 5 % 2 == 0;
+ boolean deferred = DeferredStateManager.isInDeferredPass();
+ if (light && deferred) {
+ DeferredStateManager.setEmissionConstant(1.0f);
+ DeferredStateManager.disableMaterialTexture();
+ GlStateManager.enableShaderBlendAdd();
+ GlStateManager.setShaderBlendSrc(0.0f, 0.0f, 0.0f, 0.0f);
+ GlStateManager.setShaderBlendAdd(1.0f, 1.0f, 1.0f, 1.0f);
+ }
> CHANGE 2 : 3 @ 2 : 3
~ if (light && !deferred) {
> INSERT 18 : 24 @ 18
+ if (light && deferred) {
+ DeferredStateManager.setEmissionConstant(0.0f);
+ DeferredStateManager.enableMaterialTexture();
+ GlStateManager.disableShaderBlendAdd();
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ }
> EOF

View File

@ -9,7 +9,7 @@
~ import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
> INSERT 1 : 10 @ 1
> INSERT 1 : 15 @ 1
+
+ import com.google.common.collect.Lists;
@ -20,8 +20,18 @@
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.NameTagRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 5 @ 5 : 7
> INSERT 4 : 6 @ 4
+ import net.minecraft.client.model.ModelBiped;
+ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 3
> DELETE 1 @ 1 : 4
@ -31,7 +41,84 @@
~ return this.layerRenderers.add((LayerRenderer<T>) layer);
> CHANGE 194 : 201 @ 194 : 250
> DELETE 115 @ 115 : 116
> CHANGE 36 : 42 @ 36 : 37
~ protected void renderModel(T entitylivingbase, float f, float f1, float f2, float f3, float f4, float f5) { // f8,
~ // f7,
~ // f10,
~ // f4,
~ // f9,
~ // 0.0625
> INSERT 6 : 65 @ 6
+ if (flag1 && DeferredStateManager.isDeferredRenderer()) {
+ if (!DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entitylivingbase,
+ EaglerDeferredPipeline.instance.getPartialTicks()) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.05f);
+ DeferredStateManager.setMetalnessConstant(0.2f);
+ DeferredStateManager.setEmissionConstant(0.5f);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.texCoords2DDirect(1, lx, ly);
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.enableAlpha();
+ GlStateManager.alphaFunc(516, 0.003921569F);
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 0.15F);
+ RendererLivingEntity.this.bindEntityTexture(entitylivingbase);
+ RendererLivingEntity.this.mainModel.swingProgress = RendererLivingEntity.this
+ .getSwingProgress(entitylivingbase, f1);
+ RendererLivingEntity.this.mainModel.isRiding = entitylivingbase.isRiding();
+ RendererLivingEntity.this.mainModel.isChild = entitylivingbase.isChild();
+ if (RendererLivingEntity.this.mainModel instanceof ModelBiped) {
+ if ((entitylivingbase instanceof EntityPlayer)
+ && ((EntityPlayer) entitylivingbase).isSpectator()) {
+ ((ModelBiped) RendererLivingEntity.this.mainModel).setInvisible(false);
+ ((ModelBiped) RendererLivingEntity.this.mainModel).bipedHead.showModel = true;
+ ((ModelBiped) RendererLivingEntity.this.mainModel).bipedHeadwear.showModel = true;
+ } else {
+ ((ModelBiped) RendererLivingEntity.this.mainModel).setInvisible(true);
+ }
+ }
+ RendererLivingEntity.this.mainModel.setLivingAnimations(entitylivingbase, f, f1, f1);
+ RendererLivingEntity.this.mainModel.setRotationAngles(f, f1, f2, f3, f4, f5,
+ entitylivingbase);
+ RendererLivingEntity.this.mainModel.render(entitylivingbase, f, f1, f2, f3, f4, f5);
+ if (RendererLivingEntity.this.mainModel instanceof ModelBiped) {
+ if ((entitylivingbase instanceof EntityPlayer)
+ && ((EntityPlayer) entitylivingbase).isSpectator()) {
+ ((ModelBiped) RendererLivingEntity.this.mainModel).setInvisible(true);
+ }
+ }
+ GlStateManager.alphaFunc(516, 0.1F);
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.disableAlpha();
+ }
+ });
+ }
+ return;
+ }
> CHANGE 25 : 26 @ 25 : 26
~ public boolean setBrightness(T entitylivingbaseIn, float partialTicks, boolean combineTextures) {
> CHANGE 9 : 16 @ 9 : 65
~ GlStateManager.enableShaderBlendAdd();
~ float f1 = 1.0F - (float) (i >> 24 & 255) / 255.0F;
@ -41,11 +128,23 @@
~ GlStateManager.setShaderBlendSrc(f1, f1, f1, 1.0F);
~ GlStateManager.setShaderBlendAdd(f2 * f1 + 0.4F, f3 * f1, f4 * f1, 0.0f);
> CHANGE 5 : 6 @ 5 : 42
> CHANGE 4 : 6 @ 4 : 42
~ public void unsetBrightness() {
~ GlStateManager.disableShaderBlendAdd();
> CHANGE 73 : 74 @ 73 : 74
> CHANGE 2 : 3 @ 2 : 3
~ public void renderLivingAt(T entityLivingBaseIn, double x, double y, double z) {
> INSERT 66 : 70 @ 66
+ if (DeferredStateManager.isInDeferredPass()) {
+ NameTagRenderer.renderNameTag(entitylivingbase, null, d0, d1, d2, -69);
+ return;
+ }
> CHANGE 4 : 5 @ 4 : 5
~ EaglercraftGPU.glNormal3f(0.0F, 1.0F, 0.0F);

View File

@ -7,15 +7,21 @@
> DELETE 2 @ 2 : 3
> INSERT 1 : 6 @ 1
> INSERT 1 : 10 @ 1
+
+ import com.google.common.collect.Maps;
+
+ import net.lax1dude.eaglercraft.v1_8.HString;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 1 @ 1 : 2
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 2
@ -23,11 +29,93 @@
~ this.func_177179_a((T) modelbase, parInt1);
> CHANGE 19 : 20 @ 19 : 20
> INSERT 2 : 3 @ 2
+ DeferredStateManager.setDefaultMaterialConstants();
> INSERT 1 : 18 @ 1
+ case CHAIN:
+ case IRON:
+ DeferredStateManager.setRoughnessConstant(0.123f);
+ DeferredStateManager.setMetalnessConstant(0.902f);
+ break;
+ case GOLD:
+ DeferredStateManager.setRoughnessConstant(0.108f);
+ DeferredStateManager.setMetalnessConstant(0.907f);
+ break;
+ case DIAMOND:
+ DeferredStateManager.setRoughnessConstant(0.078f);
+ DeferredStateManager.setMetalnessConstant(0.588f);
+ break;
+ default:
+ break;
+ }
+ switch (itemarmor.getArmorMaterial()) {
> INSERT 14 : 15 @ 14
+ DeferredStateManager.setDefaultMaterialConstants();
> CHANGE 2 : 41 @ 2 : 3
~ if (DeferredStateManager.isInDeferredPass()) {
~ if (!DeferredStateManager.isEnableShadowRender()
~ && DeferredStateManager.forwardCallbackHandler != null) {
~ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
~ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
~ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(
~ entitylivingbaseIn, EaglerDeferredPipeline.instance.getPartialTicks()) {
~ @Override
~ public void draw(PassType pass) {
~ if (pass == PassType.MAIN) {
~ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
~ }
~ EntityRenderer.enableLightmapStatic();
~ float f = 0.55f;
~ GlStateManager.color(1.5F * f, 0.5F * f, 1.5F * f, 1.0F);
~ DeferredStateManager.setDefaultMaterialConstants();
~ DeferredStateManager.setRoughnessConstant(0.05f);
~ DeferredStateManager.setMetalnessConstant(0.01f);
~ GlStateManager.pushMatrix();
~ GlStateManager.loadMatrix(mat);
~ GlStateManager.texCoords2DDirect(1, lx, ly);
~ GlStateManager.enableBlend();
~ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ONE);
~ modelbase.setModelAttributes(LayerArmorBase.this.renderer.getMainModel());
~ modelbase.setLivingAnimations(entitylivingbaseIn, armorSlot, parFloat2, parFloat3);
~ LayerArmorBase.this.func_177179_a((T) modelbase, parInt1);
~ LayerArmorBase.this.func_177183_a(entitylivingbaseIn, (T) modelbase, armorSlot,
~ parFloat2, parFloat3, parFloat4, parFloat5, parFloat6, parFloat7);
~ DeferredStateManager.setHDRTranslucentPassBlendFunc();
~ GlStateManager.enableBlend();
~ GlStateManager.popMatrix();
~ EntityRenderer.disableLightmapStatic();
~ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
~ }
~ });
~ }
~ break;
~ }
~ this.func_177183_a(entitylivingbaseIn, (T) modelbase, armorSlot, parFloat2, parFloat3, parFloat4,
> CHANGE 58 : 59 @ 58 : 59
> CHANGE 27 : 31 @ 27 : 28
~ boolean d = !DeferredStateManager.isInDeferredPass();
~ if (d) {
~ GlStateManager.color(f1, f1, f1, 1.0F);
~ }
> DELETE 3 @ 3 : 4
> CHANGE 1 : 5 @ 1 : 2
~ if (d) {
~ GlStateManager.blendFunc(768, 1);
~ GlStateManager.color(0.5F * f2, 0.25F * f2, 0.8F * f2, 1.0F);
~ }
> CHANGE 24 : 25 @ 24 : 25
~ String s = HString.format("textures/models/armor/%s_layer_%d%s.png",

View File

@ -5,12 +5,85 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 6 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 1 @ 1 : 2
> CHANGE 1 : 2 @ 1 : 2
> DELETE 1 @ 1 : 2
~ import net.minecraft.client.renderer.EntityRenderer;
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.renderer.entity.RendererLivingEntity;
> INSERT 16 : 67 @ 16
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (DeferredStateManager.forwardCallbackHandler != null
+ && !DeferredStateManager.isEnableShadowRender()) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entitycreeper) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ boolean flag = entitycreeper.isInvisible();
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.1f);
+ DeferredStateManager.setEmissionConstant(0.9f);
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.color(0.5F, 0.5F, 0.5F, 1.0F);
+ if (flag) {
+ GlStateManager.depthMask(false);
+ }
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.disableCull();
+ GlStateManager.matrixMode(5890);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadIdentity();
+ float f7 = (float) entitycreeper.ticksExisted + f2;
+ GlStateManager.translate(f7 * 0.01F, f7 * 0.01F, 0.0F);
+ GlStateManager.matrixMode(5888);
+ LayerCreeperCharge.this.creeperRenderer.bindTexture(LIGHTNING_TEXTURE);
+ LayerCreeperCharge.this.creeperModel
+ .setModelAttributes(LayerCreeperCharge.this.creeperRenderer.getMainModel());
+ LayerCreeperCharge.this.creeperModel.setLivingAnimations(entitycreeper, f, f1, f1);
+ LayerCreeperCharge.this.creeperModel.render(entitycreeper, f, f1, f3, f4, f5, f6);
+ GlStateManager.matrixMode(5890);
+ GlStateManager.popMatrix();
+ GlStateManager.matrixMode(5888);
+ GlStateManager.popMatrix();
+ if (flag) {
+ GlStateManager.depthMask(true);
+ }
+ GlStateManager.enableCull();
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ return;
+ }
> CHANGE 1 : 4 @ 1 : 2
~ if (flag) {
~ GlStateManager.depthMask(false);
~ }
> CHANGE 18 : 21 @ 18 : 19
~ if (flag) {
~ GlStateManager.depthMask(true);
~ }
> EOF

View File

@ -5,17 +5,73 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 6 @ 2 : 4
> CHANGE 2 : 11 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
~ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 2 @ 2 : 4
> CHANGE 16 : 17 @ 16 : 17
> INSERT 6 : 48 @ 6
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (entitydragon.deathTicks > 0 && !DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler.push(
+ new ShadersRenderPassFuture(entitydragon, EaglerDeferredPipeline.instance.getPartialTicks()) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ float bright = 0.01f + ly * 0.001f;
+ GlStateManager.color(bright, bright, bright, 1.0F);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.tryBlendFuncSeparate(770, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.enableCull();
+ GlStateManager.enableBlend();
+ GlStateManager.disableExtensionPipeline();
+ EntityRenderer.disableLightmapStatic();
+ doRenderLayer0(entitydragon, var2, var3, f, var5, var6, var7, var8);
+ GlStateManager.enableExtensionPipeline();
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.disableAlpha();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ }
+ });
+ }
+ } else {
+ GlStateManager.enableBlend();
+ GlStateManager.enableCull();
+ GlStateManager.blendFunc(770, 1);
+ doRenderLayer0(entitydragon, var2, var3, f, var5, var6, var7, var8);
+ GlStateManager.disableBlend();
+ GlStateManager.disableCull();
+ }
+ }
+
+ public void doRenderLayer0(EntityDragon entitydragon, float var2, float var3, float f, float var5, float var6,
+ float var7, float var8) {
> CHANGE 10 : 11 @ 10 : 11
~ EaglercraftRandom random = new EaglercraftRandom(432L);
> DELETE 2 @ 2 : 4
> DELETE 1 @ 1 : 2
> DELETE 27 @ 27 : 29
> EOF

View File

@ -5,11 +5,26 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 4 @ 2 : 4
> CHANGE 2 : 5 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 1 @ 1 : 2
> INSERT 14 : 25 @ 14
+ if (DeferredStateManager.isInDeferredPass()) {
+ DeferredStateManager.setEmissionConstant(0.5f);
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.enablePolygonOffset();
+ GlStateManager.doPolygonOffset(-0.025f, 1.0f);
+ this.dragonRenderer.getMainModel().render(entitydragon, f, f1, f3, f4, f5, f6);
+ this.dragonRenderer.func_177105_a(entitydragon, f2);
+ GlStateManager.disablePolygonOffset();
+ DeferredStateManager.setEmissionConstant(0.0f);
+ return;
+ }
> EOF

View File

@ -5,11 +5,69 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 4 @ 2 : 4
> CHANGE 2 : 9 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
~ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
~ import net.minecraft.client.model.ModelEnderman;
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 2
> INSERT 14 : 64 @ 14
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (entityenderman.isInvisible()) {
+ if (!DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entityenderman) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ LayerEndermanEyes.this.endermanRenderer.bindTexture(field_177203_a);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.1f);
+ DeferredStateManager.setEmissionConstant(0.9f);
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.color(0.5F, 0.5F, 0.5F, 1.0F);
+ GlStateManager.depthMask(false);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.disableCull();
+ ModelEnderman eee = (ModelEnderman) LayerEndermanEyes.this.endermanRenderer.getMainModel();
+ eee.isAttacking = entityenderman.isScreaming();
+ eee.setLivingAnimations(entityenderman, f, f1, f1);
+ eee.render(entityenderman, f, f1, f3, f4, f5, f6);
+ GlStateManager.popMatrix();
+ GlStateManager.depthMask(true);
+ GlStateManager.enableCull();
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ return;
+ }
+ this.endermanRenderer.bindTexture(field_177203_a);
+ EntityRenderer.disableLightmapStatic();
+ DeferredStateManager.setEmissionConstant(0.9f);
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.enablePolygonOffset();
+ GlStateManager.doPolygonOffset(-0.025f, 1.0f);
+ this.endermanRenderer.getMainModel().render(entityenderman, f, f1, f3, f4, f5, f6);
+ GlStateManager.disablePolygonOffset();
+ DeferredStateManager.setEmissionConstant(0.0f);
+ EntityRenderer.enableLightmapStatic();
+ return;
+ }
> EOF

View File

@ -5,13 +5,59 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 7 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> DELETE 4 @ 4 : 6
> CHANGE 4 : 5 @ 4 : 6
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 2
> INSERT 2 : 3 @ 2
+ import net.minecraft.util.EnumWorldBlockLayer;
> INSERT 25 : 55 @ 25
+
+ if (DeferredStateManager.isInDeferredPass()
+ && iblockstate.getBlock().getBlockLayer() == EnumWorldBlockLayer.TRANSLUCENT) {
+ if (DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entityenderman) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.texCoords2DDirect(1, lx, ly);
+ LayerHeldBlock.this.endermanRenderer.bindTexture(TextureMap.locationBlocksTexture);
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ blockrendererdispatcher.renderBlockBrightness(iblockstate, 1.0F);
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ GlStateManager.popMatrix();
+ GlStateManager.disableRescaleNormal();
+ return;
+ }
+
> INSERT 3 : 4 @ 3
+
> EOF

View File

@ -5,12 +5,24 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 6 @ 2
+ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 3 @ 3 : 4
> DELETE 1 @ 1 : 2
> CHANGE 17 : 19 @ 17 : 18
~ boolean flag = DeferredStateManager.isEnableShadowRender();
~ GlStateManager.cullFace(flag ? GL_BACK : GL_FRONT);
> CHANGE 23 : 24 @ 23 : 24
~ GlStateManager.cullFace(flag ? GL_FRONT : GL_BACK);
> EOF

View File

@ -5,16 +5,64 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 6 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> CHANGE 2 : 4 @ 2 : 3
~ import net.minecraft.client.renderer.EntityRenderer;
~ import net.minecraft.client.renderer.entity.RenderManager;
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
> INSERT 1 : 2 @ 1
+ import net.minecraft.util.MathHelper;
> INSERT 11 : 44 @ 11
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entityslime) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.1f);
+ boolean flag = LayerSlimeGel.this.slimeRenderer.setBrightness(entityslime, partialTicks,
+ LayerSlimeGel.this.shouldCombineTextures());
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ RenderManager.setupLightmapCoords(entityslime, partialTicks);
+ LayerSlimeGel.this.slimeModel
+ .setModelAttributes(LayerSlimeGel.this.slimeRenderer.getMainModel());
+ LayerSlimeGel.this.slimeRenderer.bindTexture(RenderSlime.slimeTextures);
+ LayerSlimeGel.this.slimeModel.render(entityslime, f, f1, f2, f3, f4, f5);
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ if (flag) {
+ LayerSlimeGel.this.slimeRenderer.unsetBrightness();
+ }
+ }
+ });
+ }
+ return;
+ }
> DELETE 2 @ 2 : 3
> DELETE 1 @ 1 : 2
> DELETE 14 @ 14 : 15
> DELETE 5 @ 5 : 6
> EOF

View File

@ -5,11 +5,66 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 4 @ 2 : 4
> CHANGE 2 : 9 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.OpenGlHelper;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
~ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
~ import net.minecraft.client.model.ModelSpider;
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 2
> INSERT 13 : 60 @ 13
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (entityspider.isInvisible()) {
+ if (!DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entityspider) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ LayerSpiderEyes.this.spiderRenderer.bindTexture(SPIDER_EYES);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.1f);
+ DeferredStateManager.setEmissionConstant(0.9f);
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.color(0.5F, 0.5F, 0.5F, 1.0F);
+ GlStateManager.depthMask(false);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.disableCull();
+ ModelSpider eee = (ModelSpider) LayerSpiderEyes.this.spiderRenderer.getMainModel();
+ eee.setLivingAnimations(entityspider, f, f1, f1);
+ eee.render(entityspider, f, f1, f3, f4, f5, f6);
+ GlStateManager.popMatrix();
+ GlStateManager.depthMask(true);
+ GlStateManager.enableCull();
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ return;
+ }
+ this.spiderRenderer.bindTexture(SPIDER_EYES);
+ DeferredStateManager.setEmissionConstant(0.5f);
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.enablePolygonOffset();
+ GlStateManager.doPolygonOffset(-0.025f, 1.0f);
+ this.spiderRenderer.getMainModel().render(entityspider, f, f1, f3, f4, f5, f6);
+ GlStateManager.disablePolygonOffset();
+ DeferredStateManager.setEmissionConstant(0.0f);
+ return;
+ }
> EOF

View File

@ -5,12 +5,74 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 6 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
+ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
> CHANGE 1 : 2 @ 1 : 2
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 2
> DELETE 1 @ 1 : 2
> INSERT 17 : 67 @ 17
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (!DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ DeferredStateManager.forwardCallbackHandler.push(new ShadersRenderPassFuture(entitywither) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ boolean flag = entitywither.isInvisible();
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.5f);
+ DeferredStateManager.setMetalnessConstant(0.2f);
+ DeferredStateManager.setEmissionConstant(0.9f);
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ZERO);
+ GlStateManager.color(0.5F, 0.5F, 0.5F, 1.0F);
+ if (flag) {
+ GlStateManager.depthMask(false);
+ }
+ LayerWitherAura.this.witherRenderer.bindTexture(WITHER_ARMOR);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.matrixMode(5890);
+ GlStateManager.loadIdentity();
+ float f7 = (float) entitywither.ticksExisted + f2;
+ float f8 = MathHelper.cos(f7 * 0.02F) * 3.0F;
+ float f9 = f7 * 0.01F;
+ GlStateManager.translate(f8, f9, 0.0F);
+ GlStateManager.matrixMode(5888);
+ GlStateManager.disableCull();
+ LayerWitherAura.this.witherModel.setLivingAnimations(entitywither, f, f1, f2);
+ LayerWitherAura.this.witherModel.setRotationAngles(f, f1, f2, f3, f4, f5, entitywither);
+ LayerWitherAura.this.witherModel
+ .setModelAttributes(LayerWitherAura.this.witherRenderer.getMainModel());
+ LayerWitherAura.this.witherModel.render(entitywither, f, f1, f3, f4, f5, f6);
+ GlStateManager.matrixMode(5890);
+ GlStateManager.loadIdentity();
+ GlStateManager.matrixMode(5888);
+ GlStateManager.popMatrix();
+ if (flag) {
+ GlStateManager.depthMask(true);
+ }
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ });
+ }
+ return;
+ }
> INSERT 22 : 23 @ 22
+ GlStateManager.depthMask(true);
> EOF

View File

@ -14,25 +14,20 @@
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+
> CHANGE 8 : 20 @ 8 : 19
> CHANGE 8 : 16 @ 8 : 10
~ if (blur != parFlag || mipmap != parFlag2) {
~ this.blur = parFlag;
~ this.mipmap = parFlag2;
~ int i = -1;
~ short short1 = -1;
~ if (parFlag) {
~ i = parFlag2 ? 9987 : 9729;
~ short1 = 9729;
~ } else {
~ i = parFlag2 ? 9986 : 9728;
~ short1 = 9728;
~ }
> CHANGE 1 : 4 @ 1 : 3
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, i);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, short1);
~ setBlurMipmapDirect0(parFlag, parFlag2);
~ }
~ }
~
~ protected void setBlurMipmapDirect0(boolean parFlag, boolean parFlag2) {
> CHANGE 10 : 12 @ 10 : 12
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, i);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, short1);
> EOF

View File

@ -5,8 +5,9 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 4 @ 2
+ import net.lax1dude.eaglercraft.v1_8.internal.IFramebufferGL;
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
> DELETE 1 @ 1 : 3
@ -15,10 +16,14 @@
~ public class TextureClock extends EaglerTextureAtlasSprite {
> CHANGE 41 : 43 @ 41 : 43
> CHANGE 7 : 8 @ 7 : 8
~ public void updateAnimation(IFramebufferGL[] copyColorFramebuffer) {
> CHANGE 33 : 35 @ 33 : 35
~ animationCache.copyFrameLevelsToTex2D(this.frameCounter, this.originX, this.originY, this.width,
~ this.height);
~ this.height, copyColorFramebuffer);
> INSERT 4 : 5 @ 4

View File

@ -5,8 +5,9 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 3 @ 2
> INSERT 2 : 4 @ 2
+ import net.lax1dude.eaglercraft.v1_8.internal.IFramebufferGL;
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
> DELETE 1 @ 1 : 3
@ -15,10 +16,26 @@
~ public class TextureCompass extends EaglerTextureAtlasSprite {
> CHANGE 62 : 64 @ 62 : 64
> CHANGE 9 : 10 @ 9 : 10
~ public void updateAnimation(IFramebufferGL[] copyColorFramebuffer) {
> CHANGE 3 : 4 @ 3 : 4
~ (double) minecraft.thePlayer.rotationYaw, false, false, copyColorFramebuffer);
> CHANGE 1 : 2 @ 1 : 2
~ this.updateCompass((World) null, 0.0D, 0.0D, 0.0D, true, false, copyColorFramebuffer);
> CHANGE 5 : 6 @ 5 : 6
~ boolean parFlag2, IFramebufferGL[] copyColorFramebuffer) {
> CHANGE 40 : 42 @ 40 : 42
~ animationCache.copyFrameLevelsToTex2D(this.frameCounter, this.originX, this.originY, this.width,
~ this.height);
~ this.height, copyColorFramebuffer);
> INSERT 4 : 5 @ 4

View File

@ -5,9 +5,12 @@
# Version: 1.0
# Author: lax1dude
> DELETE 2 @ 2 : 4
> CHANGE 2 : 4 @ 2 : 4
> CHANGE 5 : 12 @ 5 : 11
~ import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
~
> CHANGE 5 : 15 @ 5 : 11
~
~ import com.google.common.collect.Lists;
@ -16,13 +19,17 @@
~ import net.lax1dude.eaglercraft.v1_8.HString;
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.minecraft.client.Minecraft;
> DELETE 6 @ 6 : 8
> CHANGE 13 : 21 @ 13 : 18
> CHANGE 13 : 22 @ 13 : 18
~ int glTex;
~ if (resource.cachedPointer != null) {
~ TextureUtil.bindTexture(((ITextureObject) resource.cachedPointer).getGlTextureId()); // unsafe, lol
~ TextureUtil.bindTexture(glTex = ((ITextureObject) resource.cachedPointer).getGlTextureId()); // unsafe, lol
~ } else {
~ Object object = (ITextureObject) this.mapTextureObjects.get(resource);
~ if (object == null) {
@ -30,10 +37,21 @@
~ this.loadTexture(resource, (ITextureObject) object);
~ }
> CHANGE 1 : 4 @ 1 : 2
> CHANGE 1 : 15 @ 1 : 2
~ resource.cachedPointer = object;
~ TextureUtil.bindTexture(((ITextureObject) object).getGlTextureId());
~ TextureUtil.bindTexture(glTex = ((ITextureObject) object).getGlTextureId());
~ }
~ if (DeferredStateManager.isInDeferredPass()) {
~ TextureMap blocksTex = Minecraft.getMinecraft().getTextureMapBlocks();
~ if (blocksTex != null) {
~ if (blocksTex.getGlTextureId() == glTex) {
~ DeferredStateManager.enableMaterialTexture();
~ GlStateManager.quickBindTexture(GL_TEXTURE2, blocksTex.eaglerPBRMaterialTexture);
~ } else {
~ DeferredStateManager.disableMaterialTexture();
~ }
~ }
~ }
> CHANGE 11 : 12 @ 11 : 12

View File

@ -11,49 +11,260 @@
+ import java.util.Collection;
> INSERT 6 : 15 @ 6
> INSERT 6 : 20 @ 6
+
+ import com.google.common.collect.Lists;
+ import com.google.common.collect.Maps;
+
+ import net.lax1dude.eaglercraft.v1_8.HString;
+ import net.lax1dude.eaglercraft.v1_8.internal.IFramebufferGL;
+ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
+ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ImageData;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.EaglerTextureAtlasSpritePBR;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.texture.PBRTextureMapUtils;
> DELETE 2 @ 2 : 8
> DELETE 9 @ 9 : 11
> CHANGE 5 : 8 @ 5 : 8
> INSERT 1 : 3 @ 1
+ import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*;
+
> CHANGE 4 : 7 @ 4 : 7
~ private final List<EaglerTextureAtlasSprite> listAnimatedSprites;
~ private final Map<String, EaglerTextureAtlasSprite> mapRegisteredSprites;
~ private final Map<String, EaglerTextureAtlasSprite> mapUploadedSprites;
> CHANGE 3 : 6 @ 3 : 4
> CHANGE 3 : 9 @ 3 : 4
~ private final EaglerTextureAtlasSprite missingImage;
~ private final EaglerTextureAtlasSpritePBR missingImagePBR;
~ private int width;
~ private int height;
~ private boolean isEaglerPBRMode = false;
~ public int eaglerPBRMaterialTexture = -1;
> CHANGE 9 : 10 @ 9 : 10
> INSERT 1 : 7 @ 1
+ public static final int _GL_FRAMEBUFFER = 0x8D40;
+ public static final int _GL_COLOR_ATTACHMENT0 = 0x8CE0;
+
+ private IFramebufferGL[] copyColorFramebuffer = null;
+ private IFramebufferGL[] copyMaterialFramebuffer = null;
+
> CHANGE 8 : 10 @ 8 : 9
~ this.missingImage = new EaglerTextureAtlasSprite("missingno");
~ this.missingImagePBR = new EaglerTextureAtlasSpritePBR("missingno");
> DELETE 17 @ 17 : 18
> INSERT 11 : 27 @ 11
+ this.missingImagePBR.setIconWidth(16);
+ this.missingImagePBR.setIconHeight(16);
+ int[][][] aint2 = new int[3][this.mipmapLevels + 1][];
+ aint2[0][0] = aint;
+ int[] missingNormals = new int[256];
+ for (int i = 0; i < missingNormals.length; ++i) {
+ missingNormals[i] = 0xFF7F7F;
+ }
+ aint2[1][0] = missingNormals;
+ int[] missingMaterial = new int[256];
+ for (int i = 0; i < missingMaterial.length; ++i) {
+ missingMaterial[i] = 0x00000077;
+ }
+ aint2[2][0] = missingMaterial;
+ this.missingImagePBR.setFramesTextureDataPBR(new List[] { Lists.newArrayList(new int[][][] { aint2[0] }),
+ Lists.newArrayList(new int[][][] { aint2[1] }), Lists.newArrayList(new int[][][] { aint2[2] }) });
> DELETE 6 @ 6 : 7
> INSERT 3 : 4 @ 3
+ destroyAnimationCaches();
> CHANGE 16 : 17 @ 16 : 17
> INSERT 7 : 27 @ 7
+ public void deleteGlTexture() {
+ super.deleteGlTexture();
+ if (eaglerPBRMaterialTexture != -1) {
+ GlStateManager.deleteTexture(eaglerPBRMaterialTexture);
+ eaglerPBRMaterialTexture = -1;
+ }
+ if (copyColorFramebuffer != null) {
+ for (int i = 0; i < copyColorFramebuffer.length; ++i) {
+ _wglDeleteFramebuffer(copyColorFramebuffer[i]);
+ }
+ copyColorFramebuffer = null;
+ }
+ if (copyMaterialFramebuffer != null) {
+ for (int i = 0; i < copyMaterialFramebuffer.length; ++i) {
+ _wglDeleteFramebuffer(copyMaterialFramebuffer[i]);
+ }
+ copyMaterialFramebuffer = null;
+ }
+ }
+
> INSERT 8 : 43 @ 8
+ if (copyColorFramebuffer != null) {
+ for (int l = 0; l < copyColorFramebuffer.length; ++l) {
+ _wglDeleteFramebuffer(copyColorFramebuffer[l]);
+ }
+ copyColorFramebuffer = null;
+ }
+
+ if (isEaglerPBRMode) {
+ if (eaglerPBRMaterialTexture == -1) {
+ eaglerPBRMaterialTexture = GlStateManager.generateTexture();
+ }
+ if (copyMaterialFramebuffer == null) {
+ GlStateManager.bindTexture(eaglerPBRMaterialTexture);
+ copyMaterialFramebuffer = new IFramebufferGL[this.mipmapLevels + 1];
+ for (int l = 0; l < copyMaterialFramebuffer.length; ++l) {
+ copyMaterialFramebuffer[l] = _wglCreateFramebuffer();
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, copyMaterialFramebuffer[l]);
+ _wglFramebufferTexture2D(_GL_FRAMEBUFFER, _GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ EaglercraftGPU.getNativeTexture(eaglerPBRMaterialTexture), l);
+ }
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, null);
+ }
+ } else {
+ if (eaglerPBRMaterialTexture != -1) {
+ GlStateManager.deleteTexture(eaglerPBRMaterialTexture);
+ eaglerPBRMaterialTexture = -1;
+ }
+ if (copyMaterialFramebuffer != null) {
+ for (int l = 0; l < copyMaterialFramebuffer.length; ++l) {
+ _wglDeleteFramebuffer(copyMaterialFramebuffer[l]);
+ }
+ copyMaterialFramebuffer = null;
+ }
+ }
+
> CHANGE 1 : 2 @ 1 : 2
~ EaglerTextureAtlasSprite textureatlassprite = (EaglerTextureAtlasSprite) entry.getValue();
> CHANGE 5 : 6 @ 5 : 6
> INSERT 3 : 108 @ 3
+ if (isEaglerPBRMode) {
+ try {
+ IResource iresource = resourceManager.getResource(resourcelocation1);
+ ImageData[] abufferedimageColor = new ImageData[1 + this.mipmapLevels];
+ ImageData[] abufferedimageNormal = new ImageData[1 + this.mipmapLevels];
+ ImageData[] abufferedimageMaterial = new ImageData[1 + this.mipmapLevels];
+ abufferedimageColor[0] = TextureUtil.readBufferedImage(iresource.getInputStream());
+ abufferedimageNormal[0] = PBRTextureMapUtils.locateCompanionTexture(resourceManager, iresource,
+ "_n");
+ abufferedimageMaterial[0] = PBRTextureMapUtils.locateCompanionTexture(resourceManager, iresource,
+ "_s");
+ boolean dontAnimateNormals = false;
+ boolean dontAnimateMaterial = false;
+ if (abufferedimageNormal[0] == null) {
+ abufferedimageNormal[0] = PBRTextureMapUtils.defaultNormalsTexture;
+ dontAnimateNormals = true;
+ }
+ if (abufferedimageMaterial[0] == null) {
+ abufferedimageMaterial[0] = PBRTextureMapUtils.generateMaterialTextureFor(
+ ((EaglerTextureAtlasSprite) (entry.getValue())).getIconName());
+ dontAnimateMaterial = true;
+ }
+ PBRTextureMapUtils.unifySizes(0, abufferedimageColor, abufferedimageNormal, abufferedimageMaterial);
+
+ TextureMetadataSection texturemetadatasection = (TextureMetadataSection) iresource
+ .getMetadata("texture");
+ if (texturemetadatasection != null) {
+ List list = texturemetadatasection.getListMipmaps();
+ if (!list.isEmpty()) {
+ int l = abufferedimageColor[0].width;
+ int i1 = abufferedimageColor[0].height;
+ if (MathHelper.roundUpToPowerOfTwo(l) != l || MathHelper.roundUpToPowerOfTwo(i1) != i1) {
+ throw new RuntimeException(
+ "Unable to load extra miplevels, source-texture is not power of two");
+ }
+ }
+
+ Iterator iterator = list.iterator();
+
+ while (iterator.hasNext()) {
+ int i2 = ((Integer) iterator.next()).intValue();
+ if (i2 > 0 && i2 < abufferedimageColor.length - 1 && abufferedimageColor[i2] == null) {
+ ResourceLocation resourcelocation2 = this.completeResourceLocation(resourcelocation,
+ i2);
+
+ try {
+ IResource mipLevelResource = resourceManager.getResource(resourcelocation2);
+ abufferedimageColor[i2] = TextureUtil
+ .readBufferedImage(mipLevelResource.getInputStream());
+ abufferedimageNormal[i2] = PBRTextureMapUtils
+ .locateCompanionTexture(resourceManager, mipLevelResource, "_n");
+ abufferedimageMaterial[i2] = PBRTextureMapUtils
+ .locateCompanionTexture(resourceManager, mipLevelResource, "_s");
+ if (abufferedimageNormal[i2] == null) {
+ abufferedimageNormal[i2] = PBRTextureMapUtils.defaultNormalsTexture;
+ }
+ if (abufferedimageMaterial[i2] == null) {
+ abufferedimageMaterial[i2] = PBRTextureMapUtils.generateMaterialTextureFor(
+ ((EaglerTextureAtlasSprite) (entry.getValue())).getIconName());
+ }
+ PBRTextureMapUtils.unifySizes(i2, abufferedimageColor, abufferedimageNormal,
+ abufferedimageMaterial);
+ if ((abufferedimageColor[0].width >> i2) != abufferedimageColor[i2].width) {
+ throw new IOException("Mipmap level " + i2 + " is the wrong size, should be "
+ + (abufferedimageColor[0].width >> i2) + " pixels");
+ }
+ } catch (Throwable exc) {
+ logger.error("Unable to load miplevel {} from: {}", i2, resourcelocation2);
+ logger.error(exc);
+ }
+ }
+ }
+ }
+
+ AnimationMetadataSection animationmetadatasection = (AnimationMetadataSection) iresource
+ .getMetadata("animation");
+ textureatlassprite.loadSpritePBR(
+ new ImageData[][] { abufferedimageColor, abufferedimageNormal, abufferedimageMaterial },
+ animationmetadatasection, dontAnimateNormals, dontAnimateMaterial);
+ } catch (RuntimeException runtimeexception) {
+ logger.error("Unable to parse metadata from " + resourcelocation1);
+ logger.error(runtimeexception);
+ continue;
+ } catch (IOException ioexception1) {
+ logger.error("Using missing texture, unable to load " + resourcelocation1);
+ logger.error(ioexception1);
+ continue;
+ }
+
+ j = Math.min(j, Math.min(textureatlassprite.getIconWidth(), textureatlassprite.getIconHeight()));
+ int l1 = Math.min(Integer.lowestOneBit(textureatlassprite.getIconWidth()),
+ Integer.lowestOneBit(textureatlassprite.getIconHeight()));
+ if (l1 < k) {
+ logger.warn("Texture {} with size {}x{} limits mip level from {} to {}",
+ new Object[] { resourcelocation1, Integer.valueOf(textureatlassprite.getIconWidth()),
+ Integer.valueOf(textureatlassprite.getIconHeight()),
+ Integer.valueOf(MathHelper.calculateLogBaseTwo(k)),
+ Integer.valueOf(MathHelper.calculateLogBaseTwo(l1)) });
+ k = l1;
+ }
+
+ stitcher.addSprite(textureatlassprite);
+ continue;
+ }
+
> CHANGE 2 : 3 @ 2 : 3
~ ImageData[] abufferedimage = new ImageData[1 + this.mipmapLevels];
@ -81,18 +292,70 @@
~ for (final EaglerTextureAtlasSprite textureatlassprite1 : this.mapRegisteredSprites.values()) {
> CHANGE 40 : 44 @ 40 : 41
> CHANGE 25 : 32 @ 25 : 27
~ if (isEaglerPBRMode) {
~ this.missingImagePBR.generateMipmaps(this.mipmapLevels);
~ stitcher.addSprite(this.missingImagePBR);
~ } else {
~ this.missingImage.generateMipmaps(this.mipmapLevels);
~ stitcher.addSprite(this.missingImage);
~ }
> INSERT 11 : 28 @ 11
+ if (isEaglerPBRMode) {
+ TextureUtil.allocateTextureImpl(eaglerPBRMaterialTexture, this.mipmapLevels, stitcher.getCurrentWidth(),
+ stitcher.getCurrentHeight() * 2);
+ }
+
+ TextureUtil.bindTexture(this.glTextureId);
+
+ copyColorFramebuffer = new IFramebufferGL[this.mipmapLevels + 1];
+ for (int l = 0; l < copyColorFramebuffer.length; ++l) {
+ copyColorFramebuffer[l] = _wglCreateFramebuffer();
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, copyColorFramebuffer[l]);
+ _wglFramebufferTexture2D(_GL_FRAMEBUFFER, _GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ EaglercraftGPU.getNativeTexture(this.glTextureId), l);
+ }
+
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, null);
+
> CHANGE 2 : 7 @ 2 : 3
~ width = stitcher.getCurrentWidth();
~ height = stitcher.getCurrentHeight();
~
~ for (EaglerTextureAtlasSprite textureatlassprite2 : stitcher.getStichSlots()) {
~ List<EaglerTextureAtlasSprite> spriteList = stitcher.getStichSlots();
~ for (EaglerTextureAtlasSprite textureatlassprite2 : spriteList) {
> CHANGE 21 : 22 @ 21 : 22
> INSERT 5 : 6 @ 5
+ TextureUtil.bindTexture(this.glTextureId);
> INSERT 3 : 13 @ 3
+ if (isEaglerPBRMode) {
+ TextureUtil.bindTexture(eaglerPBRMaterialTexture);
+ int[][][] pixels = ((EaglerTextureAtlasSpritePBR) textureatlassprite2).getFramePBRTextureData(0);
+ TextureUtil.uploadTextureMipmap(pixels[1], textureatlassprite2.getIconWidth(),
+ textureatlassprite2.getIconHeight(), textureatlassprite2.getOriginX(),
+ textureatlassprite2.getOriginY(), false, false);
+ TextureUtil.uploadTextureMipmap(pixels[2], textureatlassprite2.getIconWidth(),
+ textureatlassprite2.getIconHeight(), textureatlassprite2.getOriginX(),
+ textureatlassprite2.getOriginY() + height, false, false);
+ }
> CHANGE 13 : 14 @ 13 : 14
~ for (EaglerTextureAtlasSprite textureatlassprite3 : (Collection<EaglerTextureAtlasSprite>) hashmap.values()) {
> CHANGE 8 : 10 @ 8 : 10
> INSERT 3 : 4 @ 3
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, null);
> CHANGE 5 : 7 @ 5 : 7
~ HString.format("%s/%s%s", new Object[] { this.basePath, location.getResourcePath(), ".png" }))
~ : new ResourceLocation(location.getResourceDomain(), HString.format("%s/mipmaps/%s.%d%s",
@ -102,11 +365,30 @@
~ public EaglerTextureAtlasSprite getAtlasSprite(String iconName) {
~ EaglerTextureAtlasSprite textureatlassprite = (EaglerTextureAtlasSprite) this.mapUploadedSprites.get(iconName);
> CHANGE 10 : 11 @ 10 : 11
> CHANGE 1 : 2 @ 1 : 2
~ textureatlassprite = isEaglerPBRMode ? missingImagePBR : missingImage;
> CHANGE 6 : 13 @ 6 : 7
~ if (isEaglerPBRMode) {
~ for (EaglerTextureAtlasSprite textureatlassprite : this.listAnimatedSprites) {
~ textureatlassprite.updateAnimationPBR(copyColorFramebuffer, copyMaterialFramebuffer, height);
~ }
~ _wglBindFramebuffer(_GL_FRAMEBUFFER, null);
~ return;
~ }
> CHANGE 1 : 3 @ 1 : 3
~ for (EaglerTextureAtlasSprite textureatlassprite : this.listAnimatedSprites) {
~ textureatlassprite.updateAnimation(copyColorFramebuffer);
> CHANGE 5 : 12 @ 5 : 6
> INSERT 2 : 3 @ 2
+ _wglBindFramebuffer(_GL_FRAMEBUFFER, null);
> CHANGE 2 : 9 @ 2 : 3
~ private void destroyAnimationCaches() {
~ for (EaglerTextureAtlasSprite textureatlassprite : this.listAnimatedSprites) {
@ -121,15 +403,20 @@
~ EaglerTextureAtlasSprite textureatlassprite = (EaglerTextureAtlasSprite) this.mapRegisteredSprites
~ .get(location);
> CHANGE 1 : 2 @ 1 : 2
> CHANGE 1 : 6 @ 1 : 2
~ textureatlassprite = EaglerTextureAtlasSprite.makeAtlasSprite(location);
~ if (isEaglerPBRMode) {
~ textureatlassprite = EaglerTextureAtlasSpritePBR.makeAtlasSprite(location);
~ } else {
~ textureatlassprite = EaglerTextureAtlasSprite.makeAtlasSprite(location);
~ }
> CHANGE 15 : 16 @ 15 : 16
> CHANGE 15 : 17 @ 15 : 17
~ public EaglerTextureAtlasSprite getMissingSprite() {
~ return isEaglerPBRMode ? missingImagePBR : missingImage;
> INSERT 2 : 11 @ 2
> INSERT 1 : 23 @ 1
+
+ public int getWidth() {
@ -140,5 +427,18 @@
+ return height;
+ }
+
+ public void setEnablePBREagler(boolean enable) {
+ isEaglerPBRMode = enable;
+ }
+
+ public void setBlurMipmapDirect0(boolean parFlag, boolean parFlag2) {
+ super.setBlurMipmapDirect0(parFlag, parFlag2);
+ if (isEaglerPBRMode && eaglerPBRMaterialTexture != -1) {
+ GlStateManager.setActiveTexture(33986);
+ GlStateManager.bindTexture(eaglerPBRMaterialTexture);
+ super.setBlurMipmapDirect0(parFlag, parFlag2);
+ GlStateManager.setActiveTexture(33984);
+ }
+ }
> EOF

View File

@ -53,12 +53,11 @@
~ EaglercraftGPU.glTexParameterf(GL_TEXTURE_2D, '\u813b', (float) parInt2);
~ // EaglercraftGPU.glTexParameterf(GL_TEXTURE_2D, '\u8501', 0.0F);
> CHANGE 3 : 5 @ 3 : 4
> CHANGE 1 : 2 @ 1 : 6
~ EaglercraftGPU.glTexImage2D(GL_TEXTURE_2D, i, GL_RGBA, parInt3 >> i, parInt4 >> i, 0, GL_RGBA,
~ GL_UNSIGNED_BYTE, (IntBuffer) null);
~ EaglercraftGPU.glTexStorage2D(GL_TEXTURE_2D, parInt2 + 1, GL_RGBA8, parInt3, parInt4);
> CHANGE 4 : 5 @ 4 : 5
> CHANGE 2 : 3 @ 2 : 3
~ public static int uploadTextureImageSub(int textureId, ImageData parBufferedImage, int parInt2, int parInt3,

View File

@ -5,20 +5,23 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 6 @ 2
> INSERT 2 : 7 @ 2
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.NameTagRenderer;
> DELETE 3 @ 3 : 4
> DELETE 2 @ 2 : 3
> DELETE 4 @ 4 : 5
> DELETE 4 @ 4 : 6
> DELETE 16 @ 16 : 17
> DELETE 12 @ 12 : 13
> DELETE 2 @ 2 : 3
> INSERT 36 : 38 @ 36
@ -30,17 +33,33 @@
+ GlStateManager.enableLighting();
+ GlStateManager.enableColorMaterial();
> DELETE 33 @ 33 : 54
> CHANGE 33 : 37 @ 33 : 52
~ boolean emissive = itemFrame.eaglerEmissiveFlag;
~ itemFrame.eaglerEmissiveFlag = false;
~ if (emissive) {
~ DeferredStateManager.setEmissionConstant(1.0f);
> DELETE 1 @ 1 : 2
> CHANGE 5 : 6 @ 5 : 6
~ GlStateManager.pushLightCoords();
> CHANGE 3 : 4 @ 3 : 7
> CHANGE 3 : 6 @ 3 : 6
~ GlStateManager.popLightCoords();
~ if (emissive) {
~ DeferredStateManager.setEmissionConstant(0.0f);
> CHANGE 21 : 22 @ 21 : 22
> INSERT 19 : 23 @ 19
+ if (DeferredStateManager.isInDeferredPass()) {
+ NameTagRenderer.renderNameTag(entityitemframe, null, d0, d1, d2, -69);
+ return;
+ }
> CHANGE 3 : 4 @ 3 : 4
~ EaglercraftGPU.glNormal3f(0.0F, 1.0F, 0.0F);

View File

@ -5,20 +5,173 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 3 : 7 @ 3 : 4
> CHANGE 3 : 11 @ 3 : 4
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
~ import net.lax1dude.eaglercraft.v1_8.vector.Matrix4f;
~ import net.minecraft.client.renderer.EntityRenderer;
> DELETE 1 @ 1 : 3
> DELETE 4 @ 4 : 5
> CHANGE 19 : 21 @ 19 : 21
> INSERT 6 : 8 @ 6
~ EaglercraftGPU.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 10497.0F);
~ EaglercraftGPU.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 10497.0F);
+ if (DeferredStateManager.isEnableShadowRender())
+ return;
> INSERT 3 : 4 @ 3
+ boolean deferred = DeferredStateManager.isInDeferredPass();
> CHANGE 10 : 18 @ 10 : 12
~ if (deferred) {
~ DeferredStateManager.setDefaultMaterialConstants();
~ DeferredStateManager.setRoughnessConstant(0.3f);
~ DeferredStateManager.setMetalnessConstant(0.3f);
~ DeferredStateManager.setEmissionConstant(0.9f);
~ }
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 10497);
~ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 10497);
> CHANGE 24 : 26 @ 24 : 25
~ worldrenderer.begin(7, deferred ? DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL
~ : DefaultVertexFormats.POSITION_TEX_COLOR);
> INSERT 6 : 8 @ 6
+ if (deferred)
+ worldrenderer.genNormals(true, 0);
> INSERT 8 : 10 @ 8
+ if (deferred)
+ worldrenderer.genNormals(true, 0);
> INSERT 8 : 10 @ 8
+ if (deferred)
+ worldrenderer.genNormals(true, 0);
> INSERT 6 : 8 @ 6
+ if (deferred)
+ worldrenderer.genNormals(true, 0);
> INSERT 1 : 10 @ 1
+
+ if (deferred) {
+ DeferredStateManager.setDefaultMaterialConstants();
+ GlStateManager.enableLighting();
+ GlStateManager.depthMask(true);
+ i = k;
+ continue;
+ }
+
> INSERT 55 : 149 @ 55
+ if (deferred && list.size() > 0) {
+ if (DeferredStateManager.forwardCallbackHandler != null) {
+ final Matrix4f mat = new Matrix4f(GlStateManager.getModelViewReference());
+ final float lx = GlStateManager.getTexCoordX(1), ly = GlStateManager.getTexCoordY(1);
+ DeferredStateManager.forwardCallbackHandler
+ .push(new ShadersRenderPassFuture((float) d0, (float) d1, (float) d2, f) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ TileEntityBeaconRenderer.this.bindTexture(beaconBeam);
+ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 10497);
+ EaglercraftGPU.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 10497);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.2f);
+ DeferredStateManager.setEmissionConstant(0.6f);
+ GlStateManager.depthMask(false);
+ GlStateManager.pushMatrix();
+ GlStateManager.loadMatrix(mat);
+ GlStateManager.texCoords2DDirect(1, lx, ly);
+ EntityRenderer.enableLightmapStatic();
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ List list = tileentitybeacon.getBeamSegments();
+ int i = 0;
+
+ for (int j = 0; j < list.size(); ++j) {
+ TileEntityBeacon.BeamSegment tileentitybeacon$beamsegment = (TileEntityBeacon.BeamSegment) list
+ .get(j);
+ int k = i + tileentitybeacon$beamsegment.getHeight();
+
+ double d3 = (double) tileentitybeacon.getWorld().getTotalWorldTime()
+ + (double) f;
+ double d4 = MathHelper.func_181162_h(
+ -d3 * 0.2D - (double) MathHelper.floor_double(-d3 * 0.1D));
+ float f2 = tileentitybeacon$beamsegment.getColors()[0];
+ float f3 = tileentitybeacon$beamsegment.getColors()[1];
+ float f4 = tileentitybeacon$beamsegment.getColors()[2];
+
+ double d15 = 0.0D;
+ double d16 = 1.0D;
+ double d17 = -1.0D + d4;
+
+ d15 = -1.0D + d4;
+ d16 = (double) ((float) tileentitybeacon$beamsegment.getHeight() * f1) + d15;
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR_NORMAL);
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) k, d2 + 0.2D).tex(1.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) i, d2 + 0.2D).tex(1.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) i, d2 + 0.2D).tex(0.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) k, d2 + 0.2D).tex(0.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.genNormals(true, 0);
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) k, d2 + 0.8D).tex(1.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) i, d2 + 0.8D).tex(1.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) i, d2 + 0.8D).tex(0.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) k, d2 + 0.8D).tex(0.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.genNormals(true, 0);
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) k, d2 + 0.2D).tex(1.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) i, d2 + 0.2D).tex(1.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) i, d2 + 0.8D).tex(0.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.8D, d1 + (double) k, d2 + 0.8D).tex(0.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.genNormals(true, 0);
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) k, d2 + 0.8D).tex(1.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) i, d2 + 0.8D).tex(1.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) i, d2 + 0.2D).tex(0.0D, d15)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.pos(d0 + 0.2D, d1 + (double) k, d2 + 0.2D).tex(0.0D, d16)
+ .color(f2, f3, f4, 0.125F).endVertex();
+ worldrenderer.genNormals(true, 0);
+ tessellator.draw();
+ i = k;
+ }
+ GlStateManager.popMatrix();
+ EntityRenderer.disableLightmapStatic();
+ GlStateManager.depthMask(true);
+ }
+ });
+ }
+ }
+
> EOF

View File

@ -12,11 +12,7 @@
> DELETE 4 @ 4 : 6
> INSERT 49 : 50 @ 49
+
> DELETE 7 @ 7 : 9
> DELETE 56 @ 56 : 58
> INSERT 2 : 4 @ 2

View File

@ -5,13 +5,15 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 2 : 7 @ 2 : 4
> CHANGE 2 : 9 @ 2 : 4
~ import net.lax1dude.eaglercraft.v1_8.internal.buffer.FloatBuffer;
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~
~ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ShadersRenderPassFuture;
> DELETE 3 @ 3 : 4
@ -21,7 +23,54 @@
~ private static final EaglercraftRandom field_147527_e = new EaglercraftRandom(31100L);
> CHANGE 34 : 35 @ 34 : 35
> INSERT 3 : 31 @ 3
+ if (DeferredStateManager.isInDeferredPass()) {
+ if (!DeferredStateManager.isInParaboloidPass() && !DeferredStateManager.isEnableShadowRender()
+ && DeferredStateManager.forwardCallbackHandler != null) {
+ DeferredStateManager.forwardCallbackHandler
+ .push(new ShadersRenderPassFuture((float) d0, (float) d1, (float) d2, var8) {
+ @Override
+ public void draw(PassType pass) {
+ if (pass == PassType.MAIN) {
+ DeferredStateManager.reportForwardRenderObjectPosition2(x, y, z);
+ }
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setRoughnessConstant(0.3f);
+ DeferredStateManager.setMetalnessConstant(0.3f);
+ DeferredStateManager.setEmissionConstant(0.9f);
+ renderTileEntityAt0(var1, d0, d1, d2, var8, var9);
+ DeferredStateManager.setDefaultMaterialConstants();
+ DeferredStateManager.setHDRTranslucentPassBlendFunc();
+ }
+ });
+ }
+ return;
+ }
+ GlStateManager.enableBlend();
+ renderTileEntityAt0(var1, d0, d1, d2, var8, var9);
+ GlStateManager.disableBlend();
+ }
+
+ private void renderTileEntityAt0(TileEntityEndPortal var1, double d0, double d1, double d2, float var8, int var9) {
> CHANGE 17 : 22 @ 17 : 19
~ if (DeferredStateManager.isInDeferredPass()) {
~ DeferredStateManager.setHDRTranslucentPassBlendFunc();
~ } else {
~ GlStateManager.blendFunc(770, 771);
~ }
> CHANGE 7 : 12 @ 7 : 9
~ if (DeferredStateManager.isInDeferredPass()) {
~ GlStateManager.tryBlendFuncSeparate(GL_ONE, GL_ONE, GL_ZERO, GL_ZERO);
~ } else {
~ GlStateManager.blendFunc(1, 1);
~ }
> CHANGE 3 : 4 @ 3 : 4
~ float f7 = (float) (-(d1 + (double) f3 - 1.25));
@ -29,7 +78,7 @@
~ GlStateManager.enableTexGen();
> CHANGE 34 : 35 @ 34 : 38
> CHANGE 33 : 34 @ 33 : 38
~ GlStateManager.disableTexGen();

View File

@ -5,10 +5,12 @@
# Version: 1.0
# Author: lax1dude
> INSERT 2 : 4 @ 2
> INSERT 2 : 6 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.VertexFormat;
+ import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 7 @ 7 : 8
@ -16,4 +18,14 @@
> DELETE 1 @ 1 : 2
> CHANGE 28 : 30 @ 28 : 29
~ worldrenderer.begin(7, DeferredStateManager.isDeferredRenderer() ? VertexFormat.BLOCK_SHADERS
~ : DefaultVertexFormats.BLOCK);
> INSERT 38 : 40 @ 38
+ GlStateManager.enableCull();
+ GlStateManager.disableBlend();
> EOF

View File

@ -5,11 +5,19 @@
# Version: 1.0
# Author: lax1dude
> INSERT 3 : 6 @ 3
> INSERT 2 : 5 @ 2
+ import static net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.ExtGLEnums.*;
+ import static net.lax1dude.eaglercraft.v1_8.internal.PlatformOpenGL.*;
+
> INSERT 1 : 6 @ 1
+
+ import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
+ import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredPipeline;
> DELETE 4 @ 4 : 6
@ -19,4 +27,19 @@
~ EaglercraftGPU.glNormal3f(0.0F, 0.0F, -1.0F * f3);
> INSERT 3 : 8 @ 3
+ if (DeferredStateManager.isInDeferredPass()) {
+ _wglDrawBuffers(_GL_COLOR_ATTACHMENT0);
+ GlStateManager.colorMask(true, true, true, false);
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
+ }
> INSERT 15 : 19 @ 15
+ if (DeferredStateManager.isInDeferredPass()) {
+ _wglDrawBuffers(EaglerDeferredPipeline.instance.gBufferDrawBuffers);
+ GlStateManager.colorMask(true, true, true, true);
+ }
> EOF

View File

@ -7,13 +7,13 @@
> DELETE 2 @ 2 : 8
> INSERT 6 : 7 @ 6
> CHANGE 4 : 5 @ 4 : 7
+ import java.nio.charset.StandardCharsets;
~ import java.nio.charset.StandardCharsets;
> DELETE 8 @ 8 : 9
> DELETE 7 @ 7 : 8
> INSERT 1 : 13 @ 1
> INSERT 1 : 17 @ 1
+ import java.util.Set;
+
@ -27,6 +27,10 @@
+ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
+ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
+ import net.lax1dude.eaglercraft.v1_8.minecraft.EaglerTextureAtlasSprite;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.BlockVertexIDs;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.VertexMarkerState;
+ import net.minecraft.client.Minecraft;
> DELETE 9 @ 9 : 10
@ -87,7 +91,39 @@
~ + Item.itemRegistry.getNameForObject(item) + "\'");
~ LOGGER.warn(exception);
> CHANGE 188 : 189 @ 188 : 189
> INSERT 132 : 133 @ 132
+ boolean deferred = Minecraft.getMinecraft().gameSettings.shaders;
> INSERT 9 : 34 @ 9
+ if (deferred) {
+ ModelBlock currentBlockModel = modelblock;
+ ResourceLocation currentResourceLocation = modelblockdefinition$variant.getModelLocation();
+ Integer blockId = null;
+ do {
+ blockId = BlockVertexIDs.modelToID.get(currentResourceLocation.toString());
+ if (blockId != null) {
+ break;
+ }
+ currentResourceLocation = currentBlockModel.getParentLocation();
+ currentBlockModel = models.get(currentResourceLocation);
+ } while (currentBlockModel != null);
+ if (blockId != null) {
+ VertexMarkerState.markId = blockId.intValue();
+ try {
+ weightedbakedmodel$builder.add(
+ this.bakeModel(modelblock, modelblockdefinition$variant.getRotation(),
+ modelblockdefinition$variant.isUvLocked()),
+ modelblockdefinition$variant.getWeight());
+ } finally {
+ VertexMarkerState.markId = 0;
+ }
+ continue;
+ }
+ }
> CHANGE 47 : 48 @ 47 : 48
~ for (ModelResourceLocation modelresourcelocation : (List<ModelResourceLocation>) arraylist) {

View File

@ -15,7 +15,7 @@
> DELETE 1 @ 1 : 3
> INSERT 3 : 21 @ 3
> INSERT 3 : 22 @ 3
+
+ import org.json.JSONArray;
@ -35,6 +35,7 @@
+ import net.lax1dude.eaglercraft.v1_8.internal.KeyboardConstants;
+ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
+ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.EaglerDeferredConfig;
> DELETE 5 @ 5 : 7
@ -44,8 +45,9 @@
> DELETE 1 @ 1 : 9
> CHANGE 23 : 26 @ 23 : 26
> CHANGE 22 : 26 @ 22 : 26
~ public int limitFramerate = 260;
~ public int clouds = 1;
~ public boolean fancyGraphics = false;
~ public int ambientOcclusion = 0;
@ -54,7 +56,9 @@
> DELETE 1 @ 1 : 2
> CHANGE 36 : 37 @ 36 : 37
> DELETE 17 @ 17 : 28
> CHANGE 8 : 9 @ 8 : 9
~ public KeyBinding keyBindSprint = new KeyBinding("key.sprint", KeyboardConstants.KEY_R, "key.categories.movement");
@ -73,7 +77,7 @@
~ public int guiScale = 3;
> INSERT 3 : 12 @ 3
> INSERT 3 : 16 @ 3
+ public boolean hudFps = true;
+ public boolean hudCoords = true;
@ -84,6 +88,10 @@
+ public boolean chunkFix = true;
+ public boolean fog = true;
+ public int fxaa = 0;
+ public boolean shaders = false;
+ public boolean shadersAODisable = false;
+ public EaglerDeferredConfig deferredShaderConf = new EaglerDeferredConfig();
+ public int fastMath = 1;
> CHANGE 1 : 2 @ 1 : 2
@ -113,18 +121,18 @@
~ : HString.format("%c", new Object[] { Character.valueOf((char) (parInt1 - 256)) })
> DELETE 83 @ 83 : 84
> DELETE 76 @ 76 : 99
> DELETE 4 @ 4 : 5
> INSERT 45 : 47 @ 45
> INSERT 35 : 37 @ 35
+ this.mc.loadingScreen.eaglerShow(I18n.format("resourcePack.load.refreshing"),
+ I18n.format("resourcePack.load.pleaseWait"));
> DELETE 58 @ 58 : 75
> DELETE 18 @ 18 : 38
> INSERT 13 : 53 @ 13
> DELETE 20 @ 20 : 37
> INSERT 13 : 57 @ 13
+ if (parOptions == GameSettings.Options.HUD_FPS) {
+ this.hudFps = !this.hudFps;
@ -166,10 +174,20 @@
+ this.mc.toggleFullscreen();
+ }
+
+ if (parOptions == GameSettings.Options.FAST_MATH) {
+ this.fastMath = (this.fastMath + parInt1) % 3;
+ }
+
> DELETE 54 @ 54 : 60
> CHANGE 23 : 24 @ 23 : 34
> INSERT 12 : 30 @ 12
~ : 0.0F)))))))))));
> DELETE 20 @ 20 : 26
> DELETE 2 @ 2 : 4
> INSERT 8 : 26 @ 8
+ case HUD_COORDS:
+ return this.hudCoords;
@ -226,7 +244,9 @@
~ + "%")
~ : "yee"))))))))))));
> INSERT 28 : 36 @ 28
> DELETE 11 @ 11 : 19
> INSERT 9 : 19 @ 9
+ } else if (parOptions == GameSettings.Options.FXAA) {
+ if (this.fxaa == 0) {
@ -236,6 +256,8 @@
+ } else {
+ return s + I18n.format("options.off");
+ }
+ } else if (parOptions == GameSettings.Options.FAST_MATH) {
+ return s + I18n.format("options.fastMath." + this.fastMath);
> CHANGE 7 : 9 @ 7 : 8
@ -269,52 +291,99 @@
> DELETE 4 @ 4 : 8
> INSERT 116 : 153 @ 116
> CHANGE 52 : 54 @ 52 : 54
+ if (astring[0].equals("hudFps")) {
+ this.hudFps = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("hudWorld")) {
+ this.hudWorld = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("hudCoords")) {
+ this.hudCoords = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("hudPlayer")) {
+ this.hudPlayer = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("hudStats")) {
+ this.hudStats = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("hud24h")) {
+ this.hud24h = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("chunkFix")) {
+ this.chunkFix = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("fog")) {
+ this.fog = astring[1].equals("true");
+ }
+
+ if (astring[0].equals("fxaa")) {
+ this.fxaa = (astring[1].equals("true") || astring[1].equals("false")) ? 0
+ : Integer.parseInt(astring[1]);
+ }
+
~ if (astring[0].equals("forceUnicodeFont")) {
~ this.forceUnicodeFont = astring[1].equals("true");
> INSERT 6 : 8 @ 6
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("allowBlockAlternatives")) {
~ this.allowBlockAlternatives = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("reducedDebugInfo")) {
~ this.reducedDebugInfo = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("useNativeTransport")) {
~ this.field_181150_U = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("entityShadows")) {
~ this.field_181151_V = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hudFps")) {
~ this.hudFps = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hudWorld")) {
~ this.hudWorld = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hudCoords")) {
~ this.hudCoords = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hudPlayer")) {
~ this.hudPlayer = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hudStats")) {
~ this.hudStats = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("hud24h")) {
~ this.hud24h = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("chunkFix")) {
~ this.chunkFix = astring[1].equals("true");
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("fog")) {
~ this.fog = astring[1].equals("true");
> CHANGE 2 : 5 @ 2 : 4
~ if (astring[0].equals("fxaa")) {
~ this.fxaa = (astring[1].equals("true") || astring[1].equals("false")) ? 0
~ : Integer.parseInt(astring[1]);
> CHANGE 2 : 4 @ 2 : 4
~ if (astring[0].equals("fastMath")) {
~ this.fastMath = Integer.parseInt(astring[1]);
> DELETE 2 @ 2 : 6
> INSERT 6 : 12 @ 6
+ if (astring[0].equals("shaders")) {
+ this.shaders = astring[1].equals("true");
+ }
+
+ Keyboard.setFunctionKeyModifier(keyBindFunction.getKeyCode());
+
> DELETE 17 @ 17 : 18
> INSERT 11 : 13 @ 11
+
+ deferredShaderConf.readOption(astring[0], astring[1]);
> DELETE 6 @ 6 : 7
> CHANGE 12 : 14 @ 12 : 13
@ -330,7 +399,9 @@
> DELETE 1 @ 1 : 2
> INSERT 29 : 38 @ 29
> DELETE 13 @ 13 : 24
> INSERT 5 : 16 @ 5
+ printwriter.println("hudFps:" + this.hudFps);
+ printwriter.println("hudWorld:" + this.hudWorld);
@ -341,13 +412,20 @@
+ printwriter.println("chunkFix:" + this.chunkFix);
+ printwriter.println("fog:" + this.fog);
+ printwriter.println("fxaa:" + this.fxaa);
+ printwriter.println("fastMath:" + this.fastMath);
+ printwriter.println("shaders:" + this.shaders);
> INSERT 5 : 7 @ 5
+ Keyboard.setFunctionKeyModifier(keyBindFunction.getKeyCode());
+
> INSERT 11 : 13 @ 11
> INSERT 10 : 12 @ 10
+ deferredShaderConf.writeOptions(printwriter);
+
> INSERT 1 : 3 @ 1
+
+ EagRuntime.setStorage("g", bao.toByteArray());
@ -383,6 +461,6 @@
~ HUD_WORLD("options.hud.world", false, true), HUD_PLAYER("options.hud.player", false, true),
~ HUD_24H("options.hud.24h", false, true), CHUNK_FIX("options.chunkFix", false, true),
~ FOG("options.fog", false, true), FXAA("options.fxaa", false, false),
~ FULLSCREEN("options.fullscreen", false, true);
~ FULLSCREEN("options.fullscreen", false, true), FAST_MATH("options.fastMath", false, false);
> EOF

View File

@ -5,17 +5,21 @@
# Version: 1.0
# Author: lax1dude
> CHANGE 3 : 6 @ 3 : 5
> CHANGE 3 : 8 @ 3 : 5
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftUUID;
~ import net.lax1dude.eaglercraft.v1_8.HString;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
~
> INSERT 1 : 2 @ 1
+
> DELETE 7 @ 7 : 10
> CHANGE 7 : 8 @ 7 : 10
~ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
> DELETE 4 @ 4 : 7
@ -146,4 +150,33 @@
> DELETE 51 @ 51 : 63
> INSERT 22 : 48 @ 22
+
+ public void renderDynamicLightsEagler(float partialTicks, boolean isInFrustum) {
+ double entityX = prevPosX + (posX - prevPosX) * (double) partialTicks;
+ double entityY = prevPosY + (posY - prevPosY) * (double) partialTicks;
+ double entityZ = prevPosZ + (posZ - prevPosZ) * (double) partialTicks;
+ double entityX2 = entityX - TileEntityRendererDispatcher.staticPlayerX;
+ double entityY2 = entityY - TileEntityRendererDispatcher.staticPlayerY;
+ double entityZ2 = entityZ - TileEntityRendererDispatcher.staticPlayerZ;
+ if (Math.sqrt(entityX2 * entityX2 + entityY2 * entityY2 + entityZ2 * entityZ2) < 48.0 * 48.0) {
+ renderDynamicLightsEaglerAt(entityX, entityY, entityZ, entityX2, entityY2, entityZ2, partialTicks,
+ isInFrustum);
+ }
+ }
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ if (this.isBurning()) {
+ float size = Math.max(width, height);
+ if (size < 1.0f && !isInFrustum) {
+ return;
+ }
+ float mag = 5.0f * size;
+ DynamicLightManager.renderDynamicLight("entity_" + entityId + "_fire", entityX, entityY + height * 0.75,
+ entityZ, mag, 0.487f * mag, 0.1411f * mag, false);
+ }
+ }
> EOF

View File

@ -17,7 +17,9 @@
~ import com.google.common.collect.Maps;
~
> DELETE 2 @ 2 : 3
> CHANGE 2 : 3 @ 2 : 3
~ import net.minecraft.client.Minecraft;
> DELETE 1 @ 1 : 5
@ -108,4 +110,18 @@
~ return false;
> INSERT 60 : 71 @ 60
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ Minecraft mc = Minecraft.getMinecraft();
+ if (mc.gameSettings.thirdPersonView != 0 || !(mc.getRenderViewEntity() == this)) {
+ Minecraft.getMinecraft().entityRenderer.renderHeldItemLight(this, 1.0f);
+ }
+ }
+
> EOF

View File

@ -10,7 +10,11 @@
+ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
+ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
> DELETE 5 @ 5 : 6
> INSERT 1 : 2 @ 1
+ import net.minecraft.client.Minecraft;
> DELETE 4 @ 4 : 5
> DELETE 2 @ 2 : 3
@ -26,4 +30,16 @@
> DELETE 11 @ 11 : 19
> INSERT 66 : 75 @ 66
+
+ public boolean eaglerEmissiveFlag = false;
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ eaglerEmissiveFlag = Minecraft.getMinecraft().entityRenderer.renderItemEntityLight(this, 0.1f);
+ }
> EOF

View File

@ -5,8 +5,24 @@
# Version: 1.0
# Author: lax1dude
> DELETE 41 @ 41 : 46
> INSERT 2 : 3 @ 2
+ import net.minecraft.client.Minecraft;
> DELETE 39 @ 39 : 44
> DELETE 126 @ 126 : 139
> INSERT 6 : 15 @ 6
+
+ public boolean eaglerEmissiveFlag = false;
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ eaglerEmissiveFlag = Minecraft.getMinecraft().entityRenderer.renderItemEntityLight(this, 0.1f);
+ }
> EOF

View File

@ -5,8 +5,26 @@
# Version: 1.0
# Author: lax1dude
> DELETE 61 @ 61 : 64
> INSERT 2 : 3 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
> DELETE 59 @ 59 : 62
> DELETE 8 @ 8 : 13
> INSERT 15 : 26 @ 15
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ if (fuse / 5 % 2 == 0) {
+ float dynamicLightMag = 10.0f;
+ DynamicLightManager.renderDynamicLight("entity_" + getEntityId() + "_tnt_flash", entityX, entityY + 0.5,
+ entityZ, dynamicLightMag, dynamicLightMag * 0.7792f, dynamicLightMag * 0.618f, false);
+ }
+ }
> EOF

View File

@ -5,6 +5,24 @@
# Version: 1.0
# Author: lax1dude
> DELETE 160 @ 160 : 174
> INSERT 2 : 3 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
> DELETE 158 @ 158 : 172
> INSERT 33 : 44 @ 33
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ if (isInFrustum && renderX * renderX + renderY * renderY + renderZ * renderZ < 150.0) {
+ float mag = 0.025f;
+ DynamicLightManager.renderDynamicLight("entity_" + getEntityId() + "_xp", entityX, entityY + 0.2, entityZ,
+ mag * 0.3f, mag, mag * 0.2f, false);
+ }
+ }
> EOF

View File

@ -5,7 +5,11 @@
# Version: 1.0
# Author: lax1dude
> DELETE 4 @ 4 : 14
> INSERT 2 : 3 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
> DELETE 2 @ 2 : 12
> DELETE 2 @ 2 : 3
@ -28,6 +32,12 @@
~ this.posY + this.rand.nextDouble() * (double) this.height,
~ this.posZ + (this.rand.nextDouble() - 0.5D) * (double) this.width, 0.0D, 0.0D, 0.0D, new int[0]);
> DELETE 67 @ 67 : 145
> CHANGE 67 : 72 @ 67 : 144
~ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
~ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
~ float mag = 5.0f;
~ DynamicLightManager.renderDynamicLight("entity_" + getEntityId() + "_blaze", entityX, entityY + 0.75, entityZ,
~ mag, 0.487f * mag, 0.1411f * mag, false);
> EOF

View File

@ -5,7 +5,13 @@
# Version: 1.0
# Author: lax1dude
> DELETE 4 @ 4 : 13
> INSERT 2 : 5 @ 2
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
+ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
+ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
> DELETE 2 @ 2 : 11
> DELETE 1 @ 1 : 4
@ -17,4 +23,20 @@
> DELETE 5 @ 5 : 16
> INSERT 15 : 28 @ 15
+
+ protected void renderDynamicLightsEaglerAt(double entityX, double entityY, double entityZ, double renderX,
+ double renderY, double renderZ, float partialTicks, boolean isInFrustum) {
+ super.renderDynamicLightsEaglerAt(entityX, entityY, entityZ, renderX, renderY, renderZ, partialTicks,
+ isInFrustum);
+ float ff = getCreeperFlashIntensity(partialTicks);
+ if ((int) (ff * 10.0F) % 2 != 0) {
+ float dynamicLightMag = 7.0f;
+ DynamicLightManager.renderDynamicLight("entity_" + getEntityId() + "_creeper_flash", entityX, entityY + 1.0,
+ entityZ, dynamicLightMag, dynamicLightMag * 0.7792f, dynamicLightMag * 0.618f, false);
+ DeferredStateManager.setEmissionConstant(1.0f);
+ }
+ }
> EOF

View File

@ -7,16 +7,21 @@
> DELETE 2 @ 2 : 7
> CHANGE 1 : 5 @ 1 : 2
> CHANGE 1 : 6 @ 1 : 2
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftUUID;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DynamicLightManager;
~
~ import com.google.common.collect.Sets;
~
> DELETE 1 @ 1 : 2
> DELETE 4 @ 4 : 12
> INSERT 1 : 2 @ 1
+ import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
> DELETE 3 @ 3 : 11
> DELETE 1 @ 1 : 4

View File

@ -15,9 +15,87 @@
> DELETE 1 @ 1 : 5
> INSERT 103 : 120 @ 103
> INSERT 55 : 65 @ 55
+ public BlockPos offsetFaster(EnumFacing facing, MutableBlockPos ret) {
+ /**
+ * eagler
+ */
+ public BlockPos up(BlockPos dst) {
+ dst.x = x;
+ dst.y = y + 1;
+ dst.z = z;
+ return dst;
+ }
+
> INSERT 8 : 18 @ 8
+ /**
+ * eagler
+ */
+ public BlockPos down(BlockPos dst) {
+ dst.x = x;
+ dst.y = y - 1;
+ dst.z = z;
+ return dst;
+ }
+
> INSERT 8 : 18 @ 8
+ /**
+ * eagler
+ */
+ public BlockPos north(BlockPos dst) {
+ dst.x = x;
+ dst.y = y;
+ dst.z = z - 1;
+ return dst;
+ }
+
> INSERT 8 : 18 @ 8
+ /**
+ * eagler
+ */
+ public BlockPos south(BlockPos dst) {
+ dst.x = x;
+ dst.y = y;
+ dst.z = z + 1;
+ return dst;
+ }
+
> INSERT 12 : 22 @ 12
+ /**
+ * eagler
+ */
+ public BlockPos west(BlockPos dst) {
+ dst.x = x - 1;
+ dst.y = y;
+ dst.z = z;
+ return dst;
+ }
+
> INSERT 8 : 18 @ 8
+ /**
+ * eagler
+ */
+ public BlockPos east(BlockPos dst) {
+ dst.x = x + 1;
+ dst.y = y;
+ dst.z = z;
+ return dst;
+ }
+
> INSERT 4 : 21 @ 4
+ public BlockPos offsetFaster(EnumFacing facing, BlockPos ret) {
+ ret.x = this.getX() + facing.getFrontOffsetX();
+ ret.y = this.getY() + facing.getFrontOffsetY();
+ ret.z = this.getZ() + facing.getFrontOffsetZ();
@ -27,7 +105,7 @@
+ /**
+ * only use with a regular "net.minecraft.util.BlockPos"!
+ */
+ public BlockPos offsetEvenFaster(EnumFacing facing, MutableBlockPos ret) {
+ public BlockPos offsetEvenFaster(EnumFacing facing, BlockPos ret) {
+ ret.x = this.x + facing.getFrontOffsetX();
+ ret.y = this.y + facing.getFrontOffsetY();
+ ret.z = this.z + facing.getFrontOffsetZ();
@ -35,7 +113,12 @@
+ }
+
> DELETE 108 @ 108 : 111
> CHANGE 2 : 4 @ 2 : 4
~ : new BlockPos(this.x + facing.getFrontOffsetX() * n, this.y + facing.getFrontOffsetY() * n,
~ this.z + facing.getFrontOffsetZ() * n);
> DELETE 104 @ 104 : 107
> CHANGE 6 : 7 @ 6 : 10

View File

@ -0,0 +1,13 @@
# Eagler Context Redacted Diff
# Copyright (c) 2023 lax1dude. All rights reserved.
# Version: 1.0
# Author: lax1dude
> CHANGE 3 : 5 @ 3 : 4
~ SOLID("Solid"), CUTOUT_MIPPED("Mipped Cutout"), CUTOUT("Cutout"), TRANSLUCENT("Translucent"),
~ REALISTIC_WATER("EaglerShaderWater"), GLASS_HIGHLIGHTS("EaglerShaderGlassHighlights");
> EOF

View File

@ -7,4 +7,14 @@
> DELETE 3 @ 3 : 4
> CHANGE 53 : 60 @ 53 : 54
~ int fastMathSetting = Minecraft.getMinecraft().gameSettings.fastMath;
~ if (fastMathSetting > 0) {
~ float f = fastMathSetting == 2 ? 16.0f : 64.0f;
~ this.renderPartialTicks = ((int) (this.elapsedPartialTicks * f) / f);
~ } else {
~ this.renderPartialTicks = this.elapsedPartialTicks;
~ }
> EOF

View File

@ -7,4 +7,8 @@
> DELETE 8 @ 8 : 12
> CHANGE 77 : 78 @ 77 : 78
~ return Chunk.getNoSkyLightValue();
> EOF

View File

@ -23,7 +23,15 @@
+ import com.google.common.collect.Sets;
+
> DELETE 18 @ 18 : 19
> INSERT 8 : 9 @ 8
+ import net.minecraft.client.Minecraft;
> INSERT 4 : 5 @ 4
+ import net.minecraft.entity.EntityLivingBase;
> DELETE 6 @ 6 : 7
> DELETE 12 @ 12 : 27
@ -79,7 +87,45 @@
> DELETE 1 @ 1 : 21
> DELETE 1404 @ 1404 : 1462
> CHANGE 117 : 118 @ 117 : 118
~ return Chunk.getNoSkyLightValue();
> INSERT 896 : 927 @ 896
+ int fastMathSetting = Minecraft.getMinecraft().gameSettings.fastMath;
+ if (fastMathSetting > 0) {
+ double posPrec = fastMathSetting == 2 ? 256.0 : 1024.0;
+ float rotPrec = fastMathSetting == 2 ? 64.0f : 128.0f;
+ double velPrec = fastMathSetting == 2 ? 2048.0 : 4096.0;
+ entityIn.lastTickPosX = (long) (entityIn.lastTickPosX * posPrec) / posPrec;
+ entityIn.lastTickPosY = (long) (entityIn.lastTickPosY * posPrec) / posPrec;
+ entityIn.lastTickPosZ = (long) (entityIn.lastTickPosZ * posPrec) / posPrec;
+ entityIn.prevPosX = (int) (entityIn.prevPosX * posPrec) / posPrec;
+ entityIn.prevPosY = (int) (entityIn.prevPosY * posPrec) / posPrec;
+ entityIn.prevPosZ = (int) (entityIn.prevPosZ * posPrec) / posPrec;
+ entityIn.posX = (int) (entityIn.posX * posPrec) / posPrec;
+ entityIn.posY = (int) (entityIn.posY * posPrec) / posPrec;
+ entityIn.posZ = (int) (entityIn.posZ * posPrec) / posPrec;
+ entityIn.prevRotationPitch = (int) (entityIn.prevRotationPitch * rotPrec) / rotPrec;
+ entityIn.prevRotationYaw = (int) (entityIn.prevRotationYaw * rotPrec) / rotPrec;
+ entityIn.rotationPitch = (int) (entityIn.rotationPitch * rotPrec) / rotPrec;
+ entityIn.rotationYaw = (int) (entityIn.rotationYaw * rotPrec) / rotPrec;
+ if (entityIn instanceof EntityLivingBase) {
+ EntityLivingBase l = (EntityLivingBase) entityIn;
+ l.prevRotationYawHead = (int) (l.prevRotationYawHead * rotPrec) / rotPrec;
+ l.rotationYawHead = (int) (l.rotationYawHead * rotPrec) / rotPrec;
+ l.prevRenderYawOffset = (int) (l.prevRenderYawOffset * rotPrec) / rotPrec;
+ l.renderYawOffset = (int) (l.renderYawOffset * rotPrec) / rotPrec;
+ l.prevRotationPitch = (int) (l.prevRotationPitch * rotPrec) / rotPrec;
+ l.rotationPitch = (int) (l.rotationPitch * rotPrec) / rotPrec;
+ }
+ entityIn.motionX = (int) (entityIn.motionX * velPrec) / velPrec;
+ entityIn.motionY = (int) (entityIn.motionY * velPrec) / velPrec;
+ entityIn.motionZ = (int) (entityIn.motionZ * velPrec) / velPrec;
+ }
> DELETE 390 @ 390 : 448
> DELETE 40 @ 40 : 64

View File

@ -13,7 +13,7 @@
~ import net.lax1dude.eaglercraft.v1_8.EaglercraftRandom;
> CHANGE 1 : 7 @ 1 : 2
> CHANGE 1 : 8 @ 1 : 2
~
~ import com.google.common.base.Predicate;
@ -21,6 +21,7 @@
~
~ import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
~ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
~ import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.DeferredStateManager;
> DELETE 18 @ 18 : 19
@ -101,7 +102,32 @@
> DELETE 33 @ 33 : 37
> CHANGE 251 : 253 @ 251 : 253
> CHANGE 24 : 26 @ 24 : 25
~ return extendedblockstorage == null
~ ? (this.canSeeSky(blockpos) ? enumskyblock.defaultLightValue : getNoSkyLightValue())
> CHANGE 1 : 2 @ 1 : 2
~ ? (this.worldObj.provider.getHasNoSky() ? getNoSkyLightValue()
> CHANGE 35 : 36 @ 35 : 36
~ : getNoSkyLightValue();
> CHANGE 1 : 3 @ 1 : 2
~ int i1 = this.worldObj.provider.getHasNoSky() ? getNoSkyLightValue()
~ : extendedblockstorage.getExtSkylightValue(j, k & 15, l);
> INSERT 10 : 14 @ 10
+ public static int getNoSkyLightValue() {
+ return DeferredStateManager.isDeferredRenderer() ? 5 : 0;
+ }
+
> CHANGE 176 : 178 @ 176 : 178
~ && (predicate == null || predicate.apply((T) entity))) {
~ list.add((T) entity);

View File

@ -12,7 +12,7 @@
~ eaglercraft.recording.start=Record Screen...
~ eaglercraft.soundCategory.voice=Voice
> INSERT 1 : 68 @ 1
> INSERT 1 : 179 @ 1
+ eaglercraft.resourcePack.prompt.title=What do you want to do with '%s'?
+ eaglercraft.resourcePack.prompt.text=Tip: Hold Shift to skip this screen when selecting a resource pack!
@ -71,6 +71,10 @@
+ eaglercraft.options.fog=Fog
+ eaglercraft.options.fxaa=FXAA Antialiasing
+ eaglercraft.options.fxaa.auto=Auto
+ eaglercraft.options.fastMath=Fast Math
+ eaglercraft.options.fastMath.0=OFF
+ eaglercraft.options.fastMath.1=Low
+ eaglercraft.options.fastMath.2=High
+
+ eaglercraft.key.function=Function
+ eaglercraft.key.zoomCamera=Zoom Camera
@ -81,6 +85,113 @@
+ eaglercraft.auth.required=Authentication Required
+ eaglercraft.auth.continue=Join Server
+
+ eaglercraft.shaders.gui.optionsButton=Shaders
+ eaglercraft.shaders.gui.title=Shaders
+ eaglercraft.shaders.gui.enable=Enable Shaders
+ eaglercraft.shaders.gui.headerTier1=Simple Effects (fast)
+ eaglercraft.shaders.gui.headerTier2=Intermediate Effects (not as fast)
+
+
+ eaglercraft.shaders.gui.option.WAVING_BLOCKS.label=Waving Grass
+
+ eaglercraft.shaders.gui.option.WAVING_BLOCKS.desc.0=The classic vanilla shader that make grass and leaf blocks move with the wind
+ eaglercraft.shaders.gui.option.WAVING_BLOCKS.desc.2=ON: slower, complex control flow
+ eaglercraft.shaders.gui.option.WAVING_BLOCKS.desc.3=OFF: faster, simple control flow
+
+ eaglercraft.shaders.gui.option.DYNAMIC_LIGHTS.label=Dynamic Lights
+
+ eaglercraft.shaders.gui.option.DYNAMIC_LIGHTS.desc.0=Items like torches, glowstone, jack o'lanterns, etc. light up the area around them when they are held or dropped
+ eaglercraft.shaders.gui.option.DYNAMIC_LIGHTS.desc.2=This feature usually does not affect FPS unless there is a large number of dynamic light sources close to the player
+ eaglercraft.shaders.gui.option.DYNAMIC_LIGHTS.desc.4=ON: enable dynamic lights
+ eaglercraft.shaders.gui.option.DYNAMIC_LIGHTS.desc.5=OFF: disable dynamic lights
+
+ eaglercraft.shaders.gui.option.GLOBAL_AMBIENT_OCCLUSION.label=Global SSAO
+
+ eaglercraft.shaders.gui.option.GLOBAL_AMBIENT_OCCLUSION.desc.0=Applies realistic screenspace ambient occlusion (SSAO) to areas of the screen that vanilla Minecraft's default "Smooth Lighting" feature cannot
+ eaglercraft.shaders.gui.option.GLOBAL_AMBIENT_OCCLUSION.desc.2=This effect can greatly reduce lag spikes caused by chunk updates in exchange for a decreased maximum FPS when standing still
+ eaglercraft.shaders.gui.option.GLOBAL_AMBIENT_OCCLUSION.desc.4=ON: use SSAO
+ eaglercraft.shaders.gui.option.GLOBAL_AMBIENT_OCCLUSION.desc.5=OFF: use vanilla
+
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.label=Sun Shadow Dist
+
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.0=Makes the sun and moon cast shadows on the world, you almost definitely want to enable this
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.2=0: off
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.3=1: 16 blocks
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.4=2: 32 blocks
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.5=3: 64 blocks
+ eaglercraft.shaders.gui.option.SHADOWS_SUN.desc.6=4: 128 blocks
+
+ eaglercraft.shaders.gui.option.SHADOWS_COLORED.label=Color Shadow
+
+ eaglercraft.shaders.gui.option.SHADOWS_COLORED.desc.0=Makes blocks like stained glass cast colored shadows
+ eaglercraft.shaders.gui.option.SHADOWS_COLORED.desc.2=ON: colored shadows (slower)
+ eaglercraft.shaders.gui.option.SHADOWS_COLORED.desc.3=OFF: grayscale shadows (faster)
+
+ eaglercraft.shaders.gui.option.SHADOWS_SMOOTHED.label=Smooth Shadow
+
+ eaglercraft.shaders.gui.option.SHADOWS_SMOOTHED.desc.0=Smooths out the edges of sun and dynamic light shadows to get rid of aliasing
+ eaglercraft.shaders.gui.option.SHADOWS_SMOOTHED.desc.2=ON: smooth shadows (slower)
+ eaglercraft.shaders.gui.option.SHADOWS_SMOOTHED.desc.3=OFF: aliased shadows (faster)
+
+ eaglercraft.shaders.gui.option.REFLECTIONS_PARABOLOID.label=Env. Mapping
+
+ eaglercraft.shaders.gui.option.REFLECTIONS_PARABOLOID.desc.0=Renders an environment map, allows transparent blocks and moving entities to reflect their surroundings
+ eaglercraft.shaders.gui.option.REFLECTIONS_PARABOLOID.desc.2=Uses dual paraboloid mapping, only 2 render passes are required to render all reflections, instead of a full 6 render passes like a conventional cube map
+ eaglercraft.shaders.gui.option.REFLECTIONS_PARABOLOID.desc.4=ON: render env. map (slower)
+ eaglercraft.shaders.gui.option.REFLECTIONS_PARABOLOID.desc.5=OFF: disable env. map (faster)
+
+ eaglercraft.shaders.gui.option.REALISTIC_WATER.label=Realistic Water
+
+ eaglercraft.shaders.gui.option.REALISTIC_WATER.desc.0=Makes water realistic, adds reflection and refraction effects, uses raytracing
+ eaglercraft.shaders.gui.option.REALISTIC_WATER.desc.2=ON: render realistic water (slower)
+ eaglercraft.shaders.gui.option.REALISTIC_WATER.desc.3=OFF: render vanilla water (faster)
+
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.label=God Rays
+
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.0=Render god rays (light shafts) for sunlight and moonlight shadows
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.2=ON: render god rays (slower)
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.3=OFF: disable god rays (faster)
+
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.label=Raytracing
+
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.desc.0=Renders raytraced reflections off of blocks
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.desc.2=Thanks to some advanced optimizations, this feature only has a small impact on FPS and is compatible with old hardware
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.desc.4=Both raymarching and raytracing are employed, raymarching is initially used to locate and track groups of pixels on the screen to reflect, then raytracing is used to reproject that data between multiple frames so the raymarching process only has to be repeated once or twice every few seconds
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.desc.6=ON: enable raytracing (slower)
+ eaglercraft.shaders.gui.option.SCREEN_SPACE_REFLECTIONS.desc.7=OFF: disable raytracing (faster)
+
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.0=Render god rays (light shafts) for sunlight and moonlight shadows
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.2=ON: render god rays (slower)
+ eaglercraft.shaders.gui.option.LIGHT_SHAFTS.desc.3=OFF: disable god rays (faster)
+
+ eaglercraft.shaders.gui.option.POST_LENS_DISTORION.label=Lens Distort
+
+ eaglercraft.shaders.gui.option.POST_LENS_DISTORION.desc.0=Renders chromatic abberation and lens distorion
+ eaglercraft.shaders.gui.option.POST_LENS_DISTORION.desc.2=ON: render lens distortion (slower)
+ eaglercraft.shaders.gui.option.POST_LENS_DISTORION.desc.3=OFF: disable lens distortion (faster)
+
+ eaglercraft.shaders.gui.option.POST_LENS_FLARES.label=Lens Flares
+
+ eaglercraft.shaders.gui.option.POST_LENS_FLARES.desc.0=Renders filmic lens flares for the sun
+ eaglercraft.shaders.gui.option.POST_LENS_FLARES.desc.2=ON: render lens flares (slower)
+ eaglercraft.shaders.gui.option.POST_LENS_FLARES.desc.3=OFF: disable lens flares (faster)
+
+ eaglercraft.shaders.gui.option.POST_BLOOM.label=Bloom
+
+ eaglercraft.shaders.gui.option.POST_BLOOM.desc.0=Renders bloom for emissive textures and sunlight
+ eaglercraft.shaders.gui.option.POST_BLOOM.desc.2=ON: render bloom (slower)
+ eaglercraft.shaders.gui.option.POST_BLOOM.desc.3=OFF: disable bloom (faster)
+
+ eaglercraft.shaders.gui.option.POST_FXAA.label=FXAA
+
+ eaglercraft.shaders.gui.option.POST_FXAA.desc.0=Applies FXAA antialiasing in post processing
+ eaglercraft.shaders.gui.option.POST_FXAA.desc.2=This is the preferred antialiasing method for minecraft, as classical MSAA cannot antialias the pixels of upscaled textures
+ eaglercraft.shaders.gui.option.POST_FXAA.desc.4=ON: enable fxaa (slower)
+ eaglercraft.shaders.gui.option.POST_FXAA.desc.5=OFF: disable fxaa (faster)
+
+ eaglercraft.shaders.gui.unsupported.title=Shaders are unavailable on this device!
+ eaglercraft.shaders.gui.unsupported.reason.hdrFramebuffer=Reason: No HDR render target support
+
> CHANGE 468 : 469 @ 468 : 469

View File

@ -54,7 +54,8 @@ public class PlatformApplication {
}
public static String getClipboard() {
return glfwGetClipboardString(win);
String str = glfwGetClipboardString(win);
return str == null ? "" : str;
}
public static void setLocalStorage(String name, byte[] data) {

View File

@ -2,6 +2,7 @@ package net.lax1dude.eaglercraft.v1_8.internal;
import java.net.URL;
import net.lax1dude.eaglercraft.v1_8.internal.PlatformAudio.IAudioCacheLoader;
import net.lax1dude.eaglercraft.v1_8.internal.paulscode.lwjgl3.LibraryLWJGLOpenAL;
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
@ -106,6 +107,18 @@ public class PlatformAudio {
public static void clearAudioCache() {
// browser only
}
public static void flushAudioCache() {
}
public static interface IAudioCacheLoader {
byte[] loadFile(String filename);
}
public static IAudioResource loadAudioDataNew(String filename, boolean holdInCache, IAudioCacheLoader loader) {
throw new UnsupportedOperationException("Browser only!");
}
private static final Logger logger = LogManager.getLogger("EaglercraftPlatformAudio");
private static SoundSystem sndSystem = null;

View File

@ -3,6 +3,19 @@ package net.lax1dude.eaglercraft.v1_8.internal;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.ByteBuffer;
import net.lax1dude.eaglercraft.v1_8.internal.buffer.IntBuffer;
/**
* Copyright (c) 2022-2023 LAX1DUDE. All Rights Reserved.
*
* WITH THE EXCEPTION OF PATCH FILES, MINIFIED JAVASCRIPT, AND ALL FILES
* NORMALLY FOUND IN AN UNMODIFIED MINECRAFT RESOURCE PACK, YOU ARE NOT ALLOWED
* TO SHARE, DISTRIBUTE, OR REPURPOSE ANY FILE USED BY OR PRODUCED BY THE
* SOFTWARE IN THIS REPOSITORY WITHOUT PRIOR PERMISSION FROM THE PROJECT AUTHOR.
*
* NOT FOR COMMERCIAL OR MALICIOUS USE
*
* (please read the 'LICENSE' file this repo's root directory for more info)
*
*/
public class PlatformBufferFunctions {
public static void put(ByteBuffer newBuffer, ByteBuffer flip) {

View File

@ -70,6 +70,10 @@ public class PlatformOpenGL {
glBlendEquation(glEnum);
}
public static final void _wglBlendColor(float r, float g, float b, float a) {
glBlendColor(r, g, b, a);
}
public static final void _wglColorMask(boolean r, boolean g, boolean b, boolean a) {
glColorMask(r, g, b, a);
}
@ -233,6 +237,12 @@ public class PlatformOpenGL {
glTexParameteri(target, param, value);
}
public static final void _wglTexImage3D(int target, int level, int internalFormat, int width, int height, int depth,
int border, int format, int type, ByteBuffer data) {
nglTexImage3D(target, level, internalFormat, width, height, depth, border, format, type,
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglTexImage2D(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, ByteBuffer data) {
nglTexImage2D(target, level, internalFormat, width, height, border, format, type,
@ -251,15 +261,21 @@ public class PlatformOpenGL {
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglTexImage2Du16(int target, int level, int internalFormat, int width, int height,
int border, int format, int type, ByteBuffer data) {
nglTexImage2D(target, level, internalFormat, width, height, border, format, type,
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height,
int format, int type, ByteBuffer data) {
glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
nglTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height,
int format, int type, IntBuffer data) {
glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
nglTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
@ -269,11 +285,21 @@ public class PlatformOpenGL {
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglTexSubImage2Du16(int target, int level, int xoffset, int yoffset, int width, int height,
int format, int type, ByteBuffer data) {
nglTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
data == null ? 0l : EaglerLWJGLAllocator.getAddress(data));
}
public static final void _wglCopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y,
int width, int height) {
glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
}
public static final void _wglTexStorage2D(int target, int levels, int internalFormat, int w, int h) {
glTexStorage2D(target, levels, internalFormat, w, h);
}
public static final void _wglPixelStorei(int pname, int value) {
glPixelStorei(pname, value);
}
@ -351,6 +377,18 @@ public class PlatformOpenGL {
return loc < 0 ? null : new OpenGLObjects.UniformGL(loc);
}
public static final int _wglGetUniformBlockIndex(IProgramGL obj, String name) {
return glGetUniformBlockIndex(((OpenGLObjects.ProgramGL) obj).ptr, name);
}
public static final void _wglBindBufferRange(int target, int index, IBufferGL buffer, int offset, int size) {
glBindBufferRange(target, index, ((OpenGLObjects.BufferGL) buffer).ptr, offset, size);
}
public static final void _wglUniformBlockBinding(IProgramGL obj, int blockIndex, int bufferIndex) {
glUniformBlockBinding(((OpenGLObjects.ProgramGL) obj).ptr, blockIndex, bufferIndex);
}
public static final void _wglUniform1f(IUniformGL obj, float x) {
if (obj != null)
glUniform1f(((OpenGLObjects.UniformGL) obj).ptr, x);
@ -403,14 +441,36 @@ public class PlatformOpenGL {
EaglerLWJGLAllocator.getAddress(mat));
}
public static final void _wglUniformMatrix3x2fv(IUniformGL obj, boolean transpose, FloatBuffer mat) {
if (obj != null)
nglUniformMatrix3x2fv(((OpenGLObjects.UniformGL) obj).ptr, mat.remaining() / 6, transpose,
EaglerLWJGLAllocator.getAddress(mat));
}
public static final void _wglUniformMatrix4fv(IUniformGL obj, boolean transpose, FloatBuffer mat) {
if (obj != null)
nglUniformMatrix4fv(((OpenGLObjects.UniformGL) obj).ptr, mat.remaining() >> 4, transpose,
EaglerLWJGLAllocator.getAddress(mat));
}
public static final void _wglUniformMatrix4x2fv(IUniformGL obj, boolean transpose, FloatBuffer mat) {
if (obj != null)
nglUniformMatrix4x2fv(((OpenGLObjects.UniformGL) obj).ptr, mat.remaining() >> 3, transpose,
EaglerLWJGLAllocator.getAddress(mat));
}
public static final void _wglUniformMatrix4x3fv(IUniformGL obj, boolean transpose, FloatBuffer mat) {
if (obj != null)
nglUniformMatrix4x3fv(((OpenGLObjects.UniformGL) obj).ptr, mat.remaining() / 12, transpose,
EaglerLWJGLAllocator.getAddress(mat));
}
public static final void _wglBindFramebuffer(int target, IFramebufferGL framebuffer) {
glBindFramebuffer(target, framebuffer == null ? 0 : ((OpenGLObjects.FramebufferGL) framebuffer).ptr);
if(framebuffer == null) {
glBindFramebuffer(target, 0);
}else {
glBindFramebuffer(target, ((OpenGLObjects.FramebufferGL) framebuffer).ptr);
}
}
public static final int _wglCheckFramebufferStatus(int target) {
@ -422,6 +482,10 @@ public class PlatformOpenGL {
glFramebufferTexture2D(target, attachment, texTarget, ((OpenGLObjects.TextureGL) texture).ptr, level);
}
public static final void _wglFramebufferTextureLayer(int target, int attachment, ITextureGL texture, int level, int layer) {
glFramebufferTextureLayer(target, attachment, ((OpenGLObjects.TextureGL) texture).ptr, level, layer);
}
public static final void _wglBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0,
int dstX1, int dstY1, int bits, int filter) {
glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, bits, filter);
@ -453,4 +517,8 @@ public class PlatformOpenGL {
return glGetError();
}
public static final boolean checkHDRFramebufferSupport(int bits) {
return true;
}
}

View File

@ -232,6 +232,7 @@ public class PlatformRuntime {
logger.info("Initializing Hooks...");
PlatformInput.initHooks(windowHandle);
PlatformApplication.initHooks(windowHandle);
}
public static void destroy() {

View File

@ -2,9 +2,11 @@ package net.lax1dude.eaglercraft.v1_8.internal;
import java.net.URI;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.extensions.permessage_deflate.PerMessageDeflateExtension;
import org.java_websocket.handshake.ServerHandshake;
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
@ -24,12 +26,15 @@ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
*
*/
class WebSocketPlayClient extends WebSocketClient {
private static final Draft perMessageDeflateDraft = new Draft_6455(new PerMessageDeflateExtension());
public static final Logger logger = LogManager.getLogger("WebSocket");
WebSocketPlayClient(URI serverUri) {
super(serverUri);
super(serverUri, perMessageDeflateDraft);
this.setConnectionLostTimeout(15);
this.setTcpNoDelay(true);
}
@Override

View File

@ -6,6 +6,9 @@ import java.util.LinkedList;
import java.util.List;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.extensions.permessage_deflate.PerMessageDeflateExtension;
import org.java_websocket.handshake.ServerHandshake;
import org.json.JSONObject;
@ -27,6 +30,8 @@ import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
*/
class WebSocketServerQuery extends WebSocketClient implements IServerQuery {
private static final Draft perMessageDeflateDraft = new Draft_6455(new PerMessageDeflateExtension());
public static final Logger logger = LogManager.getLogger("WebSocketQuery");
private final List<QueryResponse> queryResponses = new LinkedList();
@ -39,7 +44,7 @@ class WebSocketServerQuery extends WebSocketClient implements IServerQuery {
private EnumServerRateLimit rateLimit = EnumServerRateLimit.OK;
WebSocketServerQuery(String type, URI serverUri) {
super(serverUri);
super(serverUri, perMessageDeflateDraft);
this.type = type;
this.setConnectionLostTimeout(5);
this.setTcpNoDelay(true);

View File

@ -7,6 +7,7 @@ import net.lax1dude.eaglercraft.v1_8.EagRuntime;
import net.lax1dude.eaglercraft.v1_8.EagUtils;
import net.lax1dude.eaglercraft.v1_8.internal.EnumPlatformANGLE;
import net.lax1dude.eaglercraft.v1_8.internal.PlatformRuntime;
import net.lax1dude.eaglercraft.v1_8.opengl.ext.deferred.program.ShaderSource;
import net.minecraft.client.main.Main;
/**
@ -45,6 +46,12 @@ public class LWJGLEntryPoint {
getANGLEPlatformFromArgs(args);
for(int i = 0; i < args.length; ++i) {
if(args[i].equalsIgnoreCase("highp")) {
ShaderSource.setHighP(true);
}
}
EagRuntime.create();
Main.appMain(new String[0]);

View File

@ -29,6 +29,9 @@ public class EaglerInputStream extends ByteArrayInputStream {
}
public static byte[] inputStreamToBytesQuiet(InputStream is) {
if(is == null) {
return null;
}
try {
return inputStreamToBytes(is);
}catch(IOException ex) {

View File

@ -4,11 +4,13 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import net.lax1dude.eaglercraft.v1_8.internal.EnumPlatformType;
import net.lax1dude.eaglercraft.v1_8.internal.IAudioHandle;
import net.lax1dude.eaglercraft.v1_8.internal.IAudioResource;
import net.lax1dude.eaglercraft.v1_8.internal.PlatformAudio;
import net.lax1dude.eaglercraft.v1_8.log4j.LogManager;
import net.lax1dude.eaglercraft.v1_8.log4j.Logger;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.ISound;
import net.minecraft.client.audio.ISound.AttenuationType;
import net.minecraft.client.audio.ITickableSound;
@ -137,7 +139,7 @@ public class EaglercraftSoundManager {
}
public void reloadSoundSystem() {
// irrelevant
PlatformAudio.flushAudioCache();
}
public void setSoundCategoryVolume(SoundCategory category, float volume) {
@ -282,6 +284,15 @@ public class EaglercraftSoundManager {
}
}
private final PlatformAudio.IAudioCacheLoader browserResourcePackLoader = filename -> {
try {
return EaglerInputStream.inputStreamToBytesQuiet(Minecraft.getMinecraft().getResourceManager()
.getResource(new ResourceLocation(filename)).getInputStream());
}catch(Throwable t) {
return null;
}
};
public void playSound(ISound sound) {
if(!PlatformAudio.available()) {
return;
@ -296,8 +307,13 @@ public class EaglercraftSoundManager {
logger.warn("Unable to play empty soundEvent(2): {}", etr.getSoundPoolEntryLocation().toString());
}else {
ResourceLocation lc = etr.getSoundPoolEntryLocation();
IAudioResource trk = PlatformAudio.loadAudioData(
"/assets/" + lc.getResourceDomain() + "/" + lc.getResourcePath(), !etr.isStreamingSound());
IAudioResource trk;
if(EagRuntime.getPlatformType() != EnumPlatformType.DESKTOP) {
trk = PlatformAudio.loadAudioDataNew(lc.toString(), !etr.isStreamingSound(), browserResourcePackLoader);
}else {
trk = PlatformAudio.loadAudioData(
"/assets/" + lc.getResourceDomain() + "/" + lc.getResourcePath(), !etr.isStreamingSound());
}
if(trk == null) {
logger.warn("Unable to play unknown soundEvent(3): {}", sound.getSoundLocation().toString());
}else {

View File

@ -8,7 +8,7 @@ public class EaglercraftVersion {
/// Customize these to fit your fork:
public static final String projectForkName = "EaglercraftX";
public static final String projectForkVersion = "u17";
public static final String projectForkVersion = "u18";
public static final String projectForkVendor = "lax1dude";
public static final String projectForkURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8";
@ -23,7 +23,7 @@ public class EaglercraftVersion {
public static final String projectOriginName = "EaglercraftX";
public static final String projectOriginAuthor = "lax1dude";
public static final String projectOriginRevision = "1.8";
public static final String projectOriginVersion = "u17";
public static final String projectOriginVersion = "u18";
public static final String projectOriginURL = "https://gitlab.com/lax1dude/eaglercraftx-1.8";
@ -32,15 +32,16 @@ public class EaglercraftVersion {
public static final String mainMenuStringA = "Minecraft 1.8.8";
public static final String mainMenuStringB = projectOriginName + " " +
projectOriginRevision + "-" + projectOriginVersion;
public static final String mainMenuStringC = null;
projectOriginRevision + "-" + projectOriginVersion + " ultimate";
public static final String mainMenuStringC = "";
public static final String mainMenuStringD = "Resources Copyright Mojang AB";
public static final String mainMenuStringE = projectForkName + " " + projectForkVersion;
public static final String mainMenuStringF = "Made by " + projectForkVendor;
public static final boolean mainMenuEnableGithubButton = true;
public static final String mainMenuStringG = "Collector's Edition";
public static final String mainMenuStringH = "PBR Shaders";
public static final boolean mainMenuEnableGithubButton = false;
}

View File

@ -29,6 +29,7 @@ public class AcceleratedEffectRenderer implements IAcceleratedParticleEngine {
private float f4;
private float f5;
@Override
public void begin(float partialTicks) {
this.partialTicks = partialTicks;
InstancedParticleRenderer.begin();
@ -42,6 +43,7 @@ public class AcceleratedEffectRenderer implements IAcceleratedParticleEngine {
}
}
@Override
public void draw(float texCoordWidth, float texCoordHeight) {
InstancedParticleRenderer.render(texCoordWidth, texCoordHeight, 0.0625f, f1, f5, f2, f3, f4);
}

Some files were not shown because too many files have changed in this diff Show More