Skip to content

VaeDeveloper/NoiseGenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Noise Generator

C++17 OpenGL GLFW ImGui Platform License: MIT

An interactive C++ desktop application for generating and visualizing procedural 2D noise with customizable parameters, real-time preview rendering, and flexible preset management.

✨ Features

  • ✅ Procedural 2D noise generation (Perlin + turbulence + marbling)
  • ✅ Real-time GUI interface using ImGui with docking support
  • ✅ Adjustable parameters: resolution, seed, roughness, marbling, frequency skips
  • ✅ Turbulence distortion with exponential shifting and offsets
  • ✅ Support for preset saving, loading, and deletion via .json
  • ✅ Live preview of generated noise textures
  • ✅ Export to .png, .tga, .bmp and .jpg formats
  • ✅ Built-in logger (with UI panel and save-to-file functionality)
  • ✅ Asynchronous generation with visual progress

📸 Preview

Noise Generator Preview


🧩 Supported Noise Types

Available in the NoiseType:

  • Value
  • Perlin
  • Simplex
  • FBM (Fractal Brownian Motion)
  • Worley
  • Ridged
  • Billow
  • DomainWarp
  • Cellular
  • Voronoi
  • Gabor
  • White Noise
  • OpenSimplex

📦 Easily extendable via NoiseType, generator dispatch, and serialization logic.


💾 Presets System

Each preset saves the full set of NoiseProperties, resolution, and noise type:

  • ✅ Save current parameters to a .json preset
  • ✅ Load and apply presets instantly via combo box
  • ✅ Delete presets via GUI
  • ✅ Stored in presets/ folder as JSON files

🧩 Dependencies

Library Purpose
GLFW Window & input handling
GLAD OpenGL function loader
Dear ImGui GUI rendering
Native File Dialog Native File Dialog
inih .INI file parser
stb_image_write PNG & TGA image saving
OpenGL 4.3+ GPU rendering backend
IconsFontAwesome5 icons for ImGui

🛠 Building & Development

This project uses CMake ≥ 3.11 and automatically fetches all dependencies via FetchContent. No manual setup is required.

✅ Requirements

  • CMake ≥ 3.11
  • C++17 compatible compiler
  • OpenGL 4.3+ capable GPU
  • Internet connection (to fetch dependencies)

🔧 Quick Start (Windows / Visual Studio)

To build and run the project with minimal effort:

git clone https://github.com/VaeDeveloper/NoiseGenerator.git
cd NoiseGenerator
dev_ops\generate_project.bat
dev_ops\build_project.bat

🧪 Running Tests

You can configure and build tests using a special flag:

dev_ops\generate_project.bat
change 3 - testing options

🧠 Roadmap / Ideas

  • Export to .bmp / .jpg
  • Native File Dialog (save/load image)
  • Save/load presets as .json
  • Multi-threaded generation (tile-based)
  • GPU acceleration (OpenGL compute shaders)
  • Save/restore UI layout (ImGui settings)
  • CLI interface for headless noise export

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

An interactive C++ desktop application for generating and visualizing procedural 2D noise (including Perlin noise) with customizable parameters, preview rendering, and export options.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors