From bc1213b2200a4accd9395745aa283fa8dfbe7f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 5 Jun 2025 22:44:07 -0600 Subject: [PATCH] Use Seismic function for perf --- .../addons/biome/pipeline/PipelineBiomeProvider.java | 4 ++-- .../addons/biome/pipeline/pipeline/BiomeChunkImpl.java | 4 +++- .../math/interpolation/LazilyEvaluatedInterpolator.java | 5 +++-- .../java/com/dfsek/terra/addons/ore/ores/VanillaOre.java | 3 ++- .../terra/addons/image/operator/DistanceTransform.java | 4 +++- .../terrascript/script/functions/GetMarkFunction.java | 6 ++++-- .../terrascript/script/functions/SetMarkFunction.java | 8 +++++--- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java index c045c905a..f6704e9cd 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/PipelineBiomeProvider.java @@ -83,8 +83,8 @@ public class PipelineBiomeProvider implements BiomeProvider { public Biome getBiome(int x, int z, long seed) { - x += mutator.getSample(seed + 1, x, z) * noiseAmp; - z += mutator.getSample(seed + 2, x, z) * noiseAmp; + x += (int) (mutator.getSample(seed + 1, x, z) * noiseAmp); + z += (int) (mutator.getSample(seed + 2, x, z) * noiseAmp); x /= resolution; z /= resolution; diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java index 678190896..8fa8ab651 100644 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java +++ b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/pipeline/BiomeChunkImpl.java @@ -2,6 +2,8 @@ package com.dfsek.terra.addons.biome.pipeline.pipeline; import java.util.List; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.biome.pipeline.api.BiomeChunk; import com.dfsek.terra.addons.biome.pipeline.api.Expander; import com.dfsek.terra.addons.biome.pipeline.api.Stage; @@ -98,7 +100,7 @@ public class BiomeChunkImpl implements BiomeChunk { // chunk samples points on the same overall grid. // Without this, shared chunk borders (required because of adjacent cell reads) will not be identical // because points would be sampled on grids at different offsets, resulting in artifacts at borders. - return (int) Math.ceil((double) finalGridOrigin / initialGridInterval) * initialGridInterval; + return FloatingPointFunctions.ceil((double) finalGridOrigin / initialGridInterval) * initialGridInterval; } private static int calculateFinalGridOrigin(int totalExpanderCount, List stages) { diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java index dcab4df14..947387298 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/LazilyEvaluatedInterpolator.java @@ -1,5 +1,6 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; @@ -28,8 +29,8 @@ public class LazilyEvaluatedInterpolator { PropertyKey noisePropertiesKey, int min, int horizontalRes, int verticalRes, long seed) { this.noisePropertiesKey = noisePropertiesKey; - int hSamples = (int) Math.ceil(16.0 / horizontalRes); - int vSamples = (int) Math.ceil((double) (max - min) / verticalRes); + int hSamples = FloatingPointFunctions.ceil(16.0 / horizontalRes); + int vSamples = FloatingPointFunctions.ceil((double) (max - min) / verticalRes); this.zMul = (hSamples + 1); this.yMul = zMul * zMul; samples = new Double[yMul * (vSamples + 1)]; diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java index 84ff59543..15eb6b3c3 100644 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java @@ -11,6 +11,7 @@ import java.util.BitSet; import java.util.Map; import java.util.random.RandomGenerator; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.math.numericanalysis.interpolation.InterpolationFunctions; import com.dfsek.seismic.math.trigonometry.TrigonometryFunctions; import com.dfsek.seismic.type.Rotation; @@ -104,7 +105,7 @@ public class VanillaOre implements Structure { } } - int outset = (int) Math.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); + int outset = FloatingPointFunctions.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); int x = (int) (location.getX() - Math.ceil(eighthSize) - outset); int y = location.getY() - 2 - outset; int z = (int) (location.getZ() - Math.ceil(eighthSize) - outset); diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java index f9818c80f..93f4b2bc3 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/operator/DistanceTransform.java @@ -1,5 +1,7 @@ package com.dfsek.terra.addons.image.operator; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.util.ColorUtil; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; @@ -232,7 +234,7 @@ public class DistanceTransform { @Override public double getSample(long seed, double x, double y) { if(x < 0 || y < 0 || x >= transform.width || y >= transform.height) return transform.minDistance; - return transform.distances[(int) Math.floor(x)][(int) Math.floor(y)]; + return transform.distances[FloatingPointFunctions.floor(x)][FloatingPointFunctions.floor(y)]; } @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java index b98dda159..917a133e8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; @@ -34,9 +36,9 @@ public class GetMarkFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - String mark = arguments.getMark(Vector3.of((int) Math.floor(xz.getX()), (int) Math.floor( + String mark = arguments.getMark(Vector3.of(FloatingPointFunctions.floor(xz.getX()), FloatingPointFunctions.floor( y.apply(implementationArguments, scope).doubleValue()), - (int) Math.floor(xz.getZ())) + FloatingPointFunctions.floor(xz.getZ())) .mutable() .add(arguments.getOrigin().toFloat()) .immutable()); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java index 905ff23ae..a485094b3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; @@ -37,10 +39,10 @@ public class SetMarkFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - arguments.setMark(Vector3.of((int) Math.floor(xz.getX()), - (int) Math.floor( + arguments.setMark(Vector3.of(FloatingPointFunctions.floor(xz.getX()), + FloatingPointFunctions.floor( y.apply(implementationArguments, scope).doubleValue()), - (int) Math.floor(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(), + FloatingPointFunctions.floor(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(), mark.apply(implementationArguments, scope)); return null; }