Noise generation and applications using various hashing techniques.
- Linear Function
y * width + x
- Cantor Pairing Function
((x + y) * (x + y + 1)) / 2 + y
- Szudzik Pairing Function
(x >= y) ? (x^2 + x + y) : (y^2 + x)
- Rosenberg-Strong Pairing Function
(max(x, y))^2 + max(x, y) + x - y
- Original Perlin Pairing Function
permTable[x + permTable[y]]
- Perlin Noise
- Gabor Noise
- Heavily based on the SIGGRAPH paper Procedural Noise using Sparse Gabor Convolution and related C++ implementation from Ares Lageo, Sylvain Lefebvre, George Drettakis, Philip Dutre, Katholieke Universiteit Leuven and REVES/INRIA Sophia-Antipolis.
- Perlin Noise with Marble Perturbation
- Worley Noise
- Wavelet Noise
- Perlin Noise with Splatter Perturbation
- Perlin Noise with Wood Perturbation
- Prime Gradient Noise
- Phasor Noise
- Better Gradient Noise
A user inferface, utilizing Dear, ImGui, has been implemented. This allows for an enhanced view and increased interaction with the application of which is rendered.
- CMake (Follow below or run within IDE - CLion or QTCreator)
- Run
cmake -H. Bbuild
from inside main directory. - Run
cmake --build build -- -j3
from inside main directory. - Executable located in
/build/
folder and run with./Perlin
.
- Run
There are various modes that can be enabled/disabled in Driver.cpp.
- Analysis Mode
- Outputs
<Type>Analysis_Pair<#>_Noise<#>_W<#>_H<#>.csv
of which is used to analyze results of the various functions.- Type:
Fournier or Amplitude
- Pair:
0 - Linear, 1 - Cantor, 2 - Szudzik, 3 - Rosenberg Strong, 4 - Original Perlin
- Noise:
0 - Perlin, 1 - Gabor, 2 - Marble, 3 - Worley, 4 - Experimental, 5 - Splatter, 6 - Wood, 7 - Primed Gradient
- W:
Width
- H:
Height
- Ability to enable/disable amplitude and/or Fourier analysis.
- Set
ANALYSIS
,ANALYSIS_AMPLITUDE
and/orANALYSIS_FOURIER
accordingly.
- Set
- Type:
- Outputs
- Save Noise Image Mode
- Saves an image as .bmp.
- Set
SAVE_NOISE_IMAGE
accordingly.
- Application type
- Renders and saves generated noise in the following applications:
- Texturing OBJ files
- Procedural landscape
- Set
APPLICATION_TYPE
accordingly.
- Renders and saves generated noise in the following applications:
- Assimp
- Eigen3
- OpenGP
- OpenGL
- GLEW
- GLFW3
- OpenCV
- OpenGL Mathematics
- ImGui
- Single-File Public Domain Libraries
Will be updated soon....