HighMap library (C++)
Loading...
Searching...
No Matches
primitives_gpu.cpp File Reference

Namespaces

namespace  hmap
 
namespace  hmap::gpu
 

Functions

void hmap::gpu::helper_bind_optional_buffers (clwrapper::Run &run, const Array *p_noise_x, const Array *p_noise_y)
 
Array hmap::gpu::gabor_wave (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float angle_spread_ratio=1.f, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Return an array filled with coherence Gabor noise.
 
Array hmap::gpu::gabor_wave (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float angle=0.f, float angle_spread_ratio=1.f, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 
Array hmap::gpu::gabor_wave_fbm (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float angle_spread_ratio=1.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Return an array filled with coherence Gabor noise.
 
Array hmap::gpu::gabor_wave_fbm (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float angle=0.f, float angle_spread_ratio=1.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 
Array hmap::gpu::gavoronoise (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array &angle, float amplitude=0.05f, float angle_spread_ratio=1.f, glm::vec2 kw_multiplier={4.f, 4.f}, float slope_strength=1.f, float branch_strength=2.f, float z_cut_min=0.2f, float z_cut_max=1.f, int octaves=8, float persistence=0.4f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a 2D array using the GavoroNoise algorithm, which is a procedural noise technique for terrain generation and other applications.
 
Array hmap::gpu::gavoronoise (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float angle=0.f, float amplitude=0.05f, float angle_spread_ratio=1.f, glm::vec2 kw_multiplier={4.f, 4.f}, float slope_strength=1.f, float branch_strength=2.f, float z_cut_min=0.2f, float z_cut_max=1.f, int octaves=8, float persistence=0.4f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 
Array hmap::gpu::gavoronoise (const Array &base, glm::vec2 kw, std::uint32_t seed, float amplitude=0.05f, glm::vec2 kw_multiplier={4.f, 4.f}, float slope_strength=1.f, float branch_strength=2.f, float z_cut_min=0.2f, float z_cut_max=1.f, int octaves=8, float persistence=0.4f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 
Array hmap::gpu::hemisphere_field (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float rmin=0.05f, float rmax=0.8f, float amplitude_random_ratio=1.f, float density=0.1f, glm::vec2 jitter={1.f, 1.f}, float shift=0.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, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a scalar field representing the signed distance to randomly generated hemispheres.
 
Array hmap::gpu::hemisphere_field_fbm (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float rmin=0.05f, float rmax=0.8f, float amplitude_random_ratio=1.f, float density=0.1f, glm::vec2 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, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 See hmap::hemisphere_field.
 
Array hmap::gpu::mountain_range_radial (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float half_width=0.2f, float angle_spread_ratio=0.5f, float core_size_ratio=1.f, glm::vec2 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, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a heightmap representing a radial mountain range.
 
Array hmap::gpu::noise (NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::ivec2 period={0, 0})
 See hmap::noise. period sets the tiling period in lattice cells. For the heightmap to be periodic with respect to the full domain, period must be equal to the wavenumber kw, i.e. period = {round(kw.x), round(kw.y)}; a smaller period makes the pattern repeat within the domain. A component <= 0 disables wrapping on that axis (default {0, 0}: non-periodic). Tiling is exact only for lattice noise types with integer kw; simplex is never wrapped.
 
Array hmap::gpu::noise_fbm (NoiseType noise_type, glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, const Array *p_stretching=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::ivec2 period={0, 0})
 See hmap::noise_fbm. period sets the tiling period in lattice cells for the base octave. For the heightmap to be periodic with respect to the full domain, period must be equal to the wavenumber kw, i.e. period = {round(kw.x), round(kw.y)}; a smaller period makes the pattern repeat within the domain. A component <= 0 disables wrapping on that axis (default {0, 0}: non-periodic). Seamless tiling additionally requires an integer lacunarity (the default 2); simplex is never wrapped.
 
Array hmap::gpu::polygon_field (glm::ivec2 shape, glm::vec2 kw, std::uint32_t 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, glm::vec2 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, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a scalar field representing the signed distance to randomly generated polygons.
 
Array hmap::gpu::polygon_field_fbm (glm::ivec2 shape, glm::vec2 kw, std::uint32_t 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, glm::vec2 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, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a scalar field representing the signed distance to randomly generated polygons combined with fractal Brownian motion (fBm) noise modulation.
 
Array hmap::gpu::vorolines (glm::ivec2 shape, float density, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, float alpha=0.f, float alpha_span=M_PI, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
 Generates a Voronoi-based pattern where cells are defined by proximity to random lines.
 
Array hmap::gpu::vorolines_fbm (glm::ivec2 shape, float density, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, float alpha=0.f, float alpha_span=M_PI, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
 Generates a Voronoi-based pattern using distances to lines defined by random points and angles, with additional fractal Brownian motion (fBm) noise modulation.
 
Array hmap::gpu::voronoi (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a Voronoi diagram in a 2D array with configurable properties.
 
Array hmap::gpu::voronoi_fbm (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a Voronoi diagram in a 2D array with configurable properties.
 
Array hmap::gpu::voronoise (glm::ivec2 shape, glm::vec2 kw, float u_param, float v_param, std::uint32_t seed, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates a 2D Voronoi noise array.
 
Array hmap::gpu::voronoise_fbm (glm::ivec2 shape, glm::vec2 kw, float u_param, float v_param, std::uint32_t seed, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Return an array filled with coherence Voronoise.
 
Array hmap::gpu::voronoi_edge_distance (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, glm::vec2 jitter={0.5f, 0.5f}, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Computes the Voronoi edge distance.
 
Array hmap::gpu::vororand (glm::ivec2 shape, float density, float variability, std::uint32_t seed, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f}, glm::vec4 bbox_points={0.f, 1.f, 0.f, 1.f})
 Generates a 2D Voronoi-based scalar field using OpenCL.
 
Array hmap::gpu::vororand (glm::ivec2 shape, const std::vector< float > &xp, const std::vector< float > &yp, float k_smoothing=0.f, float exp_sigma=0.f, VoronoiReturnType return_type=VoronoiReturnType::F1_SQUARED, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 
Array hmap::gpu::wavelet_noise (glm::ivec2 shape, glm::vec2 kw, std::uint32_t seed, float kw_multiplier=2.f, float vorticity=0.f, float density=1.f, int octaves=8, float weight=0.7f, float persistence=0.5f, float lacunarity=2.f, const Array *p_ctrl_param=nullptr, const Array *p_noise_x=nullptr, const Array *p_noise_y=nullptr, glm::vec4 bbox={0.f, 1.f, 0.f, 1.f})
 Generates 2D wavelet noise using an OpenCL kernel.