FFmpeg
Functions | Variables
perlin.c File Reference
#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. More...
 
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. More...
 

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

Definition at line 42 of file perlin.c.

Referenced by alf_classify(), calculate_blockiness(), and perlin_get().

◆ 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 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().