30#define DI {-1, 0, 0, 1, -1, -1, 1, 1}
31#define DJ {0, 1, -1, 0, -1, 1, -1, 1}
32#define CD {1.f, 1.f, 1.f, 1.f, M_SQRT2, M_SQRT2, M_SQRT2, M_SQRT2}
92 float additional_depth,
94 Array *p_water_mask =
nullptr);
134 Array &deposition_map,
135 float tolerance = 0.f);
165 Array *p_bedrock =
nullptr,
166 Array *p_erosion_map =
nullptr,
167 Array *p_deposition_map =
nullptr,
168 float c_erosion = 0.05f,
169 float c_deposition = 0.05f,
175 Array *p_bedrock =
nullptr,
176 Array *p_erosion_map =
nullptr,
177 Array *p_deposition_map =
nullptr,
178 float c_erosion = 0.05f,
179 float c_deposition = 0.05f,
215 Array *p_bedrock =
nullptr,
216 Array *p_moisture_map =
nullptr,
217 Array *p_erosion_map =
nullptr,
218 Array *p_deposition_map =
nullptr,
219 float c_capacity = 40.f,
220 float c_erosion = 0.2f,
221 float c_deposition = 0.8f,
222 float water_level = 0.005f,
223 float evap_rate = 0.01f,
224 float rain_rate = 0.5f);
228 Array *p_bedrock =
nullptr,
229 Array *p_moisture_map =
nullptr,
230 Array *p_erosion_map =
nullptr,
231 Array *p_deposition_map =
nullptr,
232 float c_capacity = 40.f,
233 float c_erosion = 0.2f,
234 float c_deposition = 0.8f,
235 float water_level = 0.005f,
236 float evap_rate = 0.01f,
237 float rain_rate = 0.5f);
255 float k_smoothing = 0.1f);
303 int iterations = 100,
304 float c_capacity = 1.f,
305 float c_erosion = 0.1f,
306 float c_deposition = 0.1f,
307 float water_level = 0.01f,
308 float evap_rate = 0.01f);
311 int iterations = 100,
312 float c_capacity = 1.f,
313 float c_erosion = 0.1f,
314 float c_deposition = 0.1f,
315 float water_level = 0.01f,
316 float evap_rate = 0.01f);
352 Array *p_bedrock =
nullptr,
353 Array *p_moisture_map =
nullptr,
354 Array *p_erosion_map =
nullptr,
355 Array *p_deposition_map =
nullptr,
356 float c_capacity = 10.f,
357 float c_erosion = 0.05f,
358 float c_deposition = 0.05f,
359 float c_inertia = 0.3f,
360 float drag_rate = 0.001f,
361 float evap_rate = 0.001f,
362 bool post_filtering =
false);
367 Array *p_bedrock =
nullptr,
368 Array *p_moisture_map =
nullptr,
369 Array *p_erosion_map =
nullptr,
370 Array *p_deposition_map =
nullptr,
371 float c_capacity = 10.f,
372 float c_erosion = 0.05f,
373 float c_deposition = 0.05f,
374 float c_inertia = 0.3f,
375 float drag_rate = 0.001f,
376 float evap_rate = 0.001f,
377 bool post_filtering =
false);
413 float particle_density,
415 Array *p_bedrock =
nullptr,
416 Array *p_moisture_map =
nullptr,
417 Array *p_erosion_map =
nullptr,
418 Array *p_deposition_map =
nullptr,
419 float c_capacity = 10.f,
420 float c_erosion = 0.05f,
421 float c_deposition = 0.01f,
422 float c_inertia = 0.3f,
423 float drag_rate = 0.01f,
424 float evap_rate = 0.001f,
425 int pyramid_finest_level = 0);
478 float ridge_wavelength,
479 float ridge_scaling = 0.1f,
482 float noise_ratio = 0.2f,
483 int prefilter_ir = -1,
484 float density_factor = 1.f,
485 float kernel_width_ratio = 2.f,
486 float phase_smoothing = 2.f,
487 float phase_noise_amp = M_PI,
488 bool reverse_phase =
false,
489 bool rotate90 =
false,
490 bool use_default_mask =
true,
491 float talus_mask = 0.f,
492 Array *p_mask =
nullptr,
493 Array *p_ridge_mask =
nullptr,
527 Array *p_bedrock =
nullptr,
528 Array *p_moisture_map =
nullptr,
529 Array *p_erosion_map =
nullptr,
531 float clipping_ratio = 10.f);
537 Array *p_bedrock =
nullptr,
538 Array *p_moisture_map =
nullptr,
539 Array *p_erosion_map =
nullptr,
541 float clipping_ratio = 10.f);
578 int upscaling_levels = 1,
579 float persistence = 1.f,
581 float clipping_ratio = 10.f);
621 int upscaling_levels = 1,
622 float persistence = 1.f,
624 float clipping_ratio = 10.f);
667 int deposition_ir = 32,
668 float deposition_scale_ratio = 1.f,
669 float gradient_power = 0.8f,
670 float gradient_scaling_ratio = 1.f,
671 int gradient_prefilter_ir = 16,
672 float saturation_ratio = 1.f,
673 Array *p_bedrock =
nullptr,
674 Array *p_moisture_map =
nullptr,
675 Array *p_erosion_map =
nullptr,
676 Array *p_deposition_map =
nullptr,
677 Array *p_flow_map =
nullptr);
683 int deposition_ir = 32,
684 float deposition_scale_ratio = 1.f,
685 float gradient_power = 0.8f,
686 float gradient_scaling_ratio = 1.f,
687 int gradient_prefilter_ir = 16,
688 float saturation_ratio = 1.f,
689 Array *p_bedrock =
nullptr,
690 Array *p_moisture_map =
nullptr,
691 Array *p_erosion_map =
nullptr,
692 Array *p_deposition_map =
nullptr,
693 Array *p_flow_map =
nullptr);
726 Array *p_bedrock =
nullptr,
727 Array *p_moisture_map =
nullptr,
728 Array *p_erosion_map =
nullptr,
729 Array *p_deposition_map =
nullptr,
730 float water_height = 0.1f,
731 float c_capacity = 0.1f,
732 float c_erosion = 0.05f,
733 float c_deposition = 0.05f,
734 float rain_rate = 0.f,
735 float evap_rate = 0.01f);
739 Array *p_bedrock =
nullptr,
740 Array *p_moisture_map =
nullptr,
741 Array *p_erosion_map =
nullptr,
742 Array *p_deposition_map =
nullptr,
743 float water_height = 0.1f,
744 float c_capacity = 0.1f,
745 float c_erosion = 0.05f,
746 float c_deposition = 0.05f,
747 float rain_rate = 0.f,
748 float evap_rate = 0.01f);
775 Array *p_deposition_map =
nullptr,
776 float max_deposition = 0.01,
778 int thermal_subiterations = 10);
782 Array *p_deposition_map =
nullptr,
783 float max_deposition = 0.01,
785 int thermal_subiterations = 10);
815 Array *p_spawning_map =
nullptr,
816 Array *p_deposition_map =
nullptr,
817 float particle_initial_sediment = 0.1f,
818 float deposition_velocity_limit = 0.01f,
819 float drag_rate = 0.001f);
825 Array *p_spawning_map =
nullptr,
826 Array *p_deposition_map =
nullptr,
827 float particle_initial_sediment = 0.1f,
828 float deposition_velocity_limit = 0.01f,
829 float drag_rate = 0.001f);
832 const Array &talus_layer,
833 const Array &talus_upper_limit,
835 bool apply_post_filter =
true,
836 Array *p_deposition_map =
nullptr);
859 std::vector<float> hs,
860 std::vector<float> gamma,
861 Array *p_noise =
nullptr);
864 std::vector<float> hs,
865 std::vector<float> gamma,
866 Array *p_noise =
nullptr);
869 std::vector<float> hs,
871 Array *p_noise =
nullptr);
881 float mixing_gain_factor = 1.f,
882 Array *p_noise =
nullptr,
912 std::vector<int> n_strata,
913 std::vector<float> strata_noise,
914 std::vector<float> gamma_list,
915 std::vector<float> gamma_noise,
917 Array *p_mask =
nullptr,
918 Array *p_noise =
nullptr);
942 std::vector<float> hs,
943 std::vector<float> gamma,
946 Array *p_noise =
nullptr);
949 std::vector<float> hs,
950 std::vector<float> gamma,
953 Array *p_noise =
nullptr);
978 Array *p_bedrock =
nullptr,
979 Array *p_deposition_map =
nullptr);
984 Array *p_bedrock =
nullptr,
985 Array *p_deposition_map =
nullptr);
990 Array *p_bedrock =
nullptr,
991 Array *p_deposition_map =
nullptr);
1016 int iterations = 10,
1017 Array *p_deposition_map =
nullptr);
1021 int iterations = 10,
1022 Array *p_deposition_map =
nullptr);
1027 int iterations = 10,
1028 Array *p_deposition_map =
nullptr);
1049 const Array &bedrock,
1050 int iterations = 10,
1051 int post_filter_ir = 1);
1055 int iterations = 10,
1056 int post_filter_ir = 1);
1079 int iterations = 10,
1080 Array *p_bedrock =
nullptr,
1081 Array *p_deposition_map =
nullptr);
1095void thermal_rib(Array &z,
int iterations, Array *p_bedrock =
nullptr);
1122 int iterations = 10,
1123 float intensity = 0.001f);
1128 int iterations = 10,
1129 float intensity = 0.001f);
1154 int iterations = 10,
1155 float intensity = 0.001f);
1160 int iterations = 10,
1161 float intensity = 0.001f);
1172 Array *p_bedrock =
nullptr,
1173 Array *p_moisture_map =
nullptr,
1174 Array *p_erosion_map =
nullptr,
1175 Array *p_deposition_map =
nullptr,
1176 float c_capacity = 10.f,
1177 float c_erosion = 0.05f,
1178 float c_deposition = 0.05f,
1179 float c_inertia = 0.3f,
1180 float drag_rate = 0.001f,
1181 float evap_rate = 0.001f,
1182 bool post_filtering =
false);
1189 Array *p_bedrock =
nullptr,
1190 Array *p_moisture_map =
nullptr,
1191 Array *p_erosion_map =
nullptr,
1192 Array *p_deposition_map =
nullptr,
1193 float c_capacity = 10.f,
1194 float c_erosion = 0.05f,
1195 float c_deposition = 0.05f,
1196 float c_inertia = 0.3f,
1197 float drag_rate = 0.001f,
1198 float evap_rate = 0.001f,
1199 bool post_filtering =
false);
1250 float c_erosion = 1.f,
1251 float c_thermal = 0.1f,
1252 float c_deposition = 0.2f,
1253 float flow_acc_exponent = 0.8f,
1254 float flow_acc_exponent_depo = 0.8f,
1255 float flow_routing_exponent = 1.3f,
1256 float thermal_weight = 1.5f,
1257 float deposition_weight = 2.5f,
1258 Array *p_flow =
nullptr);
1264 float c_erosion = 1.f,
1265 float c_thermal = 0.1f,
1266 float c_deposition = 0.2f,
1267 float flow_acc_exponent = 0.8f,
1268 float flow_acc_exponent_depo = 0.8f,
1269 float flow_routing_exponent = 1.3f,
1270 float thermal_weight = 1.5f,
1271 float deposition_weight = 2.5f,
1272 Array *p_flow =
nullptr);
1278 int deposition_ir = 32,
1279 float deposition_scale_ratio = 1.f,
1280 float gradient_power = 0.8f,
1281 float gradient_scaling_ratio = 1.f,
1282 int gradient_prefilter_ir = 16,
1283 float saturation_ratio = 1.f,
1284 Array *p_bedrock =
nullptr,
1285 Array *p_moisture_map =
nullptr,
1286 Array *p_erosion_map =
nullptr,
1287 Array *p_deposition_map =
nullptr,
1288 Array *p_flow_map =
nullptr);
1294 int deposition_ir = 32,
1295 float deposition_scale_ratio = 1.f,
1296 float gradient_power = 0.8f,
1297 float gradient_scaling_ratio = 1.f,
1298 int gradient_prefilter_ir = 16,
1299 float saturation_ratio = 1.f,
1300 Array *p_bedrock =
nullptr,
1301 Array *p_moisture_map =
nullptr,
1302 Array *p_erosion_map =
nullptr,
1303 Array *p_deposition_map =
nullptr,
1304 Array *p_flow_map =
nullptr);
1358 const Vec2<float> &kw,
1362 float elevation_noise_shift = 0.f,
1363 float k_smooth_bottom = 0.05f,
1364 float k_smooth_top = 0.05f,
1365 float radial_spread_amp = 0.2f,
1366 float elevation_noise_amp = 0.1f,
1367 float clamp_vmin = 0.f,
1368 float remap_vmin = 0.f,
1369 bool apply_mask =
true,
1370 bool reverse_mask =
false,
1371 float mask_gamma = 1.f,
1372 const Array *p_noise_x =
nullptr,
1373 const Array *p_noise_y =
nullptr,
1374 const Array *p_mask =
nullptr,
1375 const Vec2<float> ¢er = {0.5f, 0.5f},
1376 const Vec4<float> &bbox = {0.f, 1.f, 0.f, 1.f});
1440 bool linear_gamma =
true,
1443 float lacunarity = 2.f,
1444 float gamma_noise_ratio = 0.5f,
1445 float noise_amp = 0.4f,
1446 const Vec2<float> &noise_kw = {4.f, 4.f},
1447 const Vec2<float> &ridge_noise_kw = {4.f, 1.2f},
1448 float ridge_angle_shift = 45.f,
1449 float ridge_noise_amp = 0.5f,
1450 float ridge_clamp_vmin = 0.f,
1451 float ridge_remap_vmin = 0.f,
1452 bool apply_elevation_mask =
true,
1453 bool apply_ridge_mask =
true,
1454 float mask_gamma = 0.4f,
1455 const Array *p_mask =
nullptr,
1456 const Vec4<float> &bbox = {0.f, 1.f, 0.f, 1.f});
1461 int iterations = 10,
1462 Array *p_bedrock =
nullptr,
1463 Array *p_deposition_map =
nullptr);
1469 int iterations = 10,
1470 Array *p_bedrock =
nullptr,
1471 Array *p_deposition_map =
nullptr);
1476 int iterations = 10,
1477 Array *p_bedrock =
nullptr,
1478 Array *p_deposition_map =
nullptr);
1483 int iterations = 10,
1484 Array *p_deposition_map =
nullptr);
1490 int iterations = 10,
1491 Array *p_deposition_map =
nullptr);
1496 int iterations = 10,
1497 Array *p_deposition_map =
nullptr);
1516void thermal_inflate(Array &z,
const Array &talus,
int iterations = 10);
1519 const Array *p_mask,
1521 int iterations = 10);
1524void thermal_rib(Array &z,
int iterations, Array *p_bedrock =
nullptr);
1547 int iterations = 10,
1548 Array *p_deposition_map =
nullptr);
1551 const Array *p_mask,
1553 int iterations = 10,
1554 Array *p_deposition_map =
nullptr);
1580 int iterations = 10,
1581 bool talus_constraint =
true,
1582 Array *p_deposition_map =
nullptr);
1585 const Array *p_mask,
1588 int iterations = 10,
1589 bool talus_constraint =
true,
1590 Array *p_deposition_map =
nullptr);
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
unsigned int uint
Definition array.hpp:14
Definition blending.hpp:186
void thermal_ridge(Array &z, const Array &talus, int iterations=10, Array *p_deposition_map=nullptr)
Apply thermal weathering erosion to give a ridge like effect.
Definition thermal_gpu.cpp:207
void strata(Array &z, float angle, float slope, float gamma, uint seed, bool linear_gamma=true, float kz=1.f, int octaves=4, float lacunarity=2.f, float gamma_noise_ratio=0.5f, float noise_amp=0.4f, const Vec2< float > &noise_kw={4.f, 4.f}, const Vec2< float > &ridge_noise_kw={4.f, 1.2f}, float ridge_angle_shift=45.f, float ridge_noise_amp=0.5f, float ridge_clamp_vmin=0.f, float ridge_remap_vmin=0.f, bool apply_elevation_mask=true, bool apply_ridge_mask=true, float mask_gamma=0.4f, const Array *p_mask=nullptr, const Vec4< float > &bbox={0.f, 1.f, 0.f, 1.f})
Applies stratification to a heightfield using directional noise and multiscale gamma transformations.
Definition strata_gpu.cpp:12
void thermal(Array &z, const Array &talus, int iterations=10, Array *p_bedrock=nullptr, Array *p_deposition_map=nullptr)
See hmap::thermal.
Definition thermal_gpu.cpp:13
void thermal_auto_bedrock(Array &z, const Array &talus, int iterations=10, Array *p_deposition_map=nullptr)
See hmap::thermal_auto_bedrock.
Definition thermal_gpu.cpp:97
void hydraulic_stream_log(Array &z, float c_erosion, float talus_ref, int deposition_ir=32, float deposition_scale_ratio=1.f, float gradient_power=0.8f, float gradient_scaling_ratio=1.f, int gradient_prefilter_ir=16, float saturation_ratio=1.f, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, Array *p_flow_map=nullptr)
See hmap::hydraulic_stream_log.
Definition hydraulic_stream_gpu.cpp:17
void hydraulic_particle(Array &z, int nparticles, int seed, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float c_capacity=10.f, float c_erosion=0.05f, float c_deposition=0.05f, float c_inertia=0.3f, float drag_rate=0.001f, float evap_rate=0.001f, bool post_filtering=false)
See hmap::hydraulic_particle.
Definition erosion_gpu.cpp:12
void thermal_scree(Array &z, const Array &talus, const Array &zmax, int iterations=10, bool talus_constraint=true, Array *p_deposition_map=nullptr)
Performs thermal scree erosion on a heightmap.
Definition thermal_gpu.cpp:249
void hydraulic_schott(Array &z, int iterations, const Array &talus, float c_erosion=1.f, float c_thermal=0.1f, float c_deposition=0.2f, float flow_acc_exponent=0.8f, float flow_acc_exponent_depo=0.8f, float flow_routing_exponent=1.3f, float thermal_weight=1.5f, float deposition_weight=2.5f, Array *p_flow=nullptr)
Simulates hydraulic erosion and deposition on a heightmap using the Schott method.
Definition hydraulic_schott_gpu.cpp:10
void rifts(Array &z, const Vec2< float > &kw, float angle, float amplitude, uint seed, float elevation_noise_shift=0.f, float k_smooth_bottom=0.05f, float k_smooth_top=0.05f, float radial_spread_amp=0.2f, float elevation_noise_amp=0.1f, float clamp_vmin=0.f, float remap_vmin=0.f, bool apply_mask=true, bool reverse_mask=false, float mask_gamma=1.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_mask=nullptr, const Vec2< float > ¢er={0.5f, 0.5f}, const Vec4< float > &bbox={0.f, 1.f, 0.f, 1.f})
Applies a "rift" deformation effect to a heightmap array.
Definition rifts_gpu.cpp:12
void thermal_inflate(Array &z, const Array &talus, int iterations=10)
Apply thermal weathering erosion to give a scree like effect.
Definition thermal_gpu.cpp:156
void thermal_rib(Array &z, int iterations, Array *p_bedrock=nullptr)
See hmap::thermal_rib.
Definition thermal_gpu.cpp:189
Definition algebra.hpp:28
void stratify_oblique(Array &z, Array *p_mask, std::vector< float > hs, std::vector< float > gamma, float talus, float angle, Array *p_noise=nullptr)
Stratify the heightmap by creating a series of oblique layers with elevations corrected by a gamma fa...
Definition stratify.cpp:241
void thermal_olsen(Array &z, const Array &talus, int iterations=10, Array *p_bedrock=nullptr, Array *p_deposition_map=nullptr)
Apply thermal weathering erosion.
Definition thermal_olsen.cpp:23
void hydraulic_blur(Array &z, float radius, float vmax, float k_smoothing=0.1f)
Apply cell-based hydraulic erosion using a nonlinear diffusion model.
Definition hydraulic_blur.cpp:13
ErosionProfile
Procedural erosion angular profile type.
Definition erosion.hpp:42
@ SAW_SMOOTH
Definition erosion.hpp:45
@ TRIANGLE_GRENIER
Definition erosion.hpp:48
@ SQUARE_SMOOTH
Definition erosion.hpp:47
@ SAW_SHARP
Definition erosion.hpp:44
@ TRIANGLE_SHARP
Definition erosion.hpp:49
@ SHARP_VALLEYS
Definition erosion.hpp:46
@ TRIANGLE_SMOOTH
Definition erosion.hpp:50
@ COSINE
Definition erosion.hpp:43
void sediment_deposition(Array &z, Array *p_mask, const Array &talus, Array *p_deposition_map=nullptr, float max_deposition=0.01, int iterations=5, int thermal_subiterations=10)
Perform sediment deposition combined with thermal erosion.
Definition deposition.cpp:47
void hydraulic_stream_log(Array &z, float c_erosion, float talus_ref, int deposition_ir=32, float deposition_scale_ratio=1.f, float gradient_power=0.8f, float gradient_scaling_ratio=1.f, int gradient_prefilter_ir=16, float saturation_ratio=1.f, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, Array *p_flow_map=nullptr)
Apply hydraulic erosion based on a flow accumulation map, alternative formulation.
Definition hydraulic_stream.cpp:100
void thermal_rib(Array &z, int iterations, Array *p_bedrock=nullptr)
Apply thermal erosion using a 'rib' algorithm (taken from Geomorph).
Definition thermal_rib.cpp:17
void coastal_erosion_diffusion(Array &z, Array &water_depth, float additional_depth, int iterations=10, Array *p_water_mask=nullptr)
Simulates terrain diffusion due to coastal erosion.
Definition coastal_erosion.cpp:11
void hydraulic_musgrave(Array &z, Array &moisture_map, int iterations=100, float c_capacity=1.f, float c_erosion=0.1f, float c_deposition=0.1f, float water_level=0.01f, float evap_rate=0.01f)
Apply cell-based hydraulic erosion/deposition of Musgrave et al. (1989).
Definition hydraulic_musgrave.cpp:31
void thermal_flatten(Array &z, const Array &talus, const Array &bedrock, int iterations=10, int post_filter_ir=1)
Apply modified thermal weathering of Olsen.
Definition thermal_flatten.cpp:22
void hydraulic_stream_upscale_amplification(Array &z, float c_erosion, float talus_ref, int upscaling_levels=1, float persistence=1.f, int ir=1, float clipping_ratio=10.f)
Applies hydraulic erosion with upscaling amplification.
Definition hydraulic_stream_upscale_amplification.cpp:17
void hydraulic_diffusion(Array &z, float c_diffusion, float talus, int iterations)
Apply cell-based hydraulic erosion using a nonlinear diffusion model.
Definition hydraulic_diffusion.cpp:17
void stratify_multiscale(Array &z, float zmin, float zmax, std::vector< int > n_strata, std::vector< float > strata_noise, std::vector< float > gamma_list, std::vector< float > gamma_noise, uint seed, Array *p_mask=nullptr, Array *p_noise=nullptr)
Stratify the heightmap by creating a multiscale series of layers with elevations corrected by a gamma...
Definition stratify.cpp:62
void hydraulic_particle(Array &z, Array *p_mask, int nparticles, int seed, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float c_capacity=10.f, float c_erosion=0.05f, float c_deposition=0.05f, float c_inertia=0.3f, float drag_rate=0.001f, float evap_rate=0.001f, bool post_filtering=false)
Apply hydraulic erosion using a particle based procedure.
Definition hydraulic_particle.cpp:184
void sediment_layer(Array &z, const Array &talus_layer, const Array &talus_upper_limit, int iterations, bool apply_post_filter=true, Array *p_deposition_map=nullptr)
Definition deposition.cpp:209
void depression_filling(Array &z, int iterations=1000, float epsilon=1e-4f)
Fill the depressions of the heightmap using the Planchon-Darboux algorithm.
Definition depression_filling.cpp:23
void hydraulic_vpipes(Array &z, Array *p_mask, int iterations, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float water_height=0.1f, float c_capacity=0.1f, float c_erosion=0.05f, float c_deposition=0.05f, float rain_rate=0.f, float evap_rate=0.01f)
Apply hydraulic erosion using the 'virtual pipes' algorithm.
Definition hydraulic_vpipes.cpp:289
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:42
void hydraulic_particle_multiscale(Array &z, float particle_density, int seed, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float c_capacity=10.f, float c_erosion=0.05f, float c_deposition=0.01f, float c_inertia=0.3f, float drag_rate=0.01f, float evap_rate=0.001f, int pyramid_finest_level=0)
Apply hydraulic erosion using a particle based procedure, using a pyramid decomposition to allow a mu...
Definition hydraulic_particle_multiscale.cpp:17
void thermal_schott(Array &z, const Array &talus, int iterations=10, float intensity=0.001f)
Applies the thermal erosion process to an array of elevation values.
Definition thermal_schott.cpp:24
void thermal(Array &z, Array *p_mask, const Array &talus, int iterations=10, Array *p_bedrock=nullptr, Array *p_deposition_map=nullptr)
Apply thermal weathering erosion.
Definition thermal.cpp:174
void stratify(Array &z, Array *p_mask, std::vector< float > hs, std::vector< float > gamma, Array *p_noise=nullptr)
Stratify the heightmap by creating a series of layers with elevations corrected by a gamma factor.
Definition stratify.cpp:46
void hydraulic_algebric(Array &z, Array *p_mask, float talus_ref, int ir, Array *p_bedrock=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float c_erosion=0.05f, float c_deposition=0.05f, int iterations=1)
Apply an algerbic formula based on the local gradient to perform erosion/deposition.
Definition hydraulic_algebric.cpp:73
void thermal_auto_bedrock(Array &z, const Array &talus, int iterations=10, Array *p_deposition_map=nullptr)
Apply thermal weathering erosion with automatic determination of the bedrock.
Definition thermal.cpp:206
void hydraulic_stream(Array &z, float c_erosion, float talus_ref, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, int ir=1, float clipping_ratio=10.f)
Apply hydraulic erosion based on a flow accumulation map.
Definition hydraulic_stream.cpp:20
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
void hydraulic_benes(Array &z, Array *p_mask, int iterations=50, Array *p_bedrock=nullptr, Array *p_moisture_map=nullptr, Array *p_erosion_map=nullptr, Array *p_deposition_map=nullptr, float c_capacity=40.f, float c_erosion=0.2f, float c_deposition=0.8f, float water_level=0.005f, float evap_rate=0.01f, float rain_rate=0.5f)
Apply cell-based hydraulic erosion/deposition based on Benes et al. procedure.
Definition hydraulic_benes.cpp:207
void sediment_deposition_particle(Array &z, Array *p_mask, int nparticles, int ir, int seed=1, Array *p_spawning_map=nullptr, Array *p_deposition_map=nullptr, float particle_initial_sediment=0.1f, float deposition_velocity_limit=0.01f, float drag_rate=0.001f)
Definition deposition.cpp:172
void hydraulic_procedural(Array &z, uint seed, float ridge_wavelength, float ridge_scaling=0.1f, ErosionProfile erosion_profile=ErosionProfile::TRIANGLE_SMOOTH, float delta=0.02f, float noise_ratio=0.2f, int prefilter_ir=-1, float density_factor=1.f, float kernel_width_ratio=2.f, float phase_smoothing=2.f, float phase_noise_amp=M_PI, bool reverse_phase=false, bool rotate90=false, bool use_default_mask=true, float talus_mask=0.f, Array *p_mask=nullptr, Array *p_ridge_mask=nullptr, float vmin=0.f, float vmax=-1.f)
Generates a procedurally eroded terrain using hydraulic erosion and ridge generation techniques.
Definition hydraulic_procedural.cpp:148
void erosion_maps(Array &z_before, Array &z_after, Array &erosion_map, Array &deposition_map, float tolerance=0.f)
Definition erosion_maps.cpp:16