63std::vector<float>
gradient1d(
const std::vector<float> &v);
123 bool downward =
false);
148 Array *p_dx =
nullptr,
149 Array *p_dy =
nullptr);
193 Array *p_dx =
nullptr,
194 Array *p_dy =
nullptr);
213 Array *p_dx =
nullptr,
214 Array *p_dy =
nullptr);
233 Array *p_dx =
nullptr,
234 Array *p_dy =
nullptr);
288void gradient_x(
const Array &array, Array &dx);
313void gradient_y(
const Array &array, Array &dy);
379 int iterations = 500,
403 int iterations = 500,
435 bool downward =
false);
497 bool rotate90 =
false,
498 int n_kernel_samples = 8,
499 const glm::vec2 &jitter = {0.5f, 0.5f},
500 int angle_filter_ir = 8,
501 const Array *p_ctrl_param =
nullptr,
502 const Array *p_noise_x =
nullptr,
503 const Array *p_noise_y =
nullptr,
504 Array *p_modulus =
nullptr,
505 Array *p_angle_jump_mask =
nullptr,
506 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
534 bool rotate90 =
false,
535 int n_kernel_samples = 8,
536 const glm::vec2 &jitter = {0.5f, 0.5f},
537 int angle_filter_ir = 8,
538 const Array *p_ctrl_param =
nullptr,
539 const Array *p_noise_x =
nullptr,
540 const Array *p_noise_y =
nullptr,
541 Array *p_modulus =
nullptr,
542 Array *p_angle_jump_mask =
nullptr,
543 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
549 int n_kernel_samples = 8,
550 const glm::vec2 &jitter = {0.5f, 0.5f},
551 const Array *p_ctrl_param =
nullptr,
552 const Array *p_noise_x =
nullptr,
553 const Array *p_noise_y =
nullptr,
554 Array *p_modulus =
nullptr,
555 Array *p_angle_jump_mask =
nullptr,
556 glm::vec4 bbox = {0.f, 1.f, 0.f, 1.f});
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Definition blending.hpp:225
Array gradient_norm(const Array &array)
See hmap::gradient_norm.
Definition gradient_gpu.cpp:53
Array phase_field_angle(const Array &angle, const glm::vec2 &kw, std::uint32_t seed, float kp, int n_kernel_samples=8, const glm::vec2 &jitter={0.5f, 0.5f}, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Array *p_modulus=nullptr, Array *p_angle_jump_mask=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Definition phase_field.cpp:164
Array laplacian_fract(const Array &array, float s, int ir)
Compute the fractional Laplacian of an array.
Definition gradient_gpu.cpp:75
Array phase_field(const Array &array, const glm::vec2 &kw, std::uint32_t seed, float kp, bool rotate90=false, int n_kernel_samples=8, const glm::vec2 &jitter={0.5f, 0.5f}, int angle_filter_ir=8, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, Array *p_modulus=nullptr, Array *p_angle_jump_mask=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
Compute a phase field from an input array using local orientation and noise.
Definition phase_field.cpp:48
void phase_averaging(Array &field_real, Array &field_imag, int ir)
Apply phase averaging on real and imaginary fields using a GPU kernel.
Definition phase_field.cpp:19
Array gradient_angle_circular_smoothing(const Array &array, int ir, bool downward=false)
See hmap::gradient_angle_circular_smoothing.
Definition gradient_gpu.cpp:18
Definition algebra.hpp:23
void solve_poisson_gauss_seidel(const Array &rhs, Array &h, int iterations=500, float omega=1.0f)
Solve the Poisson equation ∇²h = rhs using Gauss–Seidel iteration.
Definition solve_poisson_gauss_seidel.cpp:10
Array gradient_x(const Array &array)
Compute the gradient in the x-direction of a 2D array.
Definition gradient.cpp:205
Array talus_jump_mask(const Array &z, float threshold, float sigma)
Definition gradient.cpp:305
Array divergence_from_gradients(const Array &dx, const Array &dy)
Compute the divergence of a 2D gradient field.
Definition gradient.cpp:64
Array threshold(const Array &array, float x0, float x1)
Linear threshold.
Definition math.cpp:498
Array unwrap_phase(const Array &alpha)
Unwraps a 2D phase array to correct discontinuities in phase data.
Definition unwrap_phase.cpp:16
Array gradient_norm_scharr(const Array &array, Array *p_dx=nullptr, Array *p_dy=nullptr)
Compute the gradient norm of a 2D array using the Scharr filter.
Definition gradient.cpp:191
Array gradient_angle_circular_smoothing(const Array &array, int ir, bool downward=false)
Computes a smoothed gradient angle (aspect) field with circular unwrapping.
Definition gradient.cpp:96
Array gradient_norm(const Array &array, Array *p_dx=nullptr, Array *p_dy=nullptr)
Compute the gradient norm of a 2D array.
Definition gradient.cpp:131
Array gradient_talus(const Array &array)
Compute the gradient talus slope of a 2D array.
Definition gradient.cpp:257
Array normal_map_to_heightmap_poisson(const Texture &nmap, int iterations=500, float omega=1.5f)
Definition normal_map.cpp:73
Array gradient_norm_filtered(const Array &array, int ir)
Compute a smoothed gradient magnitude map.
Definition gradient.cpp:146
Array laplacian(const Array &array)
Compute the Laplacian of a 2D array.
Definition gradient.cpp:290
Array gradient_y(const Array &array)
Compute the gradient in the y-direction of a 2D array.
Definition gradient.cpp:231
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:52
Array gradient_norm_prewitt(const Array &array, Array *p_dx=nullptr, Array *p_dy=nullptr)
Compute the gradient norm of a 2D array using the Prewitt filter.
Definition gradient.cpp:161
std::vector< float > gradient1d(const std::vector< float > &v)
Compute the gradient of a 1D vector.
Definition vector.cpp:17
Array gradient_norm_sobel(const Array &array, Array *p_dx=nullptr, Array *p_dy=nullptr)
Compute the gradient norm of a 2D array using the Sobel filter.
Definition gradient.cpp:176
Array normal_map_to_heightmap(const Texture &nmap)
Converts a normal map to a heightmap using direct summation of gradients.
Definition normal_map.cpp:38
Texture normal_map(const Array &array)
Generates a normal map from a given 2D array.
Definition normal_map.cpp:16
Array gradient_angle(const Array &array, bool downward=false)
Compute the polar angle of the gradient of a 2D array.
Definition gradient.cpp:73
Header file for the Texture class.