Skip to content

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

License

Notifications You must be signed in to change notification settings

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

No packages published