summaryrefslogtreecommitdiff
path: root/src/procedural/generator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/procedural/generator.h')
-rw-r--r--src/procedural/generator.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/procedural/generator.h b/src/procedural/generator.h
index 72682b0..e57ef61 100644
--- a/src/procedural/generator.h
+++ b/src/procedural/generator.h
@@ -10,22 +10,32 @@
// buffer: Pointer to RGBA8 buffer (size w * h * 4)
// w, h: Dimensions
// params: Arbitrary float parameters for the generator
-typedef void (*ProcGenFunc)(uint8_t* buffer, int w, int h, const float* params,
+// Returns true on success, false on failure.
+typedef bool (*ProcGenFunc)(uint8_t* buffer, int w, int h, const float* params,
int num_params);
namespace procedural {
-// Example: Simple noise generator
-void gen_noise(uint8_t* buffer, int w, int h, const float* params,
+// Simple noise generator
+bool gen_noise(uint8_t* buffer, int w, int h, const float* params,
int num_params);
+// Perlin noise generator
+// Params[0]: Seed
+// Params[1]: Frequency (Scale)
+// Params[2]: Amplitude
+// Params[3]: Amplitude decay (e.g. 0.5)
+// Params[4]: Number of octaves (int)
+bool gen_perlin(uint8_t* buffer, int w, int h, const float* params,
+ int num_params);
+
// Example: Grid pattern
-void gen_grid(uint8_t* buffer, int w, int h, const float* params,
+bool gen_grid(uint8_t* buffer, int w, int h, const float* params,
int num_params);
// Post-process: Make texture periodic by blending edges
// Params[0]: Border size ratio (0.0 - 0.5), default 0.1
-void make_periodic(uint8_t* buffer, int w, int h, const float* params,
+bool make_periodic(uint8_t* buffer, int w, int h, const float* params,
int num_params);
} // namespace procedural