#noise #ffi #c


An FFI for *noise-rs* to be used by non-Rust code

1 unstable release

Uses old Rust 2015

0.1.0 Jun 22, 2016

#43 in #noise


56 lines

An FFI for noise-rs

A C FFI for noise-rs.

If you just want to generate noise in Rust, use noise-rs directly.


See src/*.

Implemented functionality

  • Perlin noise 2 - 4
  • OpenSimplex noise 2 - 3
  • Cell noise (also: Worley noise, Voronoi noise)
    • Value 2 - 4
    • Range 2 - 4
    • Range Inv 2 - 4
  • Cell noise with Manhattan distance
    • Value 2 - 4
    • Range 2 - 4
    • Range Inv 2 - 4


This library is dual-licensed as MIT and Apache v2.0, the same as the Rust language itself. You may choose from both depending on your needs.


Exposes a subset of functions from noise-rs in a C-compatible FFI interface.


Use this library in a non-Rust setting. If you're programming in rust, just use noise-rs directly.

Creating a Seed object

Create a Seed using the noise_seed_new function. It accepts an unsigned 32-bit integer and returns a new pointer to the Seed object.

Seed *seed = noise_seed_new((uint32_t) 42);

Using the Seed object for generating noise

You can now use that pointer with the noise generation functions. Here's an example using 3D Perlin noise.

double val = noise_perlin3(seed, 0.2, 0.3, 1.5);

Freeing the Seed object

When you're done using the Seed object, you'll need to free it. To do that, use the noise_seed_delete function.



~17K SLoC