13#include "qml_material/math/scalar.hpp"
15namespace qml_material::math
19inline constexpr scalar k_blur_sigma_scale = 0.57735f;
21[[nodiscard]]
inline scalar radius_to_sigma(scalar radius) {
22 return radius > 0 ? k_blur_sigma_scale * radius + 0.5f : 0.0f;
25[[nodiscard]]
inline scalar sigma_to_radius(scalar sigma) {
26 return sigma > 0.5f ? (sigma - 0.5f) / k_blur_sigma_scale : 0.0f;
31[[nodiscard]]
float gaussian_cdf(
float x);
39void fill_unit_cdf_profile(std::span<std::uint8_t> out);
43[[nodiscard]]
int gaussian_kernel_radius(scalar sigma);
47void fill_gaussian_kernel_1d(std::span<float> out, scalar sigma);
51[[nodiscard]]
int rrect_corner_blur_size(scalar sigma, scalar radius);
61void fill_rrect_corner_blur(std::span<std::uint8_t> out, scalar sigma, scalar radius);