Skip to content

A library consisting of implementations of various synthetic noises, tools for evaluation of noise functions and programs for virtual geometry and texture generations

License

jijup/OpenSN

Repository files navigation

ProceduralNoise

Noise generation and applications using various hashing techniques.

Pairing Function Implementations:

  1. Linear Function
    • y * width + x
  2. Cantor Pairing Function
    • ((x + y) * (x + y + 1)) / 2 + y
  3. Szudzik Pairing Function
    • (x >= y) ? (x^2 + x + y) : (y^2 + x)
  4. Rosenberg-Strong Pairing Function
    • (max(x, y))^2 + max(x, y) + x - y
  5. Original Perlin Pairing Function
    • permTable[x + permTable[y]]

Noise Implementations:

  1. Perlin Noise
  2. 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.
  3. Perlin Noise with Marble Perturbation
  4. Worley Noise
  5. Wavelet Noise
  6. Perlin Noise with Splatter Perturbation
  7. Perlin Noise with Wood Perturbation
  8. Prime Gradient Noise
  9. Phasor Noise
  10. Better Gradient Noise

UI Implementation:

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.

UI Image UI Image

Building & Running:

  1. 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.

Other Considerations:

There are various modes that can be enabled/disabled in Driver.cpp.

  1. 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/or ANALYSIS_FOURIER accordingly.
  2. Save Noise Image Mode
    • Saves an image as .bmp.
    • Set SAVE_NOISE_IMAGE accordingly.
  3. Application type
    • Renders and saves generated noise in the following applications:
      • Texturing OBJ files
      • Procedural landscape
    • Set APPLICATION_TYPE accordingly.

Library Requirements:

  1. Assimp
  2. Eigen3
  3. OpenGP
  4. OpenGL
  5. GLEW
  6. GLFW3
  7. OpenCV
  8. OpenGL Mathematics
  9. ImGui
  10. Single-File Public Domain Libraries

References

Will be updated soon....

About

A library consisting of implementations of various synthetic noises, tools for evaluation of noise functions and programs for virtual geometry and texture generations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published