FFmpeg
Loading...
Searching...
No Matches
perlin.c File Reference

Perlin Noise generator, based on code from: https://adrianb.io/2014/08/09/perlinnoise.html. More...

#include <math.h>
#include "libavutil/lfg.h"
#include "libavutil/random_seed.h"
#include "perlin.h"

Go to the source code of this file.

Functions

static int inc (int num, int period)
 
static double grad (int hash, double x, double y, double z)
 
static double fade (double t)
 
static double lerp (double a, double b, double x)
 
int ff_perlin_init (FFPerlin *perlin, double period, int octaves, double persistence, enum FFPerlinRandomMode random_mode, unsigned int random_seed)
 Initialize the Perlin noise generator with parameters.
 
static double perlin_get (FFPerlin *perlin, double x, double y, double z)
 
double ff_perlin_get (FFPerlin *perlin, double x, double y, double z)
 Compute Perlin noise given the x, y, z coordinates.
 

Variables

static uint8_t ken_permutations []
 

Detailed Description

Perlin Noise generator, based on code from: https://adrianb.io/2014/08/09/perlinnoise.html.

Original article from Ken Perlin: http://mrl.nyu.edu/~perlin/paper445.pdf

Definition in file perlin.c.

Function Documentation

◆ inc()

static int inc ( int num,
int period )
inlinestatic

◆ grad()

static double grad ( int hash,
double x,
double y,
double z )
inlinestatic

◆ fade()

static double fade ( double t)
inlinestatic

Definition at line 66 of file perlin.c.

Referenced by perlin_get().

◆ lerp()

static double lerp ( double a,
double b,
double x )
static

Definition at line 75 of file perlin.c.

Referenced by lerp(), and perlin_get().

◆ ff_perlin_init()

int ff_perlin_init ( FFPerlin * perlin,
double period,
int octaves,
double persistence,
enum FFPerlinRandomMode random_mode,
unsigned int random_seed )

Initialize the Perlin noise generator with parameters.

Parameters
perlinPerlin noise generator context
periodspatial repeat period, if negative it is ignored
octavestotal number of components making up the noise, each one with doubled frequency
persistencedefine ratio used to compute the amplitude of the next octave component with respect to the previous component
random_modedefine how to compute the permutations array
random_seedwhen random_mode is set to FF_PERLIN_RANDOM_MODE_RANDOM, set random seed used to compute the permutations array
Returns
a negative AVERROR code in case of error, a non negative value otherwise

Definition at line 101 of file perlin.c.

Referenced by init().

◆ perlin_get()

static double perlin_get ( FFPerlin * perlin,
double x,
double y,
double z )
static

Definition at line 141 of file perlin.c.

Referenced by ff_perlin_get().

◆ ff_perlin_get()

double ff_perlin_get ( FFPerlin * perlin,
double x,
double y,
double z )

Compute Perlin noise given the x, y, z coordinates.

Parameters
perlinPerlin noise generator context
Returns
normalized value for the perlin noise, in the range [0, 1]

Definition at line 208 of file perlin.c.

Referenced by request_frame().

Variable Documentation

◆ ken_permutations

uint8_t ken_permutations[]
static
Initial value:
= {
151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225,
140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148,
247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32,
57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175,
74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122,
60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54,
65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169,
200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64,
52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212,
207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213,
119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,
129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104,
218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241,
81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157,
184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93,
222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180
}

Definition at line 82 of file perlin.c.

Referenced by ff_perlin_init().