18#include "FastNoiseLite.h"
23#define HMAP_GRADIENT_OFFSET 0.001f
63 const Array *p_ctrl_param =
nullptr,
64 const Array *p_noise_x =
nullptr,
65 const Array *p_noise_y =
nullptr,
66 const Array *p_stretching =
nullptr,
67 Vec2<float> center = {0.5f, 0.5f},
68 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
89Array
bump(Vec2<int> shape,
91 const Array *p_ctrl_param =
nullptr,
92 const Array *p_noise_x =
nullptr,
93 const Array *p_noise_y =
nullptr,
94 const Array *p_stretching =
nullptr,
95 Vec2<float> center = {0.5f, 0.5f},
96 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
143 float shape_factor = 0.5f,
145 const Array *p_ctrl_param =
nullptr,
146 const Array *p_noise_x =
nullptr,
147 const Array *p_noise_y =
nullptr,
148 Vec2<float> center = {0.5f, 0.5f},
149 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
177 const Array *p_noise,
180 Vec2<float> center = {0.5f, 0.5f},
181 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
188 Vec2<float> center = {0.5f, 0.5f},
189 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
209 const Array *p_noise_x =
nullptr,
210 const Array *p_noise_y =
nullptr,
211 const Array *p_stretching =
nullptr,
212 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
241Array
cone(Vec2<int> shape,
243 float apex_elevation = 1.f,
244 bool smooth_profile =
false,
245 Vec2<float> center = {0.5f, 0.5f},
246 const Array *p_noise_x =
nullptr,
247 const Array *p_noise_y =
nullptr,
248 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
284 Vec2<float> center = {0.5f, 0.5f},
285 const Array *p_noise_x =
nullptr,
286 const Array *p_noise_y =
nullptr,
287 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
296Array
constant(Vec2<int> shape,
float value = 0.f);
320Array
crater(Vec2<int> shape,
324 float lip_height_ratio = 0.5f,
325 const Array *p_ctrl_param =
nullptr,
326 const Array *p_noise_x =
nullptr,
327 const Array *p_noise_y =
nullptr,
328 Vec2<float> center = {0.5f, 0.5f},
329 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
367Array
dendry(Vec2<int> shape,
370 Array &control_function,
373 float displacement = 0.075,
374 int primitives_resolution_steps = 3,
375 float slope_power = 2.f,
376 float noise_amplitude_proportion = 0.01,
377 bool add_control_function =
true,
378 float control_function_overlap = 0.5f,
379 const Array *p_noise_x =
nullptr,
380 const Array *p_noise_y =
nullptr,
381 const Array *p_stretching =
nullptr,
382 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
383 int subsampling = 1);
385Array
dendry(Vec2<int> shape,
388 NoiseFunction &noise_function,
389 float noise_function_offset = 0.f,
390 float noise_function_scaling = 1.f,
393 float displacement = 0.075,
394 int primitives_resolution_steps = 3,
395 float slope_power = 2.f,
396 float noise_amplitude_proportion = 0.01,
397 bool add_control_function =
true,
398 float control_function_overlap = 0.5f,
399 const Array *p_noise_x =
nullptr,
400 const Array *p_noise_y =
nullptr,
401 const Array *p_stretching =
nullptr,
402 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
450 float seeding_radius = 0.4f,
451 float seeding_outer_radius_ratio = 0.2f,
453 float noise_ratio = 0.2f);
489Array
disk(Vec2<int> shape,
492 const Array *p_ctrl_param =
nullptr,
493 const Array *p_noise_x =
nullptr,
494 const Array *p_noise_y =
nullptr,
495 const Array *p_stretching =
nullptr,
496 Vec2<float> center = {0.5f, 0.5f},
497 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
545 const Array *p_ctrl_param =
nullptr,
546 const Array *p_noise_x =
nullptr,
547 const Array *p_noise_y =
nullptr,
548 const Array *p_stretching =
nullptr,
549 Vec2<float> center = {0.5f, 0.5f},
550 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
574 const Array *p_noise_x =
nullptr,
575 const Array *p_noise_y =
nullptr,
576 const Array *p_stretching =
nullptr,
577 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
616 float persistence = 0.5f,
617 float lacunarity = 2.f,
618 const Array *p_ctrl_param =
nullptr,
619 const Array *p_noise_x =
nullptr,
620 const Array *p_noise_y =
nullptr,
621 const Array *p_stretching =
nullptr,
622 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
662 float persistence = 0.5f,
663 float lacunarity = 2.f,
664 float gradient_scale = 0.05f,
665 const Array *p_ctrl_param =
nullptr,
666 const Array *p_noise_x =
nullptr,
667 const Array *p_noise_y =
nullptr,
668 const Array *p_stretching =
nullptr,
669 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
712 float persistence = 0.5f,
713 float lacunarity = 2.f,
716 float warp_scale = 0.4f,
717 float damp_scale = 1.f,
718 const Array *p_ctrl_param =
nullptr,
719 const Array *p_noise_x =
nullptr,
720 const Array *p_noise_y =
nullptr,
721 const Array *p_stretching =
nullptr,
722 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
761 float persistence = 0.5f,
762 float lacunarity = 2.f,
764 const Array *p_ctrl_param =
nullptr,
765 const Array *p_noise_x =
nullptr,
766 const Array *p_noise_y =
nullptr,
767 const Array *p_stretching =
nullptr,
768 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
807 float persistence = 0.5f,
808 float lacunarity = 2.f,
809 const Array *p_ctrl_param =
nullptr,
810 const Array *p_noise_x =
nullptr,
811 const Array *p_noise_y =
nullptr,
812 const Array *p_stretching =
nullptr,
813 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
853 float persistence = 0.5f,
854 float lacunarity = 2.f,
855 float k_smoothing = 0.1f,
856 const Array *p_ctrl_param =
nullptr,
857 const Array *p_noise_x =
nullptr,
858 const Array *p_noise_y =
nullptr,
859 const Array *p_stretching =
nullptr,
860 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
900 float persistence = 0.5f,
901 float lacunarity = 2.f,
902 float warp_scale = 0.1f,
903 const Array *p_ctrl_param =
nullptr,
904 const Array *p_noise_x =
nullptr,
905 const Array *p_noise_y =
nullptr,
906 const Array *p_stretching =
nullptr,
907 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
937 bool reverse_x =
false,
938 bool reverse_y =
false,
939 const Array *p_noise_x =
nullptr,
940 const Array *p_noise_y =
nullptr,
941 const Array *p_stretching =
nullptr,
942 Vec2<float> center = {0.5f, 0.5f},
943 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
963Array
peak(Vec2<int> shape,
965 const Array *p_noise,
968 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1026 float profile_delta = 0.1f,
1027 float density_factor = 1.f,
1028 float kernel_width_ratio = 2.f,
1029 float phase_smoothing = 2.f);
1080 float profile_delta = 0.1f,
1081 float density_factor = 1.f,
1082 float kernel_width_ratio = 2.f,
1083 float phase_smoothing = 2.f,
1085 float weight = 0.7f,
1086 float persistence = 0.5f,
1087 float lacunarity = 2.f);
1132 const Array *p_ctrl_param =
nullptr,
1133 const Array *p_noise_x =
nullptr,
1134 const Array *p_noise_y =
nullptr,
1135 const Array *p_stretching =
nullptr,
1136 Vec2<float> center = {0.5f, 0.5f},
1137 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1162Array
rift(Vec2<int> shape,
1166 bool sharp_bottom =
false,
1167 const Array *p_ctrl_param =
nullptr,
1168 const Array *p_noise_x =
nullptr,
1169 const Array *p_noise_y =
nullptr,
1170 const Array *p_stretching =
nullptr,
1171 Vec2<float> center = {0.5f, 0.5f},
1172 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1194Array
slope(Vec2<int> shape,
1197 const Array *p_ctrl_param =
nullptr,
1198 const Array *p_noise_x =
nullptr,
1199 const Array *p_noise_y =
nullptr,
1200 const Array *p_stretching =
nullptr,
1201 Vec2<float> center = {0.5f, 0.5f},
1202 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1225Array
step(Vec2<int> shape,
1228 const Array *p_ctrl_param =
nullptr,
1229 const Array *p_noise_x =
nullptr,
1230 const Array *p_noise_y =
nullptr,
1231 const Array *p_stretching =
nullptr,
1232 Vec2<float> center = {0.5f, 0.5f},
1233 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1252void swirl(Array &dx,
1254 float amplitude = 1.f,
1255 float exponent = 1.f,
1256 const Array *p_noise =
nullptr,
1257 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1280 float phase_shift = 0.f,
1281 const Array *p_noise_x =
nullptr,
1282 const Array *p_noise_y =
nullptr,
1283 const Array *p_stretching =
nullptr,
1284 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1308 float phase_shift = 0.f,
1309 const Array *p_noise_x =
nullptr,
1310 const Array *p_noise_y =
nullptr,
1311 const Array *p_stretching =
nullptr,
1312 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1336 float phase_shift = 0.f,
1337 const Array *p_noise_x =
nullptr,
1338 const Array *p_noise_y =
nullptr,
1339 const Array *p_stretching =
nullptr,
1340 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1367 float phase_shift = 0.f,
1368 const Array *p_noise_x =
nullptr,
1369 const Array *p_noise_y =
nullptr,
1370 const Array *p_stretching =
nullptr,
1371 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1390Array
white(Vec2<int> shape,
float a,
float b,
uint seed);
1426Array
white_sparse(Vec2<int> shape,
float a,
float b,
float density,
uint seed);
1467 const Array *p_ctrl_param =
nullptr,
1468 const Array *p_noise_x =
nullptr,
1469 const Array *p_noise_y =
nullptr,
1470 const Array *p_stretching =
nullptr,
1471 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1517 float k_smoothing = 0.1f,
1518 float base_noise_amp = 0.2f,
1519 const Array *p_noise_x =
nullptr,
1520 const Array *p_noise_y =
nullptr,
1521 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1602 float warp_kw = 4.f,
1603 float large_scale_warp_amp = 0.2f,
1604 float large_scale_gain = 6.f,
1605 float large_scale_amp = 0.2f,
1606 float medium_scale_kw_ratio = 3.f,
1607 float medium_scale_warp_amp = 1.f,
1608 float medium_scale_gain = 7.f,
1609 float medium_scale_amp = 0.08f,
1610 float small_scale_kw_ratio = 10.f,
1611 float small_scale_amp = 0.1f,
1612 float small_scale_overlay_amp = 0.002f,
1613 float rugosity_kw_ratio = 1.f,
1614 float rugosity_amp = 1.f,
1615 bool flatten_activate =
true,
1616 float flatten_kw_ratio = 1.f,
1617 float flatten_amp = 0.f,
1618 const Array *p_noise_x =
nullptr,
1619 const Array *p_noise_y =
nullptr,
1620 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1649 float angle_spread_ratio = 1.f,
1650 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1656 float angle_spread_ratio = 1.f,
1657 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1695 float angle_spread_ratio = 1.f,
1697 float weight = 0.7f,
1698 float persistence = 0.5f,
1699 float lacunarity = 2.f,
1700 const Array *p_ctrl_param =
nullptr,
1701 const Array *p_noise_x =
nullptr,
1702 const Array *p_noise_y =
nullptr,
1703 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1709 float angle_spread_ratio = 1.f,
1711 float weight = 0.7f,
1712 float persistence = 0.5f,
1713 float lacunarity = 2.f,
1714 const Array *p_ctrl_param =
nullptr,
1715 const Array *p_noise_x =
nullptr,
1716 const Array *p_noise_y =
nullptr,
1717 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1770 float amplitude = 0.05f,
1771 float angle_spread_ratio = 1.f,
1772 Vec2<float> kw_multiplier = {4.f, 4.f},
1773 float slope_strength = 1.f,
1774 float branch_strength = 2.f,
1775 float z_cut_min = 0.2f,
1776 float z_cut_max = 1.f,
1778 float persistence = 0.4f,
1779 float lacunarity = 2.f,
1780 const Array *p_ctrl_param =
nullptr,
1781 const Array *p_noise_x =
nullptr,
1782 const Array *p_noise_y =
nullptr,
1783 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1789 float amplitude = 0.05f,
1790 float angle_spread_ratio = 1.f,
1791 Vec2<float> kw_multiplier = {4.f, 4.f},
1792 float slope_strength = 1.f,
1793 float branch_strength = 2.f,
1794 float z_cut_min = 0.2f,
1795 float z_cut_max = 1.f,
1797 float persistence = 0.4f,
1798 float lacunarity = 2.f,
1799 const Array *p_ctrl_param =
nullptr,
1800 const Array *p_noise_x =
nullptr,
1801 const Array *p_noise_y =
nullptr,
1802 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1807 float amplitude = 0.05f,
1808 Vec2<float> kw_multiplier = {4.f, 4.f},
1809 float slope_strength = 1.f,
1810 float branch_strength = 2.f,
1811 float z_cut_min = 0.2f,
1812 float z_cut_max = 1.f,
1814 float persistence = 0.4f,
1815 float lacunarity = 2.f,
1816 const Array *p_ctrl_param =
nullptr,
1817 const Array *p_noise_x =
nullptr,
1818 const Array *p_noise_y =
nullptr,
1819 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1873 bool round_shape =
false,
1874 bool add_deposition =
true,
1875 float bulk_amp = 0.2f,
1876 float base_noise_amp = 0.2f,
1877 float k_smoothing = 0.1f,
1878 Vec2<float> center = {0.5f, 0.5f},
1879 const Array *p_noise_x =
nullptr,
1880 const Array *p_noise_y =
nullptr,
1881 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1935 float half_width = 0.2f,
1936 float angle_spread_ratio = 0.5f,
1937 float core_size_ratio = 1.f,
1938 Vec2<float> center = {0.5f, 0.5f},
1940 float weight = 0.7f,
1941 float persistence = 0.5f,
1942 float lacunarity = 2.f,
1943 const Array *p_ctrl_param =
nullptr,
1944 const Array *p_noise_x =
nullptr,
1945 const Array *p_noise_y =
nullptr,
1946 const Array *p_angle =
nullptr,
1947 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1998 float peak_kw = 6.f,
2001 float k_smoothing = 0.f,
2002 float gamma = 0.25f,
2003 bool add_deposition =
true,
2004 float ridge_amp = 0.75f,
2005 float base_noise_amp = 0.1f,
2006 Vec2<float> center = {0.5f, 0.5f},
2007 const Array *p_noise_x =
nullptr,
2008 const Array *p_noise_y =
nullptr,
2009 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2060 float peak_kw = 20.f,
2063 float angle_spread_ratio = 0.25f,
2065 bool add_deposition =
true,
2066 float bulk_amp = 1.f,
2067 float base_noise_amp = 0.1f,
2068 Vec2<float> center = {0.5f, 0.5f},
2069 const Array *p_noise_x =
nullptr,
2070 const Array *p_noise_y =
nullptr,
2071 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2078 const Array *p_noise_x =
nullptr,
2079 const Array *p_noise_y =
nullptr,
2080 const Array *p_stretching =
nullptr,
2081 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2089 float weight = 0.7f,
2090 float persistence = 0.5f,
2091 float lacunarity = 2.f,
2092 const Array *p_ctrl_param =
nullptr,
2093 const Array *p_noise_x =
nullptr,
2094 const Array *p_noise_y =
nullptr,
2095 const Array *p_stretching =
nullptr,
2096 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2148 float clamping_dist = 0.1f,
2149 float clamping_k = 0.1f,
2150 int n_vertices_min = 3,
2151 int n_vertices_max = 16,
2152 float density = 0.5f,
2155 const Array *p_noise_x =
nullptr,
2156 const Array *p_noise_y =
nullptr,
2157 const Array *p_noise_distance =
nullptr,
2158 const Array *p_density_multiplier =
nullptr,
2159 const Array *p_size_multiplier =
nullptr,
2160 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2211 float clamping_dist = 0.1f,
2212 float clamping_k = 0.1f,
2213 int n_vertices_min = 3,
2214 int n_vertices_max = 16,
2215 float density = 0.1f,
2219 float persistence = 0.5f,
2220 float lacunarity = 2.f,
2221 const Array *p_noise_x =
nullptr,
2222 const Array *p_noise_y =
nullptr,
2223 const Array *p_noise_distance =
nullptr,
2224 const Array *p_density_multiplier =
nullptr,
2225 const Array *p_size_multiplier =
nullptr,
2226 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2276 float peak_kw = 4.f,
2280 bool add_deposition =
true,
2281 float bulk_amp = 0.3f,
2282 float base_noise_amp = 0.1f,
2283 float k_smoothing = 0.f,
2284 Vec2<float> center = {0.5f, 0.5f},
2285 const Array *p_noise_x =
nullptr,
2286 const Array *p_noise_y =
nullptr,
2287 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2337 float k_smoothing = 0.f,
2338 float exp_sigma = 0.f,
2340 float alpha_span = M_PI,
2342 const Array *p_noise_x =
nullptr,
2343 const Array *p_noise_y =
nullptr,
2344 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
2345 Vec4<float> bbox_points = {0.f, 1.f, 0.f, 1.f});
2406 float k_smoothing = 0.f,
2407 float exp_sigma = 0.f,
2409 float alpha_span = M_PI,
2412 float weight = 0.7f,
2413 float persistence = 0.5f,
2414 float lacunarity = 2.f,
2415 const Array *p_noise_x =
nullptr,
2416 const Array *p_noise_y =
nullptr,
2417 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
2418 Vec4<float> bbox_points = {0.f, 1.f, 0.f, 1.f});
2462 Vec2<float> jitter = {0.5f, 0.5f},
2463 float k_smoothing = 0.f,
2464 float exp_sigma = 0.f,
2466 const Array *p_ctrl_param =
nullptr,
2467 const Array *p_noise_x =
nullptr,
2468 const Array *p_noise_y =
nullptr,
2469 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2520 Vec2<float> jitter = {0.5f, 0.5f},
2521 float k_smoothing = 0.f,
2522 float exp_sigma = 0.f,
2525 float weight = 0.7f,
2526 float persistence = 0.5f,
2527 float lacunarity = 2.f,
2528 const Array *p_ctrl_param =
nullptr,
2529 const Array *p_noise_x =
nullptr,
2530 const Array *p_noise_y =
nullptr,
2531 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2562 Vec2<float> jitter = {0.5f, 0.5f},
2563 const Array *p_ctrl_param =
nullptr,
2564 const Array *p_noise_x =
nullptr,
2565 const Array *p_noise_y =
nullptr,
2566 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2609 const Array *p_noise_x =
nullptr,
2610 const Array *p_noise_y =
nullptr,
2611 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2646 float weight = 0.7f,
2647 float persistence = 0.5f,
2648 float lacunarity = 2.f,
2649 const Array *p_ctrl_param =
nullptr,
2650 const Array *p_noise_x =
nullptr,
2651 const Array *p_noise_y =
nullptr,
2652 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2706 float k_smoothing = 0.f,
2707 float exp_sigma = 0.f,
2709 const Array *p_noise_x =
nullptr,
2710 const Array *p_noise_y =
nullptr,
2711 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
2712 Vec4<float> bbox_points = {0.f, 1.f, 0.f, 1.f});
2715 const std::vector<float> &xp,
2716 const std::vector<float> &yp,
2717 float k_smoothing = 0.f,
2718 float exp_sigma = 0.f,
2720 const Array *p_noise_x =
nullptr,
2721 const Array *p_noise_y =
nullptr,
2722 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
unsigned int uint
Definition array.hpp:14
Defines modular function objects for procedural generation, including noise algorithms (Perlin,...
Definition blending.hpp:186
Array polygon_field(Vec2< int > shape, Vec2< float > kw, uint seed, float rmin=0.05f, float rmax=0.8f, float clamping_dist=0.1f, float clamping_k=0.1f, int n_vertices_min=3, int n_vertices_max=16, float density=0.5f, hmap::Vec2< float > jitter={0.5f, 0.5f}, float shift=0.1f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_noise_distance=nullptr, const Array *p_density_multiplier=nullptr, const Array *p_size_multiplier=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a scalar field representing the signed distance to randomly generated polygons.
Definition primitives_gpu.cpp:470
Array shattered_peak(Vec2< int > shape, uint seed, float scale=1.f, int octaves=8, float peak_kw=4.f, float rugosity=0.f, float angle=30.f, float gamma=1.f, bool add_deposition=true, float bulk_amp=0.3f, float base_noise_amp=0.1f, float k_smoothing=0.f, Vec2< float > center={0.5f, 0.5f}, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a synthetic "shattered peak" terrain heightmap.
Definition shattered_peak.cpp:13
Array basalt_field(Vec2< int > shape, Vec2< float > kw, uint seed, float warp_kw=4.f, float large_scale_warp_amp=0.2f, float large_scale_gain=6.f, float large_scale_amp=0.2f, float medium_scale_kw_ratio=3.f, float medium_scale_warp_amp=1.f, float medium_scale_gain=7.f, float medium_scale_amp=0.08f, float small_scale_kw_ratio=10.f, float small_scale_amp=0.1f, float small_scale_overlay_amp=0.002f, float rugosity_kw_ratio=1.f, float rugosity_amp=1.f, bool flatten_activate=true, float flatten_kw_ratio=1.f, float flatten_amp=0.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a synthetic procedural terrain resembling basaltic landforms.
Definition basalt_field.cpp:13
Array voronoi(Vec2< int > shape, Vec2< float > kw, uint seed, Vec2< float > 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi diagram in a 2D array with configurable properties.
Definition primitives_gpu.cpp:724
Array badlands(Vec2< int > shape, Vec2< float > kw, uint seed, int octaves=8, float rugosity=0.2f, float angle=30.f, float k_smoothing=0.1f, float base_noise_amp=0.2f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a synthetic "badlands" terrain heightmap.
Definition badlands.cpp:13
Array voronoise_fbm(Vec2< int > shape, Vec2< float > kw, float u_param, float v_param, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Voronoise.
Definition primitives_gpu.cpp:851
Array voronoise(Vec2< int > shape, Vec2< float > kw, float u_param, float v_param, uint seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a 2D Voronoi noise array.
Definition primitives_gpu.cpp:816
Array noise_fbm(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
See hmap::noise_fbm.
Definition primitives_gpu.cpp:420
Array noise(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
See hmap::noise.
Definition primitives_gpu.cpp:381
Array polygon_field_fbm(Vec2< int > shape, Vec2< float > kw, uint seed, float rmin=0.05f, float rmax=0.8f, float clamping_dist=0.1f, float clamping_k=0.1f, int n_vertices_min=3, int n_vertices_max=16, float density=0.1f, hmap::Vec2< float > jitter={0.5f, 0.5f}, float shift=0.1f, int octaves=8, float persistence=0.5f, float lacunarity=2.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_noise_distance=nullptr, const Array *p_density_multiplier=nullptr, const Array *p_size_multiplier=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a scalar field representing the signed distance to randomly generated polygons combined wit...
Definition primitives_gpu.cpp:532
Array mountain_range_radial(Vec2< int > shape, Vec2< float > kw, uint seed, float half_width=0.2f, float angle_spread_ratio=0.5f, float core_size_ratio=1.f, Vec2< float > center={0.5f, 0.5f}, 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_angle=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a heightmap representing a radial mountain range.
Definition primitives_gpu.cpp:326
Array gabor_wave(Vec2< int > shape, Vec2< float > kw, uint seed, const Array &angle, float angle_spread_ratio=1.f, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Gabor noise.
Definition primitives_gpu.cpp:42
Array mountain_stump(Vec2< int > shape, uint seed, float scale=1.f, int octaves=8, float peak_kw=6.f, float rugosity=0.f, float angle=45.f, float k_smoothing=0.f, float gamma=0.25f, bool add_deposition=true, float ridge_amp=0.75f, float base_noise_amp=0.1f, Vec2< float > center={0.5f, 0.5f}, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a mountain-like heightmap with a flattened (stump-shaped) peak.
Definition mountain_stump.cpp:13
Array vorolines(Vec2< int > shape, float density, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f}, Vec4< float > 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:600
Array mountain_tibesti(Vec2< int > shape, uint seed, float scale=1.f, int octaves=8, float peak_kw=20.f, float rugosity=0.f, float angle=30.f, float angle_spread_ratio=0.25f, float gamma=1.f, bool add_deposition=true, float bulk_amp=1.f, float base_noise_amp=0.1f, Vec2< float > center={0.5f, 0.5f}, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a synthetic "Tibesti" mountain heightmap.
Definition mountain_tibesti.cpp:13
Array gabor_wave_fbm(Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence Gabor noise.
Definition primitives_gpu.cpp:85
Array rugosity(const Array &z, int ir, bool convex=true)
See hmap::rugosity.
Definition features_gpu.cpp:72
Array voronoi_fbm(Vec2< int > shape, Vec2< float > kw, uint seed, Vec2< float > 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a Voronoi diagram in a 2D array with configurable properties.
Definition primitives_gpu.cpp:766
Array voronoi_edge_distance(Vec2< int > shape, Vec2< float > kw, uint seed, Vec2< float > jitter={0.5f, 0.5f}, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Computes the Voronoi edge distance.
Definition primitives_gpu.cpp:897
Array vorolines_fbm(Vec2< int > shape, float density, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f}, Vec4< float > 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:679
Array vororand(Vec2< int > shape, float density, float variability, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f}, Vec4< float > bbox_points={0.f, 1.f, 0.f, 1.f})
Generates a 2D Voronoi-based scalar field using OpenCL.
Definition primitives_gpu.cpp:933
Array mountain_inselberg(Vec2< int > shape, uint seed, float scale=1.f, int octaves=8, float rugosity=0.2f, float angle=45.f, float gamma=1.1f, bool round_shape=false, bool add_deposition=true, float bulk_amp=0.2f, float base_noise_amp=0.2f, float k_smoothing=0.1f, Vec2< float > center={0.5f, 0.5f}, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a synthetic mountain-like inselberg (isolated hill) heightmap.
Definition mountain_inselberg.cpp:13
Array gavoronoise(Vec2< int > shape, Vec2< float > kw, uint seed, const Array &angle, float amplitude=0.05f, float angle_spread_ratio=1.f, Vec2< float > 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, Vec4< float > 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:167
Definition algebra.hpp:28
Array noise_jordan(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:115
Array noise(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence noise.
Definition noise.cpp:16
Array wave_sine(Vec2< int > shape, float kw, float angle, float phase_shift=0.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a sine wave.
Definition wave.cpp:43
Array phasor_fbm(PhasorProfile phasor_profile, Vec2< int > shape, float kw, const Array &angle, uint seed, float profile_delta=0.1f, float density_factor=1.f, float kernel_width_ratio=2.f, float phase_smoothing=2.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f)
Generates a fractal Brownian motion (fBm) noise field using layered phasor profiles.
Definition phasor.cpp:111
Array diffusion_limited_aggregation(Vec2< int > shape, float scale, uint 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:14
Array wave_dune(Vec2< int > shape, float kw, float angle, float xtop, float xbottom, float phase_shift=0.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a dune shape wave.
Definition wave.cpp:15
Array dendry(Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > 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:19
Array biquad_pulse(Vec2< int > shape, float gain=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, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a 'biquadratic pulse'.
Definition primitives.cpp:19
Array gabor_noise(Vec2< int > shape, float kw, float angle, int width, float density, uint seed)
Return a sparse Gabor noise.
Definition gabor.cpp:19
Array white_sparse(Vec2< int > shape, float a, float b, float density, uint seed)
Return an array sparsely filled with white noise.
Definition white.cpp:39
Array white_sparse_binary(Vec2< int > shape, float density, uint seed)
Return an array sparsely filled with random 0 and 1.
Definition white.cpp:53
Array noise_fbm(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:41
Array gaussian_pulse(Vec2< int > shape, float sigma, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a gaussian_decay pulse kernel.
Definition primitives.cpp:216
Array wave_triangular(Vec2< int > shape, float kw, float angle, float slant_ratio, float phase_shift=0.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a triangular wave.
Definition wave.cpp:91
Array crater(Vec2< int > shape, float radius, float depth, float lip_decay, float lip_height_ratio=0.5f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a crater-shaped heightmap.
Definition geo.cpp:94
Array worley_double(Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > 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 white_density_map(const Array &density_map, uint seed)
Return an array filled 1 with a probability based on a density map.
Definition white.cpp:24
PhasorProfile
Phasor angular profile type.
Definition math.hpp:54
Array rift(Vec2< int > shape, float angle, float slope, float width, bool sharp_bottom=false, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a rift function (Heaviside with an optional talus slope at the transition).
Definition primitives.cpp:303
Array noise_swiss(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm swiss noise.
Definition noise.cpp:268
Array noise_ridged(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm ridged noise.
Definition noise.cpp:230
Array bump(Vec2< int > shape, float gain=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, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a bump.
Definition primitives.cpp:41
Array bump_lorentzian(Vec2< int > shape, float shape_factor=0.5f, float radius=0.5f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a 2D Lorentzian bump pattern.
Definition primitives.cpp:63
Array checkerboard(Vec2< int > shape, Vec2< float > kw, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a checkerboard heightmap.
Definition checkerboard.cpp:12
VoronoiReturnType
Definition primitives.hpp:31
@ EDGE_DISTANCE_SQUARED
Definition primitives.hpp:38
@ F1_SQUARED
Definition primitives.hpp:32
@ CONSTANT_F2MF1_SQUARED
Definition primitives.hpp:40
@ F2_SQUARED
Definition primitives.hpp:33
@ CONSTANT
Definition primitives.hpp:39
@ F1TF2_SQUARED
Definition primitives.hpp:34
@ F2MF1_SQUARED
Definition primitives.hpp:36
@ F1DF2_SQUARED
Definition primitives.hpp:35
@ EDGE_DISTANCE_EXP
Definition primitives.hpp:37
Array constant(Vec2< int > shape, float value=0.f)
Return a constant value array.
Definition primitives.cpp:185
Array peak(Vec2< int > shape, float radius, const Array *p_noise, float noise_r_amp, float noise_z_ratio, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a peak-shaped heightmap.
Definition geo.cpp:122
Array noise_pingpong(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm pingpong noise.
Definition noise.cpp:194
Array cone(Vec2< int > shape)
Generates a cone-shaped kernel array.
Definition kernels.cpp:56
Array phasor(PhasorProfile phasor_profile, Vec2< int > shape, float kw, const Array &angle, uint seed, float profile_delta=0.1f, float density_factor=1.f, float kernel_width_ratio=2.f, float phase_smoothing=2.f)
Generates a phasor noise field based on a Gabor noise model and phase profile.
Definition phasor.cpp:16
void swirl(Array &dx, Array &dy, float amplitude=1.f, float exponent=1.f, const Array *p_noise=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generate displacements dx and dy to apply a swirl effect to another primitve.
Definition swirl.cpp:16
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:42
Array white(Vec2< int > shape, float a, float b, uint seed)
Return an array filled with white noise.
Definition white.cpp:12
Array step(Vec2< int > 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, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a step function (Heaviside with an optional talus slope at the transition).
Definition primitives.cpp:355
Array noise_iq(NoiseType noise_type, Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array filled with coherence fbm noise.
Definition noise.cpp:77
void gain(Array &array, float factor, const Array *p_mask)
Apply a gain correction to the array elements.
Definition filters.cpp:347
NoiseType
Enumeration of various noise types used for procedural generation.
Definition functions.hpp:62
Array caldera(Vec2< int > shape, float radius, float sigma_inner, float sigma_outer, float z_bottom, const Array *p_noise, float noise_amp_r, float noise_ratio_z, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a caldera-shaped heightmap.
Definition geo.cpp:16
Array wave_square(Vec2< int > shape, float kw, float angle, float phase_shift=0.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a square wave.
Definition wave.cpp:67
Array disk(Vec2< int > shape)
Generates a disk-shaped kernel footprint.
Definition kernels.cpp:200
Array slope(Vec2< int > 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, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return an array corresponding to a slope with a given overall.
Definition primitives.cpp:332
Array paraboloid(Vec2< int > shape, float angle, float a, float b, float v0=0.f, bool reverse_x=false, bool reverse_y=false, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Return a paraboloid.
Definition primitives.cpp:238
Array noise_parberry(Vec2< int > shape, Vec2< float > kw, uint 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, Vec4< float > 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 rectangle(Vec2< int > shape, float rx, float ry, float angle, float slope=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, Vec2< float > center={0.5f, 0.5f}, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a rectangle-shaped heightmap with optional modifications.
Definition primitives.cpp:278
Array cone_sigmoid(Vec2< int > shape, float alpha, float radius=0.5f, Vec2< float > center={0.5f, 0.5f}, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Vec4< float > bbox={0.f, 1.f, 0.f, 1.f})
Generates a smooth conical heightmap using a sigmoid-based profile.
Definition primitives.cpp:155
Vec2 class for basic manipulation of 2D vectors.
Definition algebra.hpp:40