// This file is part of the 64k demo project. // It defines the interface for procedural texture generation. // Used to generate texture data at runtime. #pragma once #include // Procedural generation function signature // buffer: Pointer to RGBA8 buffer (size w * h * 4) // w, h: Dimensions // params: Arbitrary float parameters for the generator // 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 { // 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 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 bool make_periodic(uint8_t* buffer, int w, int h, const float* params, int num_params); } // namespace procedural