Package net.paulhertz.pixelaudio
Class OpenSimplex2
java.lang.Object
net.paulhertz.pixelaudio.OpenSimplex2
K.jpg's OpenSimplex 2, faster variant
from https://github.com/KdotJPG/OpenSimplex2
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleprivate static float[]private static float[]private static float[]private static final longprivate static final floatprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final doubleprivate static final doubleprivate static final doubleprivate static final longprivate static final longprivate static final longprivate static final longprivate static final doubleprivate static final doubleprivate static final doubleprivate static final floatprivate static final floatprivate static final floatprivate static final longprivate static final longprivate static final doubleprivate static final floatprivate static final doubleprivate static final float -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static intfastFloor(double x) private static intfastRound(double x) private static floatgrad(long seed, long xsvp, long ysvp, float dx, float dy) private static floatgrad(long seed, long xrvp, long yrvp, long zrvp, float dx, float dy, float dz) private static floatgrad(long seed, long xsvp, long ysvp, long zsvp, long wsvp, float dx, float dy, float dz, float dw) static floatnoise2(long seed, double x, double y) 2D Simplex noise, standard lattice orientation.static floatnoise2_ImproveX(long seed, double x, double y) 2D Simplex noise, with Y pointing down the main diagonal.private static floatnoise2_UnskewedBase(long seed, double xs, double ys) 2D Simplex noise base.static floatnoise3_Fallback(long seed, double x, double y, double z) 3D OpenSimplex2 noise, fallback rotation option Use noise3_ImproveXY or noise3_ImproveXZ instead, wherever appropriate.static floatnoise3_ImproveXY(long seed, double x, double y, double z) 3D OpenSimplex2 noise, with better visual isotropy in (X, Y).static floatnoise3_ImproveXZ(long seed, double x, double y, double z) 3D OpenSimplex2 noise, with better visual isotropy in (X, Z).private static floatnoise3_UnrotatedBase(long seed, double xr, double yr, double zr) Generate overlapping cubic lattices for 3D OpenSimplex2 noise.static floatnoise4_Fallback(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, fallback lattice orientation.static floatnoise4_ImproveXY_ImproveZW(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XY and ZW forming orthogonal triangular-based planes.static floatnoise4_ImproveXYZ(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_Fallback and W for an extra degree of freedom.static floatnoise4_ImproveXYZ_ImproveXY(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_ImproveXY and W for an extra degree of freedom.static floatnoise4_ImproveXYZ_ImproveXZ(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_ImproveXZ and W for an extra degree of freedom.private static floatnoise4_UnskewedBase(long seed, double xs, double ys, double zs, double ws) 4D OpenSimplex2 noise base.
-
Field Details
-
PRIME_X
private static final long PRIME_X- See Also:
-
PRIME_Y
private static final long PRIME_Y- See Also:
-
PRIME_Z
private static final long PRIME_Z- See Also:
-
PRIME_W
private static final long PRIME_W- See Also:
-
HASH_MULTIPLIER
private static final long HASH_MULTIPLIER- See Also:
-
SEED_FLIP_3D
private static final long SEED_FLIP_3D- See Also:
-
SEED_OFFSET_4D
private static final long SEED_OFFSET_4D- See Also:
-
ROOT2OVER2
private static final double ROOT2OVER2- See Also:
-
SKEW_2D
private static final double SKEW_2D- See Also:
-
UNSKEW_2D
private static final double UNSKEW_2D- See Also:
-
ROOT3OVER3
private static final double ROOT3OVER3- See Also:
-
FALLBACK_ROTATE_3D
private static final double FALLBACK_ROTATE_3D- See Also:
-
ROTATE_3D_ORTHOGONALIZER
private static final double ROTATE_3D_ORTHOGONALIZER- See Also:
-
SKEW_4D
private static final float SKEW_4D- See Also:
-
UNSKEW_4D
private static final float UNSKEW_4D- See Also:
-
LATTICE_STEP_4D
private static final float LATTICE_STEP_4D- See Also:
-
N_GRADS_2D_EXPONENT
private static final int N_GRADS_2D_EXPONENT- See Also:
-
N_GRADS_3D_EXPONENT
private static final int N_GRADS_3D_EXPONENT- See Also:
-
N_GRADS_4D_EXPONENT
private static final int N_GRADS_4D_EXPONENT- See Also:
-
N_GRADS_2D
private static final int N_GRADS_2D- See Also:
-
N_GRADS_3D
private static final int N_GRADS_3D- See Also:
-
N_GRADS_4D
private static final int N_GRADS_4D- See Also:
-
NORMALIZER_2D
private static final double NORMALIZER_2D- See Also:
-
NORMALIZER_3D
private static final double NORMALIZER_3D- See Also:
-
NORMALIZER_4D
private static final double NORMALIZER_4D- See Also:
-
RSQUARED_2D
private static final float RSQUARED_2D- See Also:
-
RSQUARED_3D
private static final float RSQUARED_3D- See Also:
-
RSQUARED_4D
private static final float RSQUARED_4D- See Also:
-
GRADIENTS_2D
private static float[] GRADIENTS_2D -
GRADIENTS_3D
private static float[] GRADIENTS_3D -
GRADIENTS_4D
private static float[] GRADIENTS_4D
-
-
Constructor Details
-
OpenSimplex2
public OpenSimplex2()
-
-
Method Details
-
noise2
public static float noise2(long seed, double x, double y) 2D Simplex noise, standard lattice orientation. -
noise2_ImproveX
public static float noise2_ImproveX(long seed, double x, double y) 2D Simplex noise, with Y pointing down the main diagonal. Might be better for a 2D sandbox style game, where Y is vertical. Probably slightly less optimal for heightmaps or continent maps, unless your map is centered around an equator. It's a subtle difference, but the option is here to make it an easy choice. -
noise2_UnskewedBase
private static float noise2_UnskewedBase(long seed, double xs, double ys) 2D Simplex noise base. -
noise3_ImproveXY
public static float noise3_ImproveXY(long seed, double x, double y, double z) 3D OpenSimplex2 noise, with better visual isotropy in (X, Y). Recommended for 3D terrain and time-varied animations. The Z coordinate should always be the "different" coordinate in whatever your use case is. If Y is vertical in world coordinates, call noise3_ImproveXZ(x, z, Y) or use noise3_XZBeforeY. If Z is vertical in world coordinates, call noise3_ImproveXZ(x, y, Z). For a time varied animation, call noise3_ImproveXY(x, y, T). -
noise3_ImproveXZ
public static float noise3_ImproveXZ(long seed, double x, double y, double z) 3D OpenSimplex2 noise, with better visual isotropy in (X, Z). Recommended for 3D terrain and time-varied animations. The Y coordinate should always be the "different" coordinate in whatever your use case is. If Y is vertical in world coordinates, call noise3_ImproveXZ(x, Y, z). If Z is vertical in world coordinates, call noise3_ImproveXZ(x, Z, y) or use noise3_ImproveXY. For a time varied animation, call noise3_ImproveXZ(x, T, y) or use noise3_ImproveXY. -
noise3_Fallback
public static float noise3_Fallback(long seed, double x, double y, double z) 3D OpenSimplex2 noise, fallback rotation option Use noise3_ImproveXY or noise3_ImproveXZ instead, wherever appropriate. They have less diagonal bias. This function's best use is as a fallback. -
noise3_UnrotatedBase
private static float noise3_UnrotatedBase(long seed, double xr, double yr, double zr) Generate overlapping cubic lattices for 3D OpenSimplex2 noise. -
noise4_ImproveXYZ_ImproveXY
public static float noise4_ImproveXYZ_ImproveXY(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_ImproveXY and W for an extra degree of freedom. W repeats eventually. Recommended for time-varied animations which texture a 3D object (W=time) in a space where Z is vertical -
noise4_ImproveXYZ_ImproveXZ
public static float noise4_ImproveXYZ_ImproveXZ(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_ImproveXZ and W for an extra degree of freedom. W repeats eventually. Recommended for time-varied animations which texture a 3D object (W=time) in a space where Y is vertical -
noise4_ImproveXYZ
public static float noise4_ImproveXYZ(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XYZ oriented like noise3_Fallback and W for an extra degree of freedom. W repeats eventually. Recommended for time-varied animations which texture a 3D object (W=time) where there isn't a clear distinction between horizontal and vertical -
noise4_ImproveXY_ImproveZW
public static float noise4_ImproveXY_ImproveZW(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, with XY and ZW forming orthogonal triangular-based planes. Recommended for 3D terrain, where X and Y (or Z and W) are horizontal. Recommended for noise(x, y, sin(time), cos(time)) trick. -
noise4_Fallback
public static float noise4_Fallback(long seed, double x, double y, double z, double w) 4D OpenSimplex2 noise, fallback lattice orientation. -
noise4_UnskewedBase
private static float noise4_UnskewedBase(long seed, double xs, double ys, double zs, double ws) 4D OpenSimplex2 noise base. -
grad
private static float grad(long seed, long xsvp, long ysvp, float dx, float dy) -
grad
private static float grad(long seed, long xrvp, long yrvp, long zrvp, float dx, float dy, float dz) -
grad
private static float grad(long seed, long xsvp, long ysvp, long zsvp, long wsvp, float dx, float dy, float dz, float dw) -
fastFloor
private static int fastFloor(double x) -
fastRound
private static int fastRound(double x)
-