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});
221Array
constant(Vec2<int> shape,
float value = 0.f);
245Array
crater(Vec2<int> shape,
249 float lip_height_ratio = 0.5f,
250 const Array *p_ctrl_param =
nullptr,
251 const Array *p_noise_x =
nullptr,
252 const Array *p_noise_y =
nullptr,
253 Vec2<float> center = {0.5f, 0.5f},
254 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
292Array
dendry(Vec2<int> shape,
295 Array &control_function,
298 float displacement = 0.075,
299 int primitives_resolution_steps = 3,
300 float slope_power = 2.f,
301 float noise_amplitude_proportion = 0.01,
302 bool add_control_function =
true,
303 float control_function_overlap = 0.5f,
304 const Array *p_noise_x =
nullptr,
305 const Array *p_noise_y =
nullptr,
306 const Array *p_stretching =
nullptr,
307 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
308 int subsampling = 1);
310Array
dendry(Vec2<int> shape,
313 NoiseFunction &noise_function,
314 float noise_function_offset = 0.f,
315 float noise_function_scaling = 1.f,
318 float displacement = 0.075,
319 int primitives_resolution_steps = 3,
320 float slope_power = 2.f,
321 float noise_amplitude_proportion = 0.01,
322 bool add_control_function =
true,
323 float control_function_overlap = 0.5f,
324 const Array *p_noise_x =
nullptr,
325 const Array *p_noise_y =
nullptr,
326 const Array *p_stretching =
nullptr,
327 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
375 float seeding_radius = 0.4f,
376 float seeding_outer_radius_ratio = 0.2f,
378 float noise_ratio = 0.2f);
414Array
disk(Vec2<int> shape,
417 const Array *p_ctrl_param =
nullptr,
418 const Array *p_noise_x =
nullptr,
419 const Array *p_noise_y =
nullptr,
420 const Array *p_stretching =
nullptr,
421 Vec2<float> center = {0.5f, 0.5f},
422 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
470 const Array *p_ctrl_param =
nullptr,
471 const Array *p_noise_x =
nullptr,
472 const Array *p_noise_y =
nullptr,
473 const Array *p_stretching =
nullptr,
474 Vec2<float> center = {0.5f, 0.5f},
475 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
499 const Array *p_noise_x =
nullptr,
500 const Array *p_noise_y =
nullptr,
501 const Array *p_stretching =
nullptr,
502 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
541 float persistence = 0.5f,
542 float lacunarity = 2.f,
543 const Array *p_ctrl_param =
nullptr,
544 const Array *p_noise_x =
nullptr,
545 const Array *p_noise_y =
nullptr,
546 const Array *p_stretching =
nullptr,
547 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
587 float persistence = 0.5f,
588 float lacunarity = 2.f,
589 float gradient_scale = 0.05f,
590 const Array *p_ctrl_param =
nullptr,
591 const Array *p_noise_x =
nullptr,
592 const Array *p_noise_y =
nullptr,
593 const Array *p_stretching =
nullptr,
594 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
637 float persistence = 0.5f,
638 float lacunarity = 2.f,
641 float warp_scale = 0.4f,
642 float damp_scale = 1.f,
643 const Array *p_ctrl_param =
nullptr,
644 const Array *p_noise_x =
nullptr,
645 const Array *p_noise_y =
nullptr,
646 const Array *p_stretching =
nullptr,
647 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
686 float persistence = 0.5f,
687 float lacunarity = 2.f,
689 const Array *p_ctrl_param =
nullptr,
690 const Array *p_noise_x =
nullptr,
691 const Array *p_noise_y =
nullptr,
692 const Array *p_stretching =
nullptr,
693 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
732 float persistence = 0.5f,
733 float lacunarity = 2.f,
734 const Array *p_ctrl_param =
nullptr,
735 const Array *p_noise_x =
nullptr,
736 const Array *p_noise_y =
nullptr,
737 const Array *p_stretching =
nullptr,
738 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
778 float persistence = 0.5f,
779 float lacunarity = 2.f,
780 float k_smoothing = 0.1f,
781 const Array *p_ctrl_param =
nullptr,
782 const Array *p_noise_x =
nullptr,
783 const Array *p_noise_y =
nullptr,
784 const Array *p_stretching =
nullptr,
785 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
825 float persistence = 0.5f,
826 float lacunarity = 2.f,
827 float warp_scale = 0.1f,
828 const Array *p_ctrl_param =
nullptr,
829 const Array *p_noise_x =
nullptr,
830 const Array *p_noise_y =
nullptr,
831 const Array *p_stretching =
nullptr,
832 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
862 bool reverse_x =
false,
863 bool reverse_y =
false,
864 const Array *p_noise_x =
nullptr,
865 const Array *p_noise_y =
nullptr,
866 const Array *p_stretching =
nullptr,
867 Vec2<float> center = {0.5f, 0.5f},
868 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
888Array
peak(Vec2<int> shape,
890 const Array *p_noise,
893 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
951 float profile_delta = 0.1f,
952 float density_factor = 1.f,
953 float kernel_width_ratio = 2.f,
954 float phase_smoothing = 2.f);
1005 float profile_delta = 0.1f,
1006 float density_factor = 1.f,
1007 float kernel_width_ratio = 2.f,
1008 float phase_smoothing = 2.f,
1010 float weight = 0.7f,
1011 float persistence = 0.5f,
1012 float lacunarity = 2.f);
1057 const Array *p_ctrl_param =
nullptr,
1058 const Array *p_noise_x =
nullptr,
1059 const Array *p_noise_y =
nullptr,
1060 const Array *p_stretching =
nullptr,
1061 Vec2<float> center = {0.5f, 0.5f},
1062 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1087Array
rift(Vec2<int> shape,
1091 bool sharp_bottom =
false,
1092 const Array *p_ctrl_param =
nullptr,
1093 const Array *p_noise_x =
nullptr,
1094 const Array *p_noise_y =
nullptr,
1095 const Array *p_stretching =
nullptr,
1096 Vec2<float> center = {0.5f, 0.5f},
1097 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1119Array
slope(Vec2<int> shape,
1122 const Array *p_ctrl_param =
nullptr,
1123 const Array *p_noise_x =
nullptr,
1124 const Array *p_noise_y =
nullptr,
1125 const Array *p_stretching =
nullptr,
1126 Vec2<float> center = {0.5f, 0.5f},
1127 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1150Array
step(Vec2<int> shape,
1153 const Array *p_ctrl_param =
nullptr,
1154 const Array *p_noise_x =
nullptr,
1155 const Array *p_noise_y =
nullptr,
1156 const Array *p_stretching =
nullptr,
1157 Vec2<float> center = {0.5f, 0.5f},
1158 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1177void swirl(Array &dx,
1179 float amplitude = 1.f,
1180 float exponent = 1.f,
1181 const Array *p_noise =
nullptr,
1182 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1205 float phase_shift = 0.f,
1206 const Array *p_noise_x =
nullptr,
1207 const Array *p_noise_y =
nullptr,
1208 const Array *p_stretching =
nullptr,
1209 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1233 float phase_shift = 0.f,
1234 const Array *p_noise_x =
nullptr,
1235 const Array *p_noise_y =
nullptr,
1236 const Array *p_stretching =
nullptr,
1237 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1261 float phase_shift = 0.f,
1262 const Array *p_noise_x =
nullptr,
1263 const Array *p_noise_y =
nullptr,
1264 const Array *p_stretching =
nullptr,
1265 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1292 float phase_shift = 0.f,
1293 const Array *p_noise_x =
nullptr,
1294 const Array *p_noise_y =
nullptr,
1295 const Array *p_stretching =
nullptr,
1296 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1315Array
white(Vec2<int> shape,
float a,
float b,
uint seed);
1351Array
white_sparse(Vec2<int> shape,
float a,
float b,
float density,
uint seed);
1392 const Array *p_ctrl_param =
nullptr,
1393 const Array *p_noise_x =
nullptr,
1394 const Array *p_noise_y =
nullptr,
1395 const Array *p_stretching =
nullptr,
1396 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1482 float warp_kw = 4.f,
1483 float large_scale_warp_amp = 0.2f,
1484 float large_scale_gain = 6.f,
1485 float large_scale_amp = 0.2f,
1486 float medium_scale_kw_ratio = 3.f,
1487 float medium_scale_warp_amp = 1.f,
1488 float medium_scale_gain = 7.f,
1489 float medium_scale_amp = 0.08f,
1490 float small_scale_kw_ratio = 10.f,
1491 float small_scale_amp = 0.1f,
1492 float small_scale_overlay_amp = 0.002f,
1493 float rugosity_kw_ratio = 1.f,
1494 float rugosity_amp = 1.f,
1495 bool flatten_activate =
true,
1496 float flatten_kw_ratio = 1.f,
1497 float flatten_amp = 0.f,
1498 const Array *p_noise_x =
nullptr,
1499 const Array *p_noise_y =
nullptr,
1500 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1529 float angle_spread_ratio = 1.f,
1530 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1536 float angle_spread_ratio = 1.f,
1537 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1575 float angle_spread_ratio = 1.f,
1577 float weight = 0.7f,
1578 float persistence = 0.5f,
1579 float lacunarity = 2.f,
1580 const Array *p_ctrl_param =
nullptr,
1581 const Array *p_noise_x =
nullptr,
1582 const Array *p_noise_y =
nullptr,
1583 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1589 float angle_spread_ratio = 1.f,
1591 float weight = 0.7f,
1592 float persistence = 0.5f,
1593 float lacunarity = 2.f,
1594 const Array *p_ctrl_param =
nullptr,
1595 const Array *p_noise_x =
nullptr,
1596 const Array *p_noise_y =
nullptr,
1597 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1650 float amplitude = 0.05f,
1651 float angle_spread_ratio = 1.f,
1652 Vec2<float> kw_multiplier = {4.f, 4.f},
1653 float slope_strength = 1.f,
1654 float branch_strength = 2.f,
1655 float z_cut_min = 0.2f,
1656 float z_cut_max = 1.f,
1658 float persistence = 0.4f,
1659 float lacunarity = 2.f,
1660 const Array *p_ctrl_param =
nullptr,
1661 const Array *p_noise_x =
nullptr,
1662 const Array *p_noise_y =
nullptr,
1663 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1669 float amplitude = 0.05f,
1670 float angle_spread_ratio = 1.f,
1671 Vec2<float> kw_multiplier = {4.f, 4.f},
1672 float slope_strength = 1.f,
1673 float branch_strength = 2.f,
1674 float z_cut_min = 0.2f,
1675 float z_cut_max = 1.f,
1677 float persistence = 0.4f,
1678 float lacunarity = 2.f,
1679 const Array *p_ctrl_param =
nullptr,
1680 const Array *p_noise_x =
nullptr,
1681 const Array *p_noise_y =
nullptr,
1682 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1687 float amplitude = 0.05f,
1688 Vec2<float> kw_multiplier = {4.f, 4.f},
1689 float slope_strength = 1.f,
1690 float branch_strength = 2.f,
1691 float z_cut_min = 0.2f,
1692 float z_cut_max = 1.f,
1694 float persistence = 0.4f,
1695 float lacunarity = 2.f,
1696 const Array *p_ctrl_param =
nullptr,
1697 const Array *p_noise_x =
nullptr,
1698 const Array *p_noise_y =
nullptr,
1699 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1753 float half_width = 0.2f,
1754 float angle_spread_ratio = 0.5f,
1755 float core_size_ratio = 1.f,
1756 Vec2<float> center = {0.5f, 0.5f},
1758 float weight = 0.7f,
1759 float persistence = 0.5f,
1760 float lacunarity = 2.f,
1761 const Array *p_ctrl_param =
nullptr,
1762 const Array *p_noise_x =
nullptr,
1763 const Array *p_noise_y =
nullptr,
1764 const Array *p_angle =
nullptr,
1765 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1772 const Array *p_noise_x =
nullptr,
1773 const Array *p_noise_y =
nullptr,
1774 const Array *p_stretching =
nullptr,
1775 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1783 float weight = 0.7f,
1784 float persistence = 0.5f,
1785 float lacunarity = 2.f,
1786 const Array *p_ctrl_param =
nullptr,
1787 const Array *p_noise_x =
nullptr,
1788 const Array *p_noise_y =
nullptr,
1789 const Array *p_stretching =
nullptr,
1790 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1842 float clamping_dist = 0.1f,
1843 float clamping_k = 0.1f,
1844 int n_vertices_min = 3,
1845 int n_vertices_max = 16,
1846 float density = 0.5f,
1849 const Array *p_noise_x =
nullptr,
1850 const Array *p_noise_y =
nullptr,
1851 const Array *p_noise_distance =
nullptr,
1852 const Array *p_density_multiplier =
nullptr,
1853 const Array *p_size_multiplier =
nullptr,
1854 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1905 float clamping_dist = 0.1f,
1906 float clamping_k = 0.1f,
1907 int n_vertices_min = 3,
1908 int n_vertices_max = 16,
1909 float density = 0.1f,
1913 float persistence = 0.5f,
1914 float lacunarity = 2.f,
1915 const Array *p_noise_x =
nullptr,
1916 const Array *p_noise_y =
nullptr,
1917 const Array *p_noise_distance =
nullptr,
1918 const Array *p_density_multiplier =
nullptr,
1919 const Array *p_size_multiplier =
nullptr,
1920 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
1970 float k_smoothing = 0.f,
1971 float exp_sigma = 0.f,
1973 float alpha_span = M_PI,
1975 const Array *p_noise_x =
nullptr,
1976 const Array *p_noise_y =
nullptr,
1977 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
1978 Vec4<float> bbox_points = {0.f, 1.f, 0.f, 1.f});
2039 float k_smoothing = 0.f,
2040 float exp_sigma = 0.f,
2042 float alpha_span = M_PI,
2045 float weight = 0.7f,
2046 float persistence = 0.5f,
2047 float lacunarity = 2.f,
2048 const Array *p_noise_x =
nullptr,
2049 const Array *p_noise_y =
nullptr,
2050 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f},
2051 Vec4<float> bbox_points = {0.f, 1.f, 0.f, 1.f});
2095 Vec2<float> jitter = {0.5f, 0.5f},
2096 float k_smoothing = 0.f,
2097 float exp_sigma = 0.f,
2099 const Array *p_ctrl_param =
nullptr,
2100 const Array *p_noise_x =
nullptr,
2101 const Array *p_noise_y =
nullptr,
2102 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2153 Vec2<float> jitter = {0.5f, 0.5f},
2154 float k_smoothing = 0.f,
2155 float exp_sigma = 0.f,
2158 float weight = 0.7f,
2159 float persistence = 0.5f,
2160 float lacunarity = 2.f,
2161 const Array *p_ctrl_param =
nullptr,
2162 const Array *p_noise_x =
nullptr,
2163 const Array *p_noise_y =
nullptr,
2164 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2195 Vec2<float> jitter = {0.5f, 0.5f},
2196 const Array *p_ctrl_param =
nullptr,
2197 const Array *p_noise_x =
nullptr,
2198 const Array *p_noise_y =
nullptr,
2199 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2242 const Array *p_noise_x =
nullptr,
2243 const Array *p_noise_y =
nullptr,
2244 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2279 float weight = 0.7f,
2280 float persistence = 0.5f,
2281 float lacunarity = 2.f,
2282 const Array *p_ctrl_param =
nullptr,
2283 const Array *p_noise_x =
nullptr,
2284 const Array *p_noise_y =
nullptr,
2285 Vec4<float> bbox = {0.f, 1.f, 0.f, 1.f});
2339 float k_smoothing = 0.f,
2340 float exp_sigma = 0.f,
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});
2348 const std::vector<float> &xp,
2349 const std::vector<float> &yp,
2350 float k_smoothing = 0.f,
2351 float exp_sigma = 0.f,
2353 const Array *p_noise_x =
nullptr,
2354 const Array *p_noise_y =
nullptr,
2355 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:151
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:472
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:726
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:853
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:818
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:422
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:383
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:534
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:328
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 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:602
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:86
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:768
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:899
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:681
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:935
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:169
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:133
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:220
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:102
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 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:272
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:249
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:155
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:195
Vec2 class for basic manipulation of 2D vectors.
Definition algebra.hpp:40