17#define HMAP_GRADIENT_OFFSET 0.001f
77Array
dendry(glm::ivec2 shape,
80 Array &control_function,
83 float displacement = 0.075,
84 int primitives_resolution_steps = 3,
85 float slope_power = 2.f,
86 float noise_amplitude_proportion = 0.01,
87 bool add_control_function =
true,
88 float control_function_overlap = 0.5f,
89 const Array *p_noise_x =
nullptr,
90 const Array *p_noise_y =
nullptr,
91 const Array *p_stretching =
nullptr,
92 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
95Array
dendry(glm::ivec2 shape,
98 NoiseFunction &noise_function,
99 float noise_function_offset = 0.f,
100 float noise_function_scaling = 1.f,
103 float displacement = 0.075,
104 int primitives_resolution_steps = 3,
105 float slope_power = 2.f,
106 float noise_amplitude_proportion = 0.01,
107 bool add_control_function =
true,
108 float control_function_overlap = 0.5f,
109 const Array *p_noise_x =
nullptr,
110 const Array *p_noise_y =
nullptr,
111 const Array *p_stretching =
nullptr,
112 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
160 float seeding_radius = 0.4f,
161 float seeding_outer_radius_ratio = 0.2f,
163 float noise_ratio = 0.2f);
168 size_t control_points_count = 5000,
169 glm::vec2 seed_position = {0.5f, 0.5f},
171 float stop_proba = 1.f,
175 const Array *p_noise_x =
nullptr,
176 const Array *p_noise_y =
nullptr);
224 const Array *p_noise_x =
nullptr,
225 const Array *p_noise_y =
nullptr,
226 const Array *p_stretching =
nullptr,
227 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
266 float persistence = 0.5f,
267 float lacunarity = 2.f,
268 const Array *p_ctrl_param =
nullptr,
269 const Array *p_noise_x =
nullptr,
270 const Array *p_noise_y =
nullptr,
271 const Array *p_stretching =
nullptr,
272 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
312 float persistence = 0.5f,
313 float lacunarity = 2.f,
314 float gradient_scale = 0.05f,
315 const Array *p_ctrl_param =
nullptr,
316 const Array *p_noise_x =
nullptr,
317 const Array *p_noise_y =
nullptr,
318 const Array *p_stretching =
nullptr,
319 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
362 float persistence = 0.5f,
363 float lacunarity = 2.f,
366 float warp_scale = 0.4f,
367 float damp_scale = 1.f,
368 const Array *p_ctrl_param =
nullptr,
369 const Array *p_noise_x =
nullptr,
370 const Array *p_noise_y =
nullptr,
371 const Array *p_stretching =
nullptr,
372 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
411 float persistence = 0.5f,
412 float lacunarity = 2.f,
414 const Array *p_ctrl_param =
nullptr,
415 const Array *p_noise_x =
nullptr,
416 const Array *p_noise_y =
nullptr,
417 const Array *p_stretching =
nullptr,
418 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
457 float persistence = 0.5f,
458 float lacunarity = 2.f,
459 const Array *p_ctrl_param =
nullptr,
460 const Array *p_noise_x =
nullptr,
461 const Array *p_noise_y =
nullptr,
462 const Array *p_stretching =
nullptr,
463 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
503 float persistence = 0.5f,
504 float lacunarity = 2.f,
505 float k_smoothing = 0.1f,
506 const Array *p_ctrl_param =
nullptr,
507 const Array *p_noise_x =
nullptr,
508 const Array *p_noise_y =
nullptr,
509 const Array *p_stretching =
nullptr,
510 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
550 float persistence = 0.5f,
551 float lacunarity = 2.f,
552 float warp_scale = 0.1f,
553 const Array *p_ctrl_param =
nullptr,
554 const Array *p_noise_x =
nullptr,
555 const Array *p_noise_y =
nullptr,
556 const Array *p_stretching =
nullptr,
557 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
587 const Array *p_ctrl_param =
nullptr,
588 const Array *p_noise_x =
nullptr,
589 const Array *p_noise_y =
nullptr,
590 const Array *p_stretching =
nullptr,
591 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
625 float angle_spread_ratio = 1.f,
626 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
632 float angle_spread_ratio = 1.f,
633 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
671 float angle_spread_ratio = 1.f,
674 float persistence = 0.5f,
675 float lacunarity = 2.f,
676 const Array *p_ctrl_param =
nullptr,
677 const Array *p_noise_x =
nullptr,
678 const Array *p_noise_y =
nullptr,
679 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
685 float angle_spread_ratio = 1.f,
688 float persistence = 0.5f,
689 float lacunarity = 2.f,
690 const Array *p_ctrl_param =
nullptr,
691 const Array *p_noise_x =
nullptr,
692 const Array *p_noise_y =
nullptr,
693 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
746 float amplitude = 0.05f,
747 float angle_spread_ratio = 1.f,
748 glm::vec2 kw_multiplier = {4.f, 4.f},
749 float slope_strength = 1.f,
750 float branch_strength = 2.f,
751 float z_cut_min = 0.2f,
752 float z_cut_max = 1.f,
754 float persistence = 0.4f,
755 float lacunarity = 2.f,
756 const Array *p_ctrl_param =
nullptr,
757 const Array *p_noise_x =
nullptr,
758 const Array *p_noise_y =
nullptr,
759 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
765 float amplitude = 0.05f,
766 float angle_spread_ratio = 1.f,
767 glm::vec2 kw_multiplier = {4.f, 4.f},
768 float slope_strength = 1.f,
769 float branch_strength = 2.f,
770 float z_cut_min = 0.2f,
771 float z_cut_max = 1.f,
773 float persistence = 0.4f,
774 float lacunarity = 2.f,
775 const Array *p_ctrl_param =
nullptr,
776 const Array *p_noise_x =
nullptr,
777 const Array *p_noise_y =
nullptr,
778 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
783 float amplitude = 0.05f,
784 glm::vec2 kw_multiplier = {4.f, 4.f},
785 float slope_strength = 1.f,
786 float branch_strength = 2.f,
787 float z_cut_min = 0.2f,
788 float z_cut_max = 1.f,
790 float persistence = 0.4f,
791 float lacunarity = 2.f,
792 const Array *p_ctrl_param =
nullptr,
793 const Array *p_noise_x =
nullptr,
794 const Array *p_noise_y =
nullptr,
795 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
808 const Array *p_noise_x =
nullptr,
809 const Array *p_noise_y =
nullptr,
810 const Array *p_stretching =
nullptr,
811 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
812 glm::ivec2 period = {0, 0});
827 float persistence = 0.5f,
828 float lacunarity = 2.f,
829 const Array *p_ctrl_param =
nullptr,
830 const Array *p_noise_x =
nullptr,
831 const Array *p_noise_y =
nullptr,
832 const Array *p_stretching =
nullptr,
833 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
834 glm::ivec2 period = {0, 0});
867 float angle_shift = 0.f,
868 int n_kernel_samples = 8,
869 const glm::vec2 jitter = {1.f, 1.f},
871 float phase_smoothing = 10.f,
872 const Array *p_angle =
nullptr,
873 const Array *p_noise_x =
nullptr,
874 const Array *p_noise_y =
nullptr,
875 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
912 float angle_shift = 0.f,
915 float persistence = 0.5f,
916 float lacunarity = 2.f,
917 int n_kernel_samples = 8,
918 const glm::vec2 jitter = {1.f, 1.f},
920 float phase_smoothing = 10.f,
921 const Array *p_angle =
nullptr,
922 const Array *p_noise_x =
nullptr,
923 const Array *p_noise_y =
nullptr,
924 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
974 float k_smoothing = 0.f,
975 float exp_sigma = 0.f,
977 float alpha_span = M_PI,
979 const Array *p_noise_x =
nullptr,
980 const Array *p_noise_y =
nullptr,
981 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
982 glm::vec4 bbox_points = {0.f, 1.f, 0.f, 1.f});
1043 float k_smoothing = 0.f,
1044 float exp_sigma = 0.f,
1046 float alpha_span = M_PI,
1049 float weight = 0.7f,
1050 float persistence = 0.5f,
1051 float lacunarity = 2.f,
1052 const Array *p_noise_x =
nullptr,
1053 const Array *p_noise_y =
nullptr,
1054 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
1055 glm::vec4 bbox_points = {0.f, 1.f, 0.f, 1.f});
1096Array
voronoi(glm::ivec2 shape,
1099 glm::vec2 jitter = {0.5f, 0.5f},
1100 float k_smoothing = 0.f,
1101 float exp_sigma = 0.f,
1103 const Array *p_ctrl_param =
nullptr,
1104 const Array *p_noise_x =
nullptr,
1105 const Array *p_noise_y =
nullptr,
1106 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1157 glm::vec2 jitter = {0.5f, 0.5f},
1158 float k_smoothing = 0.f,
1159 float exp_sigma = 0.f,
1162 float weight = 0.7f,
1163 float persistence = 0.5f,
1164 float lacunarity = 2.f,
1165 const Array *p_ctrl_param =
nullptr,
1166 const Array *p_noise_x =
nullptr,
1167 const Array *p_noise_y =
nullptr,
1168 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1199 glm::vec2 jitter = {0.5f, 0.5f},
1200 const Array *p_ctrl_param =
nullptr,
1201 const Array *p_noise_x =
nullptr,
1202 const Array *p_noise_y =
nullptr,
1203 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1246 const Array *p_noise_x =
nullptr,
1247 const Array *p_noise_y =
nullptr,
1248 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1283 float weight = 0.7f,
1284 float persistence = 0.5f,
1285 float lacunarity = 2.f,
1286 const Array *p_ctrl_param =
nullptr,
1287 const Array *p_noise_x =
nullptr,
1288 const Array *p_noise_y =
nullptr,
1289 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1343 float k_smoothing = 0.f,
1344 float exp_sigma = 0.f,
1346 const Array *p_noise_x =
nullptr,
1347 const Array *p_noise_y =
nullptr,
1348 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f},
1349 glm::vec4 bbox_points = {0.f, 1.f, 0.f, 1.f});
1352 const std::vector<float> &xp,
1353 const std::vector<float> &yp,
1354 float k_smoothing = 0.f,
1355 float exp_sigma = 0.f,
1357 const Array *p_noise_x =
nullptr,
1358 const Array *p_noise_y =
nullptr,
1359 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
1420 float kw_multiplier = 2.f,
1421 float vorticity = 0.f,
1422 float density = 1.f,
1424 float weight = 0.7f,
1425 float persistence = 0.5f,
1426 float lacunarity = 2.f,
1427 const Array *p_ctrl_param =
nullptr,
1428 const Array *p_noise_x =
nullptr,
1429 const Array *p_noise_y =
nullptr,
1430 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Defines modular function objects for procedural generation, including noise algorithms (Perlin,...
Header file for 2D interpolation methods.
Definition blending.hpp:186
Array phasor_fbm(PhasorProfile phasor_profile, glm::ivec2 shape, float kp_global, std::uint32_t seed, float angle_shift=0.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, int n_kernel_samples=8, const glm::vec2 jitter={1.f, 1.f}, float delta=0.01f, float phase_smoothing=10.f, const Array *p_angle=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a multi-octave (fBm) phasor-based pattern.
Definition phasor.cpp:74
Array noise_fbm(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::ivec2 period={0, 0})
See hmap::noise_fbm. period sets the tiling period in lattice cells for the base octave....
Definition primitives_gpu.cpp:543
Array voronoise_fbm(glm::ivec2 shape, glm::vec2 kw, float u_param, float v_param, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Voronoise.
Definition primitives_gpu.cpp:970
Array vorolines(glm::ivec2 shape, float density, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, float alpha=0.f, float alpha_span=M_PI, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi-based pattern where cells are defined by proximity to random lines.
Definition primitives_gpu.cpp:719
Array voronoise(glm::ivec2 shape, glm::vec2 kw, float u_param, float v_param, std::uint32_t seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a 2D Voronoi noise array.
Definition primitives_gpu.cpp:935
Array vorolines_fbm(glm::ivec2 shape, float density, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, float alpha=0.f, float alpha_span=M_PI, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi-based pattern using distances to lines defined by random points and angles,...
Definition primitives_gpu.cpp:798
Array vororand(glm::ivec2 shape, float density, float variability, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
Generates a 2D Voronoi-based scalar field using OpenCL.
Definition primitives_gpu.cpp:1052
Array gavoronoise(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float amplitude=0.05f, float angle_spread_ratio=1.f, glm::vec2 kw_multiplier={4.f, 4.f}, float slope_strength=1.f, float branch_strength=2.f, float z_cut_min=0.2f, float z_cut_max=1.f, int octaves=8, float persistence=0.4f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a 2D array using the GavoroNoise algorithm, which is a procedural noise technique for terra...
Definition primitives_gpu.cpp:177
Array wavelet_noise(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float kw_multiplier=2.f, float vorticity=0.f, float density=1.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates 2D wavelet noise using an OpenCL kernel.
Definition primitives_gpu.cpp:1144
Array gabor_wave(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float angle_spread_ratio=1.f, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Gabor noise.
Definition primitives_gpu.cpp:53
Array voronoi(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi diagram in a 2D array with configurable properties.
Definition primitives_gpu.cpp:843
Array voronoi_fbm(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi diagram in a 2D array with configurable properties.
Definition primitives_gpu.cpp:885
Array phasor(PhasorProfile phasor_profile, glm::ivec2 shape, float kp_global, std::uint32_t seed, float angle_shift=0.f, int n_kernel_samples=8, const glm::vec2 jitter={1.f, 1.f}, float delta=0.01f, float phase_smoothing=10.f, const Array *p_angle=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Generates a procedural phasor-based pattern.
Definition phasor.cpp:17
Array noise(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::ivec2 period={0, 0})
See hmap::noise. period sets the tiling period in lattice cells. For the heightmap to be periodic wit...
Definition primitives_gpu.cpp:504
Array gabor_wave_fbm(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float angle_spread_ratio=1.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Gabor noise.
Definition primitives_gpu.cpp:96
Array voronoi_edge_distance(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Computes the Voronoi edge distance.
Definition primitives_gpu.cpp:1016
Definition algebra.hpp:23
Array dendry(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, Array &control_function, float eps=0.05, int resolution=1, float displacement=0.075, int primitives_resolution_steps=3, float slope_power=2.f, float noise_amplitude_proportion=0.01, bool add_control_function=true, float control_function_overlap=0.5f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, int subsampling=1)
Dendry is a locally computable procedural function that generates branching patterns at various scale...
Definition dendry.cpp:31
Array diffusion_limited_aggregation_trimesh(glm::ivec2 shape, std::uint32_t seed, size_t control_points_count=5000, glm::vec2 seed_position={0.5f, 0.5f}, float ratio=0.98f, float stop_proba=1.f, float slope=16.f, InterpolationMethod2D interpolation_method=InterpolationMethod2D::ITP2D_DELAUNAY_GRADIENT, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr)
Definition diffusion_limited_aggregation.cpp:113
Array gabor_noise(glm::ivec2 shape, float kw, float angle, int width, float density, std::uint32_t seed)
Return a sparse Gabor noise.
Definition gabor.cpp:17
Array noise_ridged(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, float k_smoothing=0.1f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm ridged noise.
Definition noise.cpp:230
Array diffusion_limited_aggregation(glm::ivec2 shape, float scale, std::uint32_t seed, float seeding_radius=0.4f, float seeding_outer_radius_ratio=0.2f, float slope=8.f, float noise_ratio=0.2f)
Generates a diffusion-limited aggregation (DLA) pattern.
Definition diffusion_limited_aggregation.cpp:25
InterpolationMethod2D
Enumeration of 2D interpolation methods.
Definition interpolate2d.hpp:47
@ ITP2D_DELAUNAY_GRADIENT
Delaunay triangulation + linear gradient.
Definition interpolate2d.hpp:53
PhasorProfile
Phasor angular profile type.
Definition profiles.hpp:38
Array noise_pingpong(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm pingpong noise.
Definition noise.cpp:194
Array slope(glm::ivec2 shape, float angle, float slope, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec2 center={0.5f, 0.5f}, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array corresponding to a slope with a given overall.
Definition primitives.cpp:288
Array noise_fbm(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:41
Array noise_jordan(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, float warp0=0.4f, float damp0=1.f, float warp_scale=0.4f, float damp_scale=1.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:115
VoronoiReturnType
Selects the value returned by the Voronoi evaluation.
Definition coherent_noise.hpp:29
@ EDGE_DISTANCE_SQUARED
Squared edge distance.
Definition coherent_noise.hpp:36
@ F1_SQUARED
Returns F1^2.
Definition coherent_noise.hpp:30
@ CONSTANT_F2MF1_SQUARED
Constant × (F2 - F1)^2.
Definition coherent_noise.hpp:38
@ F2_SQUARED
Returns F2^2.
Definition coherent_noise.hpp:31
@ CONSTANT
Constant value.
Definition coherent_noise.hpp:37
@ F1TF2_SQUARED
Returns (F1 * F2)^2.
Definition coherent_noise.hpp:32
@ F2MF1_SQUARED
Returns (F2 - F1)^2.
Definition coherent_noise.hpp:34
@ F1DF2_SQUARED
Returns (F1 / F2)^2.
Definition coherent_noise.hpp:33
@ EDGE_DISTANCE_EXP
Exponential edge distance.
Definition coherent_noise.hpp:35
Array worley_double(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float ratio=0.5f, float k=0.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with the maximum of two Worley (cellular) noises.
Definition worley.cpp:15
Array noise_parberry(glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, float mu=1.02f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherent fbm Parberry variant of Perlin noise.
Definition noise.cpp:159
Array noise(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence noise.
Definition noise.cpp:16
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:46
NoiseType
Enumeration of various noise types used for procedural generation.
Definition functions.hpp:67
Array noise_iq(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, float gradient_scale=0.05f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:77
Array noise_swiss(NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, float warp_scale=0.1f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm swiss noise.
Definition noise.cpp:268