Skip to content

Commit

Permalink
optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoCiaramella committed Jun 21, 2021
1 parent 5d878f5 commit 23bb605
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public void useAppContext() {

@Test
public void noise2_isCorrect(){
OpenSimplex2F openSimplex2F = new OpenSimplex2F();
double[] noise = openSimplex2F.noise2(1234, 512, 512, 0, 0, 0.1);
OpenSimplex2F openSimplex2F = new OpenSimplex2F(1234);
double[] noise = openSimplex2F.noise2(512, 512, 0, 0, 0.1);
assertNotNull(noise);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public void useAppContext() {

@Test
public void noise2_isCorrect(){
OpenSimplex2S openSimplex2S = new OpenSimplex2S();
double[] noise = openSimplex2S.noise2(1234, 512, 512, 0, 0, 0.1);
OpenSimplex2S openSimplex2S = new OpenSimplex2S(1234);
double[] noise = openSimplex2S.noise2(512, 512, 0, 0, 0.1);
assertNotNull(noise);
}
}
45 changes: 18 additions & 27 deletions opensimplexnoiselib/src/main/cpp/OpenSimplex2F.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,15 @@ OpenSimplexGradients* newOpenSimplexGradients(OpenSimplexEnv *ose, long seed){
return osg;
}

OpenSimplexEnv *ose;
OpenSimplexGradients *osg;

JNIEXPORT void JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_init(JNIEnv* env, jobject this, jlong seed){
ose = initOpenSimplex();
osg = newOpenSimplexGradients(ose, seed);
}

/*
* Noise Evaluators
*/
Expand Down Expand Up @@ -530,11 +539,9 @@ double _noise2_Base(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xs, d
* 2D Simplex noise, standard lattice orientation.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise2(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise2(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -562,11 +569,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise2(JNIEnv* env, jobject th
* Probably slightly less optimal for heightmaps or continent maps.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise2XBeforeY(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise2XBeforeY(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -633,11 +638,9 @@ double _noise3_BCC(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xr, do
* Use noise3_XYBeforeZ or noise3_XZBeforeY instead, wherever appropriate.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3Classic(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3Classic(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -673,11 +676,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3Classic(JNIEnv* env, job
* For a time varied animation, call noise3_XYBeforeZ(x, y, T).
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3XYBeforeZ(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3XYBeforeZ(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -715,11 +716,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3XYBeforeZ(JNIEnv* env, j
* For a time varied animation, call noise3_XZBeforeY(x, T, y) or use noise3_XYBeforeZ.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3XZBeforeY(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise3XZBeforeY(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -908,11 +907,9 @@ double _noise4_Base(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xs, d
* 4D OpenSimplex2F noise, classic lattice orientation.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4Classic(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4Classic(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -943,11 +940,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4Classic(JNIEnv* env, job
* Recommended for noise(x, y, sin(time), cos(time)) trick.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XYBeforeZW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XYBeforeZW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -977,11 +972,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XYBeforeZW(JNIEnv* env,
* Recommended for 3D terrain, where X and Z (or Y and W) are horizontal.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XZBeforeYW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XZBeforeYW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1012,11 +1005,9 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XZBeforeYW(JNIEnv* env,
* Recommended for time-varied animations which texture a 3D object (W=time)
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XYZBeforeW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2F_noise4XYZBeforeW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){

jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down
45 changes: 18 additions & 27 deletions opensimplexnoiselib/src/main/cpp/OpenSimplex2S.c
Original file line number Diff line number Diff line change
Expand Up @@ -1593,6 +1593,15 @@ OpenSimplexGradients* newOpenSimplexGradients(OpenSimplexEnv *ose, long seed){
return osg;
}

OpenSimplexEnv *ose;
OpenSimplexGradients *osg;

JNIEXPORT void JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_init(JNIEnv* env, jobject this, jlong seed){
ose = initOpenSimplex();
osg = newOpenSimplexGradients(ose, seed);
}

/*
* Noise Evaluators
*/
Expand Down Expand Up @@ -1642,10 +1651,8 @@ double _noise2_Base(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xs, d
* 2D SuperSimplex noise, standard lattice orientation.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise2(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise2(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1674,10 +1681,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise2(JNIEnv* env, jobject th
* Probably slightly less optimal for heightmaps or continent maps.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise2XBeforeY(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise2XBeforeY(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1746,10 +1751,8 @@ double _noise3_BCC(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xr, do
* Use noise3_XYBeforeZ or noise3_XZBeforeY instead, wherever appropriate.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3Classic(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3Classic(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1785,10 +1788,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3Classic(JNIEnv* env, job
* For a time varied animation, call noise3_XYBeforeZ(x, y, T).
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3XYBeforeZ(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3XYBeforeZ(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1826,10 +1827,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3XYBeforeZ(JNIEnv* env, j
* For a time varied animation, call noise3_XZBeforeY(x, T, y) or use noise3_XYBeforeZ.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3XZBeforeY(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise3XZBeforeY(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1902,10 +1901,8 @@ double _noise4_Base(OpenSimplexEnv *ose, OpenSimplexGradients *osg, double xs, d
* 4D SuperSimplex noise, classic lattice orientation.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4Classic(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4Classic(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1936,10 +1933,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4Classic(JNIEnv* env, job
* Recommended for noise(x, y, sin(time), cos(time)) trick.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XYBeforeZW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XYBeforeZW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -1969,10 +1964,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XYBeforeZW(JNIEnv* env,
* Recommended for 3D terrain, where X and Z (or Y and W) are horizontal.
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XZBeforeYW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XZBeforeYW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down Expand Up @@ -2003,10 +1996,8 @@ Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XZBeforeYW(JNIEnv* env,
* Recommended for time-varied animations which texture a 3D object (W=time)
*/
JNIEXPORT jdoubleArray JNICALL
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XYZBeforeW(JNIEnv* env, jobject this, jlong seed, jint width, jint height, jint off_x, jint off_y, jdouble freq){
Java_com_jnoise_opensimplexnoiselib_OpenSimplex2S_noise4XYZBeforeW(JNIEnv* env, jobject this, jint width, jint height, jint off_x, jint off_y, jdouble freq){
jint size = width * height;
OpenSimplexEnv *ose = initOpenSimplex();
OpenSimplexGradients *osg = newOpenSimplexGradients(ose, seed);
double* noise = (double*) malloc(sizeof(double) * size);
for (int y = 0; y < height; y++){
for (int x = 0; x < width; x++){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,27 @@ public class OpenSimplex2F {
System.loadLibrary("OpenSimplex2F");
}

public native double[] noise2(long seed, int width, int height, int offX, int offY, double freq);
public OpenSimplex2F(long seed){
init(seed);
}

public native void init(long seed);

public native double[] noise2(int width, int height, int offX, int offY, double freq);

/**
* 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.
*/
public native double[] noise2XBeforeY(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise2XBeforeY(int width, int height, int offX, int offY, double freq);

/**
* 3D Re-oriented 4-point BCC noise, classic orientation.
* Proper substitute for 3D Simplex in light of Forbidden Formulae.
* Use noise3_XYBeforeZ or noise3_XZBeforeY instead, wherever appropriate.
*/
public native double[] noise3Classic(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise3Classic(int width, int height, int offX, int offY, double freq);

/**
* 3D Re-oriented 4-point BCC noise, with better visual isotropy in (X, Y).
Expand All @@ -42,7 +48,7 @@ public class OpenSimplex2F {
* If Z is vertical in world coordinates, call noise3_XYBeforeZ(x, y, Z).
* For a time varied animation, call noise3_XYBeforeZ(x, y, T).
*/
public native double[] noise3XYBeforeZ(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise3XYBeforeZ(int width, int height, int offX, int offY, double freq);

/**
* 3D Re-oriented 4-point BCC noise, with better visual isotropy in (X, Z).
Expand All @@ -52,30 +58,30 @@ public class OpenSimplex2F {
* If Z is vertical in world coordinates, call noise3_XZBeforeY(x, Z, y) or use noise3_XYBeforeZ.
* For a time varied animation, call noise3_XZBeforeY(x, T, y) or use noise3_XYBeforeZ.
*/
public native double[] noise3XZBeforeY(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise3XZBeforeY(int width, int height, int offX, int offY, double freq);

/**
* 4D OpenSimplex2F noise, classic lattice orientation.
*/
public native double[] noise4Classic(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise4Classic(int width, int height, int offX, int offY, double freq);

/**
* 4D OpenSimplex2F 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.
*/
public native double[] noise4XYBeforeZW(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise4XYBeforeZW(int width, int height, int offX, int offY, double freq);

/**
* 4D OpenSimplex2F noise, with XZ and YW forming orthogonal triangular-based planes.
* Recommended for 3D terrain, where X and Z (or Y and W) are horizontal.
*/
public native double[] noise4XZBeforeYW(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise4XZBeforeYW(int width, int height, int offX, int offY, double freq);

/**
* 4D OpenSimplex2F noise, with XYZ oriented like noise3_Classic,
* and W for an extra degree of freedom. W repeats eventually.
* Recommended for time-varied animations which texture a 3D object (W=time)
*/
public native double[] noise4XYZBeforeW(long seed, int width, int height, int offX, int offY, double freq);
public native double[] noise4XYZBeforeW(int width, int height, int offX, int offY, double freq);
}
Loading

0 comments on commit 23bb605

Please sign in to comment.