Skip to content

Commit

Permalink
Fix discontinuities in 3D rust OpenSimplex2S (opensimplex2::smooth)
Browse files Browse the repository at this point in the history
  • Loading branch information
KdotJPG committed Apr 1, 2023
1 parent e8a5a2e commit 45cc32d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 26 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
target
6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[package]
name = "opensimplex2"
version = "1.0.0"
version = "1.0.1"
edition = "2021"

description = "Port of OpenSimplex2"
authors = ["KdotJPG"]
license = "CC0-1.0"
repository = "https://github.com/KdotJPG/OpenSimplex2"
categories = ["algorithms"]
keywords = ["OpenSimplex", "noise"]
categories = ["algorithms", "graphics", "game-development"]
keywords = ["OpenSimplex", "Simplex", "noise", "random", "Perlin"]

# omit java, etc. from .crate file
include = [
Expand Down
46 changes: 23 additions & 23 deletions rust/smooth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,9 +302,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a0 * a0)
* grad3(
seed,
xrbp + Wrapping(xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(zNMask as i64) & Wrapping(PRIME_Z)),
x0,
y0,
z0,
Expand Down Expand Up @@ -346,9 +346,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a2 * a2)
* grad3(
seed,
xrbp + Wrapping(!xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(!xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(zNMask as i64) & Wrapping(PRIME_Z)),
x2,
y2,
z2,
Expand All @@ -363,9 +363,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a3 * a3)
* grad3(
seed,
xrbp + Wrapping(xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(!yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(!zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(!yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(!zNMask as i64) & Wrapping(PRIME_Z)),
x3,
y3,
z3,
Expand All @@ -381,7 +381,7 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a4 * a4)
* grad3(
seed2,
xrbp + (Wrapping(xNMask as i64) & (Wrapping(PRIME_X) * Wrapping(2))),
xrbp + (Wrapping(xNMask as i64) & (Wrapping(PRIME_X) << 1)),
yrbp + Wrapping(PRIME_Y),
zrbp + Wrapping(PRIME_Z),
x4,
Expand All @@ -402,9 +402,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a6 * a6)
* grad3(
seed,
xrbp + Wrapping(xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(!yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(!yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(zNMask as i64) & Wrapping(PRIME_Z)),
x6,
y6,
z6,
Expand All @@ -419,9 +419,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a7 * a7)
* grad3(
seed,
xrbp + Wrapping(!xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(!zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(!xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(!zNMask as i64) & Wrapping(PRIME_Z)),
x7,
y7,
z7,
Expand Down Expand Up @@ -458,9 +458,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (aA * aA)
* grad3(
seed,
xrbp + Wrapping(xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(!zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(!zNMask as i64) & Wrapping(PRIME_Z)),
xA,
yA,
zA,
Expand All @@ -475,9 +475,9 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (aB * aB)
* grad3(
seed,
xrbp + Wrapping(!xNMask as i64) & Wrapping(PRIME_X),
yrbp + Wrapping(!yNMask as i64) & Wrapping(PRIME_Y),
zrbp + Wrapping(zNMask as i64) & Wrapping(PRIME_Z),
xrbp + (Wrapping(!xNMask as i64) & Wrapping(PRIME_X)),
yrbp + (Wrapping(!yNMask as i64) & Wrapping(PRIME_Y)),
zrbp + (Wrapping(zNMask as i64) & Wrapping(PRIME_Z)),
xB,
yB,
zB,
Expand Down Expand Up @@ -534,7 +534,7 @@ fn noise3_UnrotatedBase(seed: i64, xr: f64, yr: f64, zr: f64) -> f32 {
* (a9 * a9)
* grad3(
seed2,
xrbp + (Wrapping(xNMask as i64) & (Wrapping(PRIME_X) * Wrapping(2))),
xrbp + (Wrapping(xNMask as i64) & (Wrapping(PRIME_X) << 1)),
yrbp + Wrapping(PRIME_Y),
zrbp + (Wrapping(zNMask as i64) & (Wrapping(PRIME_Z) << 1)),
x9,
Expand Down

0 comments on commit 45cc32d

Please sign in to comment.