mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 07:17:42 -05:00
Updated open-simplex to have const noise functions
"open-simplex-noise-in-c" now updated to master and "opensimplex" module refactored accordingly
This commit is contained in:
20
thirdparty/misc/open-simplex-noise.c
vendored
20
thirdparty/misc/open-simplex-noise.c
vendored
@@ -100,27 +100,27 @@ static const signed char gradients4D[] = {
|
||||
-3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3,
|
||||
};
|
||||
|
||||
static double extrapolate2(struct osn_context *ctx, int xsb, int ysb, double dx, double dy)
|
||||
static double extrapolate2(const struct osn_context *ctx, int xsb, int ysb, double dx, double dy)
|
||||
{
|
||||
int16_t *perm = ctx->perm;
|
||||
const int16_t *perm = ctx->perm;
|
||||
int index = perm[(perm[xsb & 0xFF] + ysb) & 0xFF] & 0x0E;
|
||||
return gradients2D[index] * dx
|
||||
+ gradients2D[index + 1] * dy;
|
||||
}
|
||||
|
||||
static double extrapolate3(struct osn_context *ctx, int xsb, int ysb, int zsb, double dx, double dy, double dz)
|
||||
static double extrapolate3(const struct osn_context *ctx, int xsb, int ysb, int zsb, double dx, double dy, double dz)
|
||||
{
|
||||
int16_t *perm = ctx->perm;
|
||||
int16_t *permGradIndex3D = ctx->permGradIndex3D;
|
||||
const int16_t *perm = ctx->perm;
|
||||
const int16_t *permGradIndex3D = ctx->permGradIndex3D;
|
||||
int index = permGradIndex3D[(perm[(perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF];
|
||||
return gradients3D[index] * dx
|
||||
+ gradients3D[index + 1] * dy
|
||||
+ gradients3D[index + 2] * dz;
|
||||
}
|
||||
|
||||
static double extrapolate4(struct osn_context *ctx, int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw)
|
||||
static double extrapolate4(const struct osn_context *ctx, int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw)
|
||||
{
|
||||
int16_t *perm = ctx->perm;
|
||||
const int16_t *perm = ctx->perm;
|
||||
int index = perm[(perm[(perm[(perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF] + wsb) & 0xFF] & 0xFC;
|
||||
return gradients4D[index] * dx
|
||||
+ gradients4D[index + 1] * dy
|
||||
@@ -227,7 +227,7 @@ void open_simplex_noise_free(struct osn_context *ctx)
|
||||
// -- GODOT end --
|
||||
|
||||
/* 2D OpenSimplex (Simplectic) Noise. */
|
||||
double open_simplex_noise2(struct osn_context *ctx, double x, double y)
|
||||
double open_simplex_noise2(const struct osn_context *ctx, double x, double y)
|
||||
{
|
||||
|
||||
/* Place input coordinates onto grid. */
|
||||
@@ -355,7 +355,7 @@ double open_simplex_noise2(struct osn_context *ctx, double x, double y)
|
||||
/*
|
||||
* 3D OpenSimplex (Simplectic) Noise
|
||||
*/
|
||||
double open_simplex_noise3(struct osn_context *ctx, double x, double y, double z)
|
||||
double open_simplex_noise3(const struct osn_context *ctx, double x, double y, double z)
|
||||
{
|
||||
|
||||
/* Place input coordinates on simplectic honeycomb. */
|
||||
@@ -928,7 +928,7 @@ double open_simplex_noise3(struct osn_context *ctx, double x, double y, double z
|
||||
/*
|
||||
* 4D OpenSimplex (Simplectic) Noise.
|
||||
*/
|
||||
double open_simplex_noise4(struct osn_context *ctx, double x, double y, double z, double w)
|
||||
double open_simplex_noise4(const struct osn_context *ctx, double x, double y, double z, double w)
|
||||
{
|
||||
double uins;
|
||||
double dx1, dy1, dz1, dw1;
|
||||
|
||||
6
thirdparty/misc/open-simplex-noise.h
vendored
6
thirdparty/misc/open-simplex-noise.h
vendored
@@ -47,9 +47,9 @@ int open_simplex_noise(int64_t seed, struct osn_context *ctx);
|
||||
//int open_simplex_noise_init_perm(struct osn_context *ctx, int16_t p[], int nelements);
|
||||
// -- GODOT end --
|
||||
void open_simplex_noise_free(struct osn_context *ctx);
|
||||
double open_simplex_noise2(struct osn_context *ctx, double x, double y);
|
||||
double open_simplex_noise3(struct osn_context *ctx, double x, double y, double z);
|
||||
double open_simplex_noise4(struct osn_context *ctx, double x, double y, double z, double w);
|
||||
double open_simplex_noise2(const struct osn_context *ctx, double x, double y);
|
||||
double open_simplex_noise3(const struct osn_context *ctx, double x, double y, double z);
|
||||
double open_simplex_noise4(const struct osn_context *ctx, double x, double y, double z, double w);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user