Tiled 3D Amortized Noise
A Program to Generate Infinite3D Grayscale Noise Textures with Amortized Noise
 All Classes Files Functions Variables Macros Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CFiniteAmortizedNoise3D Class Reference

The finite amortized 3D noise class. More...

#include <FiniteAmortizedNoise3D.h>

Public Member Functions

 CFiniteAmortizedNoise3D (const int n)
 Constructor.
 
 ~CFiniteAmortizedNoise3D ()
 Destructor.
 
float generate (int x, int y, int z, const int m0, const int m1, int n, float ***cell)
 Generate a cell of 3D amortized noise.
 

Private Member Functions

void initPerlinNoiseTables ()
 Initialize Perlin noise tables.
 
float getRandomUnitFloat ()
 Random float in range [-1, 1].
 
unsigned int h (const unsigned int x)
 1D hash function.
 
unsigned int h (const unsigned int x, const unsigned int y, const unsigned int z)
 3D hash function.
 
void FillUp (float *t, float s, int n)
 Fill amortized noise table bottom up.
 
void FillDn (float *t, float s, int n)
 Fill amortized noise table top down.
 
float getNoise (const int i, const int j, const int k)
 Get one point of amortized noise.
 
void getNoise (const int n, const int i0, const int j0, const int k0, float ***cell)
 
void addNoise (const int n, const int i0, const int j0, const int k0, float scale, float ***cell)
 Get 1 octave of amortized noise into cell.
 
void initSplineTable (const int n)
 Add 1 octave of amortized noise into cell.
 
void initEdgeTables (const int x, const int y, const int z, const int n)
 Initialize the amortized noise tables.
 

Private Attributes

float g3 [B][3]
 Perlin gradient table.
 
int p [B]
 Perlin permutation table.
 
float * uax
 X coordinate of u used to compute a.
 
float * vax
 X coordinate of v used to compute a.
 
float * ubx
 X coordinate of u used to compute b.
 
float * vbx
 X coordinate of v used to compute b.
 
float * uay
 Y coordinate of u used to compute a.
 
float * vay
 Y coordinate of v used to compute a.
 
float * uby
 Y coordinate of u used to compute b.
 
float * vby
 Y coordinate of v used to compute b.
 
float * ucx
 X coordinate of u used to compute c.
 
float * vcx
 X coordinate of v used to compute c.
 
float * udx
 X coordinate of u used to compute d.
 
float * vdx
 X coordinate of v used to compute d.
 
float * ucy
 Y coordinate of u used to compute c.
 
float * vcy
 Y coordinate of v used to compute c.
 
float * udy
 Y coordinate of u used to compute d.
 
float * vdy
 Y coordinate of v used to compute d.
 
float * uaz
 Z coordinate of u used to compute a.
 
float * vaz
 Z coordinate of v used to compute a.
 
float * ubz
 Z coordinate of u used to compute b.
 
float * vbz
 Z coordinate of v used to compute b.
 
float * ucz
 Z coordinate of u used to compute c.
 
float * vcz
 Z coordinate of v used to compute c.
 
float * udz
 Z coordinate of u used to compute d.
 
float * vdz
 Z coordinate of v used to compute d.
 
float * spline
 Spline array.
 

Detailed Description

Created by Ian Parberry, January 2014. Last updated May 7, 2014.The 3D amortized noise class implements the 3D amortized noise algorithm using Perlin's finite hash table.

Member Function Documentation

void CFiniteAmortizedNoise3D::addNoise ( const int  n,
const int  i0,
const int  j0,
const int  k0,
float  scale,
float ***  cell 
)
private

Add a single octave of noise into a subcell.

Parameters
nGranularity.
i0X offset of this subcell in cell.
j0Y offset of this subcell in cell.
k0Z offset of this subcell in cell.
scaleNoise is to be rescaled by this factor.
cellNoise cell.
void CFiniteAmortizedNoise3D::FillDn ( float *  t,
float  s,
int  n 
)
private

Fill amortized noise table top down.

Parameters
tAmortized noise table.
sInitial value.
nGranularity.
void CFiniteAmortizedNoise3D::FillUp ( float *  t,
float  s,
int  n 
)
private

< Fill amortized noise table bottom up.

Parameters
tAmortized noise table.
sInitial value.
nGranularity.
float CFiniteAmortizedNoise3D::generate ( int  x,
int  y,
int  z,
const int  m0,
const int  m1,
int  n,
float ***  cell 
)

< Get a cell of 1/f amortized noise. Assumes step 0.5 and lacunarity 2.0.

Parameters
xx coordinate of top left corner of cell.
yy coordinate of top left corner of cell.
zz coordinate of top left corner of cell.
m0First octave.
m1Last octave.
nGranularity.
cellGenerated noise.
float CFiniteAmortizedNoise3D::getNoise ( const int  i,
const int  j,
const int  k 
)
private

Compute a single point of a single octave of Perlin noise. This is similar to Perlin's noise3 function except that it substitutes table lookups for floating point multiplication.

Parameters
ix coordinate of point.
jy coordinate of point.
kz coordinate of point.
Returns
Noise value at (i, j, k).
void CFiniteAmortizedNoise3D::getNoise ( const int  n,
const int  i0,
const int  j0,
const int  k0,
float ***  cell 
)
private

Get a single octave of noise into a subcell.

Parameters
nGranularity.
i0X offset of this subcell in cell.
j0Y offset of this subcell in cell.
k0Z offset of this subcell in cell.
cellNoise cell.
float CFiniteAmortizedNoise3D::getRandomUnitFloat ( )
private

Get a random unit floating point number.

Returns
Random floating point number >=-1 and <=1.
unsigned int CFiniteAmortizedNoise3D::h ( const unsigned int  x)
private

A 1D hash function. Hash one dimension into a single unsigned int.

Parameters
xvalue to be hashed.
Returns
Hash of x.
unsigned int CFiniteAmortizedNoise3D::h ( const unsigned int  x,
const unsigned int  y,
const unsigned int  z 
)
private

A 3D hash function. Hash three dimensions into a single unsigned int.

Parameters
xX coordinate of value to be hashed.
yY coordinate of value to be hashed.
zZ coordinate of value to be hashed.
Returns
Hash of (x, y, z).
void CFiniteAmortizedNoise3D::initEdgeTables ( const int  x0,
const int  y0,
const int  z0,
const int  n 
)
private

Initialize amortized noise tables.

Parameters
x0x coordinate of top left front corner of cell.
y0y coordinate of top left front corner of cell.
z0z coordinate of top left front corner of cell.
nGranularity.
void CFiniteAmortizedNoise3D::initPerlinNoiseTables ( )
private

Initialize the Perlin noise tables. Loads p with a random permutation and g3 with a randomly chosen selection of unit gradients.

void CFiniteAmortizedNoise3D::initSplineTable ( const int  n)
private

Initialize the spline table.

Initialize the spline table.

Parameters
nGranularity.

The documentation for this class was generated from the following files: