9
0
mirror of https://github.com/Dreeam-qwq/Gale.git synced 2025-12-21 15:59:28 +00:00

Faster floating-point positive modulo

This commit is contained in:
Martijn Muijsers
2023-08-29 22:39:50 +02:00
parent 2be9395e1a
commit 9ebba5cedd
129 changed files with 121 additions and 8 deletions

View File

@@ -366,3 +366,62 @@ index 915c1cbcc0ecf634cc76f02bba53dc82d22be698..0c05aa0d0938b19453f45adf5931c887
} }
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
index 8d40205f56a7b204a65505f9e1b4e20000221755..a6434f2c2d1ddb33e7c51d0a099fd127d8a785e6 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
@@ -113,13 +113,15 @@ public class Blender {
MutableDouble mutableDouble3 = new MutableDouble(Double.POSITIVE_INFINITY);
this.heightAndBiomeBlendingData.forEach((chunkPos, data) -> {
data.iterateHeights(QuartPos.fromSection(ChunkPos.getX(chunkPos)), QuartPos.fromSection(ChunkPos.getZ(chunkPos)), (biomeX, biomeZ, height) -> {
- double d = Mth.length((double)(i - biomeX), (double)(j - biomeZ));
- if (!(d > (double)HEIGHT_BLENDING_RANGE_CELLS)) {
- if (d < mutableDouble3.doubleValue()) {
- mutableDouble3.setValue(d);
+ // Gale start - dev import deobfuscation fixes
+ double distance = Mth.length((double)(i - biomeX), (double)(j - biomeZ));
+ if (!(distance > (double)HEIGHT_BLENDING_RANGE_CELLS)) {
+ if (distance < mutableDouble3.doubleValue()) {
+ mutableDouble3.setValue(distance);
}
- double e = 1.0D / (d * d * d * d);
+ double e = 1.0D / (distance * distance * distance * distance);
+ // Gale end - dev import deobfuscation fixes
mutableDouble2.add(height * e);
mutableDouble.add(e);
}
@@ -156,13 +158,15 @@ public class Blender {
MutableDouble mutableDouble3 = new MutableDouble(Double.POSITIVE_INFINITY);
this.densityBlendingData.forEach((chunkPos, data) -> {
data.iterateDensities(QuartPos.fromSection(ChunkPos.getX(chunkPos)), QuartPos.fromSection(ChunkPos.getZ(chunkPos)), j - 1, j + 1, (biomeX, halfSectionY, biomeZ, collidableBlockDensity) -> {
- double d = Mth.length((double)(i - biomeX), (double)((j - halfSectionY) * 2), (double)(k - biomeZ));
- if (!(d > 2.0D)) {
- if (d < mutableDouble3.doubleValue()) {
- mutableDouble3.setValue(d);
+ // Gale start - dev import deobfuscation fixes
+ double distance = Mth.length((double)(i - biomeX), (double)((j - halfSectionY) * 2), (double)(k - biomeZ));
+ if (!(distance > 2.0D)) {
+ if (distance < mutableDouble3.doubleValue()) {
+ mutableDouble3.setValue(distance);
}
- double e = 1.0D / (d * d * d * d);
+ double e = 1.0D / (distance * distance * distance * distance);
+ // Gale end - dev import deobfuscation fixes
mutableDouble2.add(collidableBlockDensity * e);
mutableDouble.add(e);
}
@@ -317,8 +321,10 @@ public class Blender {
double f = (double)offsetZ + 0.5D + SHIFT_NOISE.getValue((double)offsetZ, (double)offsetX, (double)y) * 4.0D;
return distanceGetter.getDistance(d, e, f) < 4.0D;
};
- Stream.of(GenerationStep.Carving.values()).map(chunk::getOrCreateCarvingMask).forEach((mask) -> {
- mask.setAdditionalMask(mask);
+ // Gale start - dev import deobfuscation fixes
+ Stream.of(GenerationStep.Carving.values()).map(chunk::getOrCreateCarvingMask).forEach((carvingMask) -> {
+ carvingMask.setAdditionalMask(mask);
+ // Gale end - dev import deobfuscation fixes
});
}
}

View File

@@ -29,7 +29,7 @@ index 2868dab7b100d9c325b0e5056f86660d631dec4b..2acad4c3fd58178b0f8b22bdb04eeeeb
} }
diff --git a/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java diff --git a/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..d7a6b62905b897531d18f614292afeea89a7a165 index 0000000000000000000000000000000000000000..9bee7629dd00453dc4a712f3c48cf4f2ae3da5c5
--- /dev/null --- /dev/null
+++ b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java +++ b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
@@ -57,7 +57,7 @@ index 0000000000000000000000000000000000000000..d7a6b62905b897531d18f614292afeea
+ * The <code>patch</code> version is incremented for small changes that do not affect the goal of any feature, + * The <code>patch</code> version is incremented for small changes that do not affect the goal of any feature,
+ * such as bug fixes, performance improvements or changes in wording. + * such as bug fixes, performance improvements or changes in wording.
+ */ + */
+ public static final @NotNull String version = "0.6.4"; + public static final @NotNull String version = "0.6.5";
+ +
+ /** + /**
+ * The "<code>major.minor</code>" portion of the {@link #version}. + * The "<code>major.minor</code>" portion of the {@link #version}.

View File

@@ -0,0 +1,54 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Martijn Muijsers <martijnmuijsers@live.nl>
Date: Tue, 29 Aug 2023 22:29:08 +0200
Subject: [PATCH] Faster floating-point positive modulo
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java
index 7327f3bb1c1f764ae1da88af27b1e9fb03fb89d9..aaefd728bb1a9fc398e55fe30c9337d51cf43785 100644
--- a/src/main/java/net/minecraft/util/Mth.java
+++ b/src/main/java/net/minecraft/util/Mth.java
@@ -139,14 +139,26 @@ public class Mth {
return Math.floorMod(dividend, divisor);
}
- public static float positiveModulo(float dividend, float divisor) {
+ public static float positiveModuloForAnyDivisor(float dividend, float divisor) { // Gale - faster floating-point positive modulo
return (dividend % divisor + divisor) % divisor;
}
- public static double positiveModulo(double dividend, double divisor) {
+ public static double positiveModuloForAnyDivisor(double dividend, double divisor) { // Gale - faster floating-point positive modulo
return (dividend % divisor + divisor) % divisor;
}
+ // Gale start - faster floating-point positive modulo
+ public static float positiveModuloForPositiveDivisor(float dividend, float divisor) {
+ var modulo = dividend % divisor;
+ return modulo < 0 ? modulo + divisor : modulo;
+ }
+
+ public static double positiveModuloForPositiveDivisor(double dividend, double divisor) {
+ var modulo = dividend % divisor;
+ return modulo < 0 ? modulo + divisor : modulo;
+ }
+ // Gale end - faster floating-point positive modulo
+
public static boolean isMultipleOf(int a, int b) {
return a % b == 0;
}
diff --git a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
index a6434f2c2d1ddb33e7c51d0a099fd127d8a785e6..aeecd8fc0b9d514990e1fa1f1c790fa61d664a0b 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
@@ -141,7 +141,7 @@ public class Blender {
private static double heightToOffset(double height) {
double d = 1.0D;
double e = height + 0.5D;
- double f = Mth.positiveModulo(e, 8.0D);
+ double f = Mth.positiveModuloForPositiveDivisor(e, 8.0D); // Gale - faster floating-point positive modulo
return 1.0D * (32.0D * (e - 128.0D) - 3.0D * (e - 120.0D) * f + 3.0D * f * f) / (128.0D * (32.0D - 3.0D * f));
}

View File

@@ -52,7 +52,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 78201998d6cbee9aa6f0bad80b726b46675393dc..041f188b742ad819e2460e8ca5ab7f44412dbf9b 100644 index c7a8ec6b99e7db62abcbb1d5aed99738ee8732de..6c77db5edce2101847234f65bd10c5841fd5bd4f 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -539,6 +539,7 @@ public class ServerChunkCache extends ChunkSource { @@ -539,6 +539,7 @@ public class ServerChunkCache extends ChunkSource {

View File

@@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index c2e22dd084d922a827e6dd53e8634ec5b9e2d1ee..97226a1135e9228ec010110b5d24fae00a49996a 100644 index 04dfa4f59921ec5fcea6fb6989847fc5164ccfda..6d1baf7592a0d016b7d9a842ecc8660c42059490 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1141,6 +1141,13 @@ public final class CraftServer implements Server { @@ -1141,6 +1141,13 @@ public final class CraftServer implements Server {

View File

@@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index d934d07ad761319f338d4386536f68fde211c041..e215cb22a226fa61d7eb9a8f69fe2a644d4394f7 100644 index 196280f54e397c69d32bd4d1f6ae666efdd93773..8c28305ffdb210722b11a0bdcf077452d09bcc2d 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -181,6 +181,7 @@ public class ServerEntity { @@ -181,6 +181,7 @@ public class ServerEntity {

View File

@@ -13,7 +13,7 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/build.gradle.kts b/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts
index 50bb7e538c7493e52b2d1356ef6c89194efa593a..a0237112353240d9c8d0dc733f9176fd7e95f007 100644 index 9606c6954f2c53dbbda7e7235cf37308822fea02..4466f21a83cb9ddca7309a194afcb8eded92de81 100644
--- a/build.gradle.kts --- a/build.gradle.kts
+++ b/build.gradle.kts +++ b/build.gradle.kts
@@ -73,6 +73,7 @@ tasks.withType<JavaCompile> { @@ -73,6 +73,7 @@ tasks.withType<JavaCompile> {
@@ -84,7 +84,7 @@ index 2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa..850ccd53c5007e8b18344ba76c9e7f00
} }
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 5be4267d88604210b7bfcc03b2c2056e0a9f0fb0..13d9fc5f4e6316b3fd6ef5ab50f78c7117e2df3a 100644 index e75f0e6ce6cb7fa88ca3bd8dd7e63ea885bae341..aba9c02f74bc0a1270d90a17db74f64dadb99f92 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -14,6 +14,8 @@ import java.util.Locale; @@ -14,6 +14,8 @@ import java.util.Locale;

View File

@@ -35,7 +35,7 @@ index d4a26febc956d8a4cecda742b28e2700a1148559..1eaa559b177f2dc982865f96dfc7654b
public static long getCoordinateKey(final ChunkPos pair) { public static long getCoordinateKey(final ChunkPos pair) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index fb43c428813d05f047a801cff8a2682499a03208..a33457376dad6f5e9680518ce11bb47c89f59f1e 100644 index d751b3ce631527c2e65e649b56880fe0330c07e4..19d05bfec4aafdf3712ad24b4b29a9f55067e578 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {

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