#ifndef DC_GENERATOR_NOISE_H
#define DC_GENERATOR_NOISE_H
#include "dc_generator.h"
#include "dc_density.h"
// Wraps the existing DCDensity as a DCGenerator implementation.
//
// DCDensity is non-copyable, so configure via the public `density` member:
// DCGeneratorNoise gen;
// gen.density.configure(config);
// float d = gen.evaluate(x, y, z, lod_voxel_size);
class DCGeneratorNoise : public DCGenerator {
public:
DCDensity density;
float evaluate(float x, float y, float z, float lod_voxel_size) override {
return density.evaluate(x, y, z, lod_voxel_size);
}
// Noise generator has a GPU shader (noise_sdf.glsl).
// DCWorker loads it from res://shaders/generators/noise_sdf.glsl.
bool has_gpu_shader() const override { return true; }
bool get_bounds(float min[3], float max[3]) const override {
float ts = density.config().terrain_size;
if (ts <= 0) return false;
float half = ts * 0.5f;
min[0] = -half; min[1] = -half; min[2] = -half;
max[0] = half; max[1] = half; max[2] = half;
return true;
}
};
#endif // DC_GENERATOR_NOISE_H