Made better fast math & fixed shader profile
This commit is contained in:
parent
8452864d1e
commit
9c87f8de6c
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
52986
javascript/classes.js
52986
javascript/classes.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -54,7 +54,7 @@ public class GuiShaders extends GuiScreen {
|
|||
|
||||
if(parGuiButton.id == 201) {
|
||||
mc.gameSettings.setOptionValue(((GuiOptionButton)parGuiButton).returnEnumOptions(), 1);
|
||||
parGuiButton.displayString = mc.gameSettings.getKeyBinding(GameSettings.Options.getEnumOptions(74));
|
||||
parGuiButton.displayString = mc.gameSettings.getKeyBinding(GameSettings.Options.SHADER_PROFILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import net.minecraft.tileentity.TileEntityPiston;
|
|||
import net.minecraft.tileentity.TileEntitySign;
|
||||
import net.minecraft.tileentity.TileEntitySkull;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ReportedException;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
@ -117,8 +118,8 @@ public class TileEntityRendererDispatcher {
|
|||
if (tileentityIn.getDistanceSq(this.entityX, this.entityY, this.entityZ) < tileentityIn
|
||||
.getMaxRenderDistanceSquared()) {
|
||||
int i = this.worldObj.getCombinedLight(tileentityIn.getPos(), 0);
|
||||
int j = i % 65536;
|
||||
int k = i / 65536;
|
||||
int j = MathHelper.fastMath ? i % 65536 : i % 4096;
|
||||
int k = MathHelper.fastMath ? i / 65536 : i / 4096;
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F);
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
BlockPos blockpos = tileentityIn.getPos();
|
||||
|
|
|
@ -184,7 +184,6 @@ public class GameSettings {
|
|||
public boolean shaders = false;
|
||||
public boolean shadersAODisable = false;
|
||||
public EaglerDeferredConfig deferredShaderConf = new EaglerDeferredConfig();
|
||||
public int fastMath = 1;
|
||||
|
||||
//Main Menu Settings
|
||||
public float ofAoLevel = 1.0F;
|
||||
|
@ -225,6 +224,7 @@ public class GameSettings {
|
|||
//Performance Settings
|
||||
public boolean ofSmoothFps = false;
|
||||
public int ofChunkUpdates = 1;
|
||||
public static boolean ofFastMath = true;
|
||||
|
||||
//Super Secret Setting :>
|
||||
public boolean secret = false;
|
||||
|
@ -485,10 +485,6 @@ public class GameSettings {
|
|||
this.mc.toggleFullscreen();
|
||||
}
|
||||
|
||||
if (parOptions == GameSettings.Options.FAST_MATH) {
|
||||
this.fastMath = (this.fastMath + parInt1) % 3;
|
||||
}
|
||||
|
||||
if (parOptions == GameSettings.Options.ANIMATED_WATER) {
|
||||
++this.ofAnimatedWater;
|
||||
|
||||
|
@ -662,6 +658,11 @@ public class GameSettings {
|
|||
DynamicLights.removeLights(this.mc.renderGlobal);
|
||||
}
|
||||
|
||||
if (parOptions == GameSettings.Options.FAST_MATH) {
|
||||
ofFastMath = !ofFastMath;
|
||||
MathHelper.fastMath = ofFastMath;
|
||||
}
|
||||
|
||||
this.saveOptions();
|
||||
}
|
||||
|
||||
|
@ -735,6 +736,8 @@ public class GameSettings {
|
|||
return this.ofClearWater;
|
||||
case SMOOTH_FPS:
|
||||
return this.ofSmoothFps;
|
||||
case FAST_MATH:
|
||||
return ofFastMath;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -802,8 +805,6 @@ public class GameSettings {
|
|||
} else {
|
||||
return s + I18n.format("options.off");
|
||||
}
|
||||
} else if (parOptions == GameSettings.Options.FAST_MATH) {
|
||||
return s + I18n.format("options.fastMath." + this.fastMath);
|
||||
} else if (parOptions == GameSettings.Options.ANIMATED_WATER) {
|
||||
switch (this.ofAnimatedWater) {
|
||||
case 1:
|
||||
|
@ -925,6 +926,8 @@ public class GameSettings {
|
|||
} else if (parOptions == GameSettings.Options.DYNAMIC_LIGHTS) {
|
||||
int k = indexOf(this.ofDynamicLights, OF_DYNAMIC_LIGHTS);
|
||||
return s + getTranslation(KEYS_DYNAMIC_LIGHTS, k);
|
||||
} else if (parOptions == GameSettings.Options.FAST_MATH) {
|
||||
return ofFastMath ? s + "ON" : s + "OFF";
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
|
@ -1181,10 +1184,6 @@ public class GameSettings {
|
|||
: Integer.parseInt(astring[1]);
|
||||
}
|
||||
|
||||
if (astring[0].equals("fastMath")) {
|
||||
this.fastMath = Integer.parseInt(astring[1]);
|
||||
}
|
||||
|
||||
for (KeyBinding keybinding : this.keyBindings) {
|
||||
if (astring[0].equals("key_" + keybinding.getKeyDescription())) {
|
||||
keybinding.setKeyCode(Integer.parseInt(astring[1]));
|
||||
|
@ -1343,6 +1342,11 @@ public class GameSettings {
|
|||
this.ofDynamicLights = limit(this.ofDynamicLights, OF_DYNAMIC_LIGHTS);
|
||||
}
|
||||
|
||||
if (astring[0].equals("ofFastMath") && astring.length >= 2) {
|
||||
ofFastMath = Boolean.valueOf(astring[1]).booleanValue();
|
||||
MathHelper.fastMath = ofFastMath;
|
||||
}
|
||||
|
||||
Keyboard.setFunctionKeyModifier(keyBindFunction.getKeyCode());
|
||||
|
||||
for (SoundCategory soundcategory : SoundCategory.values()) {
|
||||
|
@ -1436,7 +1440,6 @@ public class GameSettings {
|
|||
printwriter.println("hud24h:" + this.hud24h);
|
||||
printwriter.println("chunkFix:" + this.chunkFix);
|
||||
printwriter.println("fxaa:" + this.fxaa);
|
||||
printwriter.println("fastMath:" + this.fastMath);
|
||||
printwriter.println("shaders:" + this.shaders);
|
||||
printwriter.println("ofAnimatedWater:" + this.ofAnimatedWater);
|
||||
printwriter.println("ofAnimatedLava:" + this.ofAnimatedLava);
|
||||
|
@ -1480,6 +1483,7 @@ public class GameSettings {
|
|||
printwriter.println("ofClouds:" + this.ofClouds);
|
||||
printwriter.println("ofCloudsHeight:" + this.ofCloudsHeight);
|
||||
printwriter.println("ofDynamicLights:" + this.ofDynamicLights);
|
||||
printwriter.println("ofFastMath:" + ofFastMath);
|
||||
|
||||
for (KeyBinding keybinding : this.keyBindings) {
|
||||
printwriter.println("key_" + keybinding.getKeyDescription() + ":" + keybinding.getKeyCode());
|
||||
|
@ -1605,7 +1609,8 @@ public class GameSettings {
|
|||
STREAM_BYTES_PER_PIXEL("options.stream.bytesPerPixel", true, false),
|
||||
STREAM_VOLUME_MIC("options.stream.micVolumne", true, false),
|
||||
STREAM_VOLUME_SYSTEM("options.stream.systemVolume", true, false),
|
||||
STREAM_KBPS("options.stream.kbps", true, false), STREAM_FPS("options.stream.fps", true, false),
|
||||
STREAM_KBPS("options.stream.kbps", true, false),
|
||||
STREAM_FPS("options.stream.fps", true, false),
|
||||
STREAM_COMPRESSION("options.stream.compression", false, false),
|
||||
STREAM_SEND_METADATA("options.stream.sendMetadata", false, true),
|
||||
STREAM_CHAT_ENABLED("options.stream.chat.enabled", false, false),
|
||||
|
@ -1613,12 +1618,17 @@ public class GameSettings {
|
|||
STREAM_MIC_TOGGLE_BEHAVIOR("options.stream.micToggleBehavior", false, false),
|
||||
BLOCK_ALTERNATIVES("options.blockAlternatives", false, true),
|
||||
REDUCED_DEBUG_INFO("options.reducedDebugInfo", false, true),
|
||||
ENTITY_SHADOWS("options.entityShadows", false, true), HUD_FPS("options.hud.fps", false, true),
|
||||
HUD_COORDS("options.hud.coords", false, true), HUD_STATS("options.hud.stats", false, true),
|
||||
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),
|
||||
ENTITY_SHADOWS("options.entityShadows", false, true),
|
||||
HUD_FPS("options.hud.fps", false, true),
|
||||
HUD_COORDS("options.hud.coords", false, true),
|
||||
HUD_STATS("options.hud.stats", false, true),
|
||||
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),
|
||||
FXAA("options.fxaa", false, false),
|
||||
FULLSCREEN("options.fullscreen", false, true), FAST_MATH("options.fastMath", false, false),
|
||||
FULLSCREEN("options.fullscreen", false, true),
|
||||
FAST_MATH("options.fastMath", false, true),
|
||||
ANIMATED_WATER("Water Animated", false, false),
|
||||
ANIMATED_LAVA("Lava Animated", false, false),
|
||||
ANIMATED_FIRE("Fire Animated", false, false),
|
||||
|
|
|
@ -28,6 +28,8 @@ public class MathHelper {
|
|||
* (exclusive), with steps of 2*PI / 65536.
|
||||
*/
|
||||
private static final float[] SIN_TABLE = new float[65536];
|
||||
private static final float[] SIN_TABLE_FAST = new float[4096];
|
||||
public static boolean fastMath = false;
|
||||
private static final int[] multiplyDeBruijnBitPosition;
|
||||
private static final double field_181163_d;
|
||||
private static final double[] field_181164_e;
|
||||
|
@ -37,14 +39,14 @@ public class MathHelper {
|
|||
* sin looked up in a table
|
||||
*/
|
||||
public static float sin(float parFloat1) {
|
||||
return SIN_TABLE[(int) (parFloat1 * 10430.378F) & '\uffff'];
|
||||
return fastMath ? SIN_TABLE_FAST[(int)(parFloat1 * 651.8986F) & 4095] : SIN_TABLE[(int)(parFloat1 * 10430.378F) & 65535];
|
||||
}
|
||||
|
||||
/**+
|
||||
* cos looked up in the sin table with the appropriate offset
|
||||
*/
|
||||
public static float cos(float value) {
|
||||
return SIN_TABLE[(int) (value * 10430.378F + 16384.0F) & '\uffff'];
|
||||
return fastMath ? SIN_TABLE_FAST[(int)((value + ((float) Math.PI / 2F)) * 651.8986F) & 4095] : SIN_TABLE[(int)(value * 10430.378F + 16384.0F) & 65535];
|
||||
}
|
||||
|
||||
public static float sqrt_float(float value) {
|
||||
|
@ -488,7 +490,15 @@ public class MathHelper {
|
|||
|
||||
static {
|
||||
for (int i = 0; i < 65536; ++i) {
|
||||
SIN_TABLE[i] = (float) Math.sin((double) i * 3.141592653589793D * 2.0D / 65536.0D);
|
||||
SIN_TABLE[i] = (float) Math.sin((double) i * Math.PI * 2.0D / 65536.0D);
|
||||
}
|
||||
|
||||
for (int j = 0; j < 4096; ++j) {
|
||||
SIN_TABLE_FAST[j] = (float) Math.sin((double)(((float) j + 0.5F) / 4096.0F * ((float) Math.PI * 2F)));
|
||||
}
|
||||
|
||||
for (int l = 0; l < 360; l += 90) {
|
||||
SIN_TABLE_FAST[(int)((float) l * 11.377778F) & 4095] = (float) Math.sin((double)((float) l * 0.017453292F));
|
||||
}
|
||||
|
||||
multiplyDeBruijnBitPosition = new int[] { 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13,
|
||||
|
|
|
@ -83,12 +83,6 @@ public class Timer {
|
|||
this.elapsedTicks = 10;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1533,37 +1533,6 @@ public abstract class World implements IBlockAccess {
|
|||
}
|
||||
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/**+
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.minecraft.world.chunk;
|
|||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
/**+
|
||||
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
||||
|
@ -24,6 +25,7 @@ import net.minecraft.init.Blocks;
|
|||
*/
|
||||
public class ChunkPrimer {
|
||||
private final short[] data = new short[4096];
|
||||
private final short[] data_fast = new short[4096];
|
||||
private final IBlockState defaultState = Blocks.air.getDefaultState();
|
||||
|
||||
public IBlockState getBlockState(int x, int y, int z) {
|
||||
|
@ -32,12 +34,21 @@ public class ChunkPrimer {
|
|||
}
|
||||
|
||||
public IBlockState getBlockState(int index) {
|
||||
if (MathHelper.fastMath) {
|
||||
if (index >= 0 && index < this.data.length) {
|
||||
IBlockState iblockstate = (IBlockState) Block.BLOCK_STATE_IDS.getByValue(this.data[index]);
|
||||
return iblockstate != null ? iblockstate : this.defaultState;
|
||||
} else {
|
||||
throw new IndexOutOfBoundsException("The coordinate is out of range");
|
||||
}
|
||||
} else {
|
||||
if (index >= 0 && index < this.data_fast.length) {
|
||||
IBlockState iblockstate = (IBlockState) Block.BLOCK_STATE_IDS.getByValue(this.data_fast[index]);
|
||||
return iblockstate != null ? iblockstate : this.defaultState;
|
||||
} else {
|
||||
throw new IndexOutOfBoundsException("The coordinate is out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockState(int x, int y, int z, IBlockState state) {
|
||||
|
@ -46,10 +57,18 @@ public class ChunkPrimer {
|
|||
}
|
||||
|
||||
public void setBlockState(int index, IBlockState state) {
|
||||
if(MathHelper.fastMath) {
|
||||
if (index >= 0 && index < this.data.length) {
|
||||
this.data[index] = (short) Block.BLOCK_STATE_IDS.get(state);
|
||||
} else {
|
||||
throw new IndexOutOfBoundsException("The coordinate is out of range");
|
||||
}
|
||||
} else {
|
||||
if (index >= 0 && index < this.data_fast.length) {
|
||||
this.data_fast[index] = (short) Block.BLOCK_STATE_IDS.get(state);
|
||||
} else {
|
||||
throw new IndexOutOfBoundsException("The coordinate is out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user