|
| bool | operator== (const Class &, const Class &) |
| |
| std::ostream & | operator<< (std::ostream &, const Object &) |
| |
| std::ostream & | operator<< (std::ostream &, AntiAliasingLevel) |
| |
| bool | operator== (const Camera &, const Camera &) |
| |
| std::ostream & | operator<< (std::ostream &, const Camera &) |
| |
| std::ostream & | operator<< (std::ostream &, CameraProjection) |
| |
| float | to_linear_colorspace (float srgb_component_value) |
| |
| float | to_srgb_colorspace (float linear_component_value) |
| |
| Color | to_linear_colorspace (const Color &) |
| |
| Color | to_srgb_colorspace (const Color &) |
| |
| std::string | to_html_string_rgba (const Color &) |
| |
| std::optional< Color > | try_parse_html_color_string (std::string_view) |
| |
| Color | multiply_luminance (const Color &color, float factor) |
| |
| template<std::integral T> |
| constexpr T | to_integer (const Color32 &color32) |
| |
| std::ostream & | operator<< (std::ostream &, const ColorHSLA &) |
| |
| constexpr bool | is_srgb_encoded (ColorRenderBufferFormat format) |
| |
| std::ostream & | operator<< (std::ostream &, ColorRenderBufferFormat) |
| |
| std::ostream & | operator<< (std::ostream &, DepthStencilRenderBufferFormat) |
| |
| std::ostream & | operator<< (std::ostream &, const Material &) |
| |
| bool | operator== (const MaterialPropertyBlock &, const MaterialPropertyBlock &) |
| |
| std::ostream & | operator<< (std::ostream &, const MaterialPropertyBlock &) |
| |
| std::ostream & | operator<< (std::ostream &, const Mesh &) |
| |
| Vector3 | mass_center_of (const Mesh &) |
| |
| Vector3 | average_centroid_of (const Mesh &) |
| |
| std::vector< Vector4 > | calc_tangent_vectors (const MeshTopology &, std::span< const Vector3 > vertices, std::span< const Vector3 > normals, std::span< const Vector2 > tex_coords, const MeshIndicesView &) |
| |
| std::optional< Sphere > | bounding_sphere_of (const Mesh &) |
| |
| std::ostream & | operator<< (std::ostream &, MeshTopology) |
| |
| std::ostream & | operator<< (std::ostream &, const RenderTexture &) |
| |
| std::ostream & | operator<< (std::ostream &, const RenderTextureParams &) |
| |
| template<size_t I, typename T > |
| constexpr const T & | get (const Rgb< T > &v) |
| |
| template<size_t I, typename T > |
| constexpr T & | get (Rgb< T > &v) |
| |
| template<size_t I, typename T > |
| constexpr T && | get (Rgb< T > &&v) |
| |
| template<size_t I, typename T > |
| constexpr const T && | get (const Rgb< T > &&v) |
| |
| template<ColorComponent T> |
| std::ostream & | operator<< (std::ostream &o, const Rgba< T > &rgba) |
| |
| template<ColorComponent T> |
| constexpr const T * | value_ptr (const Rgba< T > &rgba) |
| |
| template<ColorComponent T> |
| constexpr T * | value_ptr (Rgba< T > &rgba) |
| |
| template<size_t I, ColorComponent T> |
| constexpr const T & | get (const Rgba< T > &rgba) |
| |
| template<size_t I, ColorComponent T> |
| constexpr T & | get (Rgba< T > &rgba) |
| |
| template<size_t I, ColorComponent T> |
| constexpr T && | get (Rgba< T > &&rgba) |
| |
| template<size_t I, ColorComponent T> |
| constexpr const T && | get (const Rgba< T > &&rgba) |
| |
| template<ColorComponent T, std::invocable< const T & > UnaryOperation> |
| constexpr auto | map (const Rgba< T > &x, UnaryOperation op) -> Rgba< decltype(std::invoke(op, x[0]))> |
| |
| template<ColorComponent T, std::invocable< const T &, const T & > BinaryOperation> |
| constexpr auto | map (const Rgba< T > &x, const Rgba< T > &y, BinaryOperation op) -> Rgba< decltype(std::invoke(op, x[0], y[0]))> |
| |
| template<ColorComponent T, typename TInterpolant > |
| constexpr auto | lerp (const Rgba< T > &x, const Rgba< T > &y, TInterpolant t) |
| |
| template<ColorComponent T> |
| constexpr Rgba< T > | saturate (const Rgba< T > &x) |
| |
| void | draw_bvh (SceneCache &, const BVH &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_aabb (SceneCache &, const AABB &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_aabbs (SceneCache &, std::span< const AABB >, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_bvh_leaf_nodes (SceneCache &, const BVH &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_xz_floor_lines (SceneCache &, const std::function< void(SceneDecoration &&)> &out, float scale=5.0f) |
| |
| void | draw_xz_grid (SceneCache &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_xy_grid (SceneCache &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_yz_grid (SceneCache &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_arrow (SceneCache &, const ArrowProperties &, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | draw_line_segment (SceneCache &, const LineSegment &, const Color &, float radius, const std::function< void(SceneDecoration &&)> &out) |
| |
| void | update_scene_bvh (std::span< const SceneDecoration >, BVH &) |
| |
| void | for_each_ray_collision_with_scene (const BVH &scene_bvh, SceneCache &, std::span< const SceneDecoration >, const Ray &world_space_ray, const std::function< void(SceneCollision &&)> &out) |
| |
| std::vector< SceneCollision > | get_all_ray_collisions_with_scene (const BVH &scene_bvh, SceneCache &, std::span< const SceneDecoration >, const Ray &world_space_ray) |
| |
| std::optional< RayCollision > | get_closest_world_space_ray_triangle_collision (const Mesh &, const BVH &triangle_bvh, const Transform &, const Ray &world_space_ray) |
| |
| std::optional< RayCollision > | get_closest_world_space_ray_triangle_collision (const PolarPerspectiveCamera &, const Mesh &, const BVH &triangle_bvh, const Rect &screen_render_rect, Vector2 mouse_screen_position) |
| |
| SceneRendererParams | calc_standard_dark_scene_render_params (const PolarPerspectiveCamera &, AntiAliasingLevel, Vector2 dimensions, float device_pixel_ratio) |
| |
| BVH | create_triangle_bvh (const Mesh &) |
| |
| FrustumPlanes | calc_frustum_planes (const Camera &camera, float aspect_ratio) |
| |
| std::ostream & | operator<< (std::ostream &, const Shader &) |
| |
| std::ostream & | operator<< (std::ostream &, ShaderPropertyType) |
| |
| std::ostream & | operator<< (std::ostream &, const Texture2D &) |
| |
| size_t | num_bytes_per_component_in (TextureComponentFormat) |
| |
| std::ostream & | operator<< (std::ostream &, TextureFilterMode) |
| |
| size_t | num_components_in (TextureFormat) |
| |
| TextureComponentFormat | component_format_of (TextureFormat) |
| |
| size_t | num_bytes_per_pixel_in (TextureFormat) |
| |
| std::optional< TextureFormat > | to_texture_format (size_t num_components, TextureComponentFormat) |
| |
| std::ostream & | operator<< (std::ostream &, TextureWrapMode) |
| |
| template<std::unsigned_integral T> |
| std::ostream & | operator<< (std::ostream &o, const Unorm< T > &unorm) |
| |
| template<std::unsigned_integral T, std::floating_point TInterpolant> |
| constexpr Unorm< T > | lerp (Unorm< T > a, Unorm< T > b, TInterpolant t) |
| |
| template<std::unsigned_integral T> |
| constexpr Unorm< T > | saturate (const Unorm< T > &v) |
| |
| std::ostream & | operator<< (std::ostream &, const AABB &) |
| |
| constexpr Vector3 | centroid_of (const AABB &aabb) |
| |
| constexpr Vector3 | dimensions_of (const AABB &aabb) |
| |
| constexpr Vector3 | half_widths_of (const AABB &aabb) |
| |
| constexpr float | volume_of (const AABB &aabb) |
| |
| constexpr bool | is_point (const AABB &aabb) |
| |
| constexpr bool | has_zero_volume (const AABB &aabb) |
| |
| std::array< Vector3, 8 > | corner_vertices_of (const AABB &aabb) |
| |
| AABB | transform_aabb (const Matrix4x4 &m, const AABB &aabb) |
| |
| AABB | transform_aabb (const Transform &t, const AABB &aabb) |
| |
| constexpr AABB | bounding_aabb_of (const Vector3 &x) |
| |
| constexpr AABB | bounding_aabb_of (const AABB &x, const Vector3 &y) |
| |
| constexpr AABB | bounding_aabb_of (const AABB &x, const AABB &y) |
| |
| constexpr AABB | bounding_aabb_of (const std::optional< AABB > &x, const AABB &y) |
| |
| constexpr std::optional< AABB > | bounding_aabb_of (std::optional< AABB > x, std::optional< AABB > y) |
| |
template<std::ranges::input_range R, class Proj = std::identity>
requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>, Proj>::value_type, const Vector3&> |
| constexpr std::optional< AABB > | bounding_aabb_of (R &&r, Proj proj={}) |
| |
template<InputRangeWithSizeGreaterThan< 0 > R, class Proj = std::identity>
requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>, Proj>::value_type, const Vector3&> |
| constexpr AABB | bounding_aabb_of (R &&r, Proj proj={}) |
| |
template<std::ranges::input_range Range, class Proj = std::identity>
requires std::convertible_to<typename std::projected<std::ranges::iterator_t<Range>, Proj>::value_type, const AABB&> |
| constexpr std::optional< AABB > | bounding_aabb_of (Range &&r, Proj proj={}) |
| |
template<std::ranges::input_range Range, class Proj = std::identity>
requires std::convertible_to<typename std::projected<std::ranges::iterator_t<Range>, Proj>::value_type, const std::optional<AABB>&> |
| | and (not std::convertible_to< typename std::projected< std::ranges::iterator_t< Range >, Proj >::value_type, const AABB & >) const expr std |
| |
| std::optional< Rect > | loosely_project_into_ndc (const AABB &aabb, const Matrix4x4 &view_mat, const Matrix4x4 &proj_mat, float znear, float zfar) |
| |
| std::ostream & | operator<< (std::ostream &, const AnalyticPlane &) |
| |
| template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2> |
| constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > | operator+ (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs) |
| |
| template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2> |
| constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > | operator- (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs) |
| |
| template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2> |
| constexpr bool | operator== (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs) |
| |
| template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2> |
| constexpr auto | operator<=> (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units> |
| std::ostream & | operator<< (std::ostream &o, const Angle< Rep, Units > &angle) |
| |
| template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2> |
| auto | mod (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)> |
| |
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
requires (not std::is_same_v<Units1, Units2>) |
| constexpr auto | min (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)> |
| |
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
requires (not std::is_same_v<Units1, Units2>) |
| constexpr auto | max (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)> |
| |
template<std::floating_point Rep, AngularUnitTraits Units, std::convertible_to< Angle< Rep, Units > > AngleMin, std::convertible_to< Angle< Rep, Units > > AngleMax>
requires ( not std::is_same_v<Angle<Rep, Units>, AngleMin> or not std::is_same_v<Angle<Rep, Units>, AngleMax> or not std::is_same_v<AngleMin, AngleMax> ) |
| constexpr Angle< Rep, Units > | clamp (const Angle< Rep, Units > &v, const AngleMin &min, const AngleMax &max) |
| |
| template<std::floating_point T> |
| constexpr ClosedInterval< T > | unit_interval () |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | expand_by_absolute_amount (const ClosedInterval< T > &interval, T abs_amount) |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | bounding_interval_of (const T &x) |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | bounding_interval_of (const ClosedInterval< T > &x, const T &y) |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | bounding_interval_of (const std::optional< ClosedInterval< T > > &x, const T &y) |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | bounding_interval_of (const ClosedInterval< T > &x, const ClosedInterval< T > &y) |
| |
| template<typename T > |
| constexpr ClosedInterval< T > | bounding_interval_of (const std::optional< ClosedInterval< T > > &x, const ClosedInterval< T > &y) |
| |
| template<typename T > |
| constexpr const T & | clamp (const T &v, const ClosedInterval< T > &interval) |
| |
| bool | is_intersecting (const Rect &, const Vector2 &) |
| |
| bool | is_intersecting (const FrustumPlanes &, const AABB &) |
| |
| std::optional< RayCollision > | find_collision (const Ray &, const Sphere &) |
| |
| std::optional< RayCollision > | find_collision (const Ray &, const AABB &) |
| |
| std::optional< RayCollision > | find_collision (const Ray &, const Plane &) |
| |
| std::optional< RayCollision > | find_collision (const Ray &, const Disc &) |
| |
| std::optional< RayCollision > | find_collision (const Ray &, const Triangle &) |
| |
| template<std::signed_integral T> |
| T | abs (T num) |
| |
| template<HasAbsFunction T, size_t N> |
| Vector< T, N > | abs (const Vector< T, N > &x) |
| |
| template<std::floating_point T> |
| T | floor (T num) |
| |
| template<HasFloorFunction T, size_t N> |
| Vector< T, N > | floor (const Vector< T, N > &x) |
| |
| template<std::floating_point T> |
| T | copysign (T mag, T sgn) |
| |
| template<std::integral T> |
| constexpr T | mod (T x, T y) |
| |
| template<std::floating_point T> |
| T | mod (T x, T y) |
| |
| template<HasModFunction T, size_t N> |
| constexpr Vector< T, N > | mod (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
| template<HasMinFunction T, size_t N> |
| constexpr Vector< T, N > | elementwise_min (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
template<HasMaxFunction T, size_t N>
requires std::is_arithmetic_v<T> |
| constexpr Vector< T, N > | elementwise_max (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
| template<HasClampFunction T, size_t N> |
| constexpr Vector< T, N > | elementwise_clamp (const Vector< T, N > &v, const Vector< T, N > &lo, const Vector< T, N > &hi) |
| |
| template<HasClampFunction T, size_t N> |
| constexpr Vector< T, N > | elementwise_clamp (const Vector< T, N > &v, const T &lo, const T &hi) |
| |
| template<std::floating_point T> |
| constexpr T | saturate (T num) |
| |
| template<HasSaturateFunction T, size_t N> |
| constexpr Vector< T, N > | saturate (const Vector< T, N > &x) |
| |
template<typename Arithmetic1 , typename Arithmetic2 , typename Arithmetic3 >
requires std::is_arithmetic_v<Arithmetic1> |
| and std::is_arithmetic_v< Arithmetic2 > and std::is_arithmetic_v< Arithmetic3 > constexpr auto | lerp (const Arithmetic1 &a, const Arithmetic2 &b, const Arithmetic3 &t) |
| |
template<typename T , size_t N, typename TInterpolant >
requires HasLerpFunction<T, TInterpolant> |
| constexpr auto | lerp (const Vector< T, N > &x, const Vector< T, N > &y, const TInterpolant &t) -> Vector< decltype(lerp(x[0], y[0], t)), N > |
| |
| template<std::equality_comparable T, size_t N> |
| constexpr Vector< bool, N > | elementwise_equal (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
| template<LessThanComparable T, size_t N> |
| constexpr Vector< bool, N > | elementwise_less (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
| template<LessThanComparable T, size_t N> |
| constexpr Vector< bool, N > | elementwise_less (const Vector< T, N > &x, const T &v) |
| |
| template<LessThanOrEqualToComparable T, size_t N> |
| constexpr Vector< bool, N > | elementwise_less_equal (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
template<typename T >
requires HasAbsFunction<T> |
| and LessThanComparable< T > bool | equal_within_absdiff (T x, T y, T absdiff) |
| |
template<typename T , size_t N>
requires HasAbsFunction<T> |
| and LessThanComparable< T > Vector< bool, N > | equal_within_absdiff (const Vector< T, N > &x, const Vector< T, N > &y, const Vector< T, N > &absdiff) |
| |
template<typename T , size_t N>
requires HasAbsFunction<T> |
| and LessThanComparable< T > Vector< bool, N > | equal_within_absdiff (const Vector< T, N > &x, const Vector< T, N > &y, const T &absdiff) |
| |
| template<std::floating_point T> |
| bool | equal_within_epsilon (T x, T y) |
| |
| template<std::floating_point T, size_t N> |
| Vector< bool, N > | equal_within_epsilon (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
| template<std::floating_point T> |
| bool | equal_within_scaled_epsilon (T x, T y) |
| |
| template<std::floating_point T> |
| bool | equal_within_reldiff (T x, T y, T reldiff) |
| |
| template<std::floating_point T, size_t N> |
| Vector< bool, N > | equal_within_reldiff (const Vector< T, N > &x, const Vector< T, N > &y, T reldiff) |
| |
| template<std::floating_point T> |
| bool | isnan (T num) |
| |
| template<std::floating_point T, size_t N> |
| Vector< bool, N > | isnan (const Vector< T, N > &x) |
| |
| template<std::floating_point T> |
| T | log (T num) |
| |
| template<std::floating_point T> |
| T | pow (T base, T exp) |
| |
template<typename T >
requires std::is_integral_v<T> |
| or std::is_floating_point_v< T > or std::is_pointer_v< T > constexpr T | midpoint (T a, T b) |
| |
| template<typename T , size_t N> |
| Vector< T, N > | midpoint (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
template<std::ranges::range R, typename T = typename std::ranges::range_value_t<R>::value_type, size_t N = std::tuple_size_v<typename std::ranges::range_value_t<R>>>
requires std::is_arithmetic_v<T> |
| constexpr Vector< T, N > | centroid_of (const R &r) |
| |
template<typename T , size_t N>
requires std::is_arithmetic_v<T> |
| constexpr Vector< T, N > | centroid_of (const std::initializer_list< Vector< T, N > > &vs) |
| |
| std::ostream & | operator<< (std::ostream &, CoordinateAxis) |
| |
| std::ostream & | operator<< (std::ostream &, CoordinateDirection) |
| |
| constexpr CoordinateDirection | cross (CoordinateDirection x, CoordinateDirection y) |
| |
| std::ostream & | operator<< (std::ostream &, const Disc &) |
| |
| float | ease_out_elastic (float) |
| |
| constexpr std::array< Vector3, 3 > | axis_directions_of (const Ellipsoid &ellipsoid) |
| |
| template<typename T , size_t N, std::invocable< const T & > UnaryOperation> |
| constexpr auto | map (const Vector< T, N > &x, UnaryOperation op) -> Vector< decltype(std::invoke(op, x[0])), N > |
| |
| template<typename T , size_t N, std::invocable< const T &, const T & > BinaryOperation> |
| constexpr auto | map (const Vector< T, N > &x, const Vector< T, N > &y, BinaryOperation op) -> Vector< decltype(std::invoke(op, x[0], y[0])), N > |
| |
| template<typename T , size_t N, std::invocable< const T &, const T &, const T & > TernaryOperation> |
| constexpr auto | map (const Vector< T, N > &x, const Vector< T, N > &y, const Vector< T, N > &z, TernaryOperation op) -> Vector< decltype(std::invoke(op, x[0], y[0], z[0])), N > |
| |
| template<size_t N> |
| constexpr bool | all_of (const Vector< bool, N > &v) |
| |
| template<size_t N> |
| constexpr bool | any_of (const Vector< bool, N > &v) |
| |
| template<size_t N> |
| constexpr bool | none_of (const Vector< bool, N > &v) |
| |
| template<std::floating_point T> |
| T | sqrt (T num) |
| |
| template<std::floating_point T> |
| T | inversesqrt (T x) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr T | dot (T x, T y) |
| |
template<typename T , size_t N>
requires std::is_arithmetic_v<T> |
| constexpr T | dot (const Vector< T, N > &x, const Vector< T, N > &y) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr Vector< T, 3 > | cross (const Vector< T, 3 > &x, const Vector< T, 3 > &y) |
| |
| template<std::floating_point T, size_t N> |
| T | length (const Vector< T, N > &v) |
| |
| template<std::floating_point T, size_t N> |
| constexpr T | length2 (const Vector< T, N > &v) |
| |
| template<std::floating_point T, size_t N> |
| Vector< T, N > | normalize (const Vector< T, N > &v) |
| |
| template<std::integral T, std::floating_point FloatingPointResult = float> |
| constexpr FloatingPointResult | aspect_ratio_of (Vector< T, 2 > v) |
| |
| template<std::floating_point T> |
| constexpr T | aspect_ratio_of (Vector< T, 2 > v) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr T | area_of (const Vector< T, 2 > &v) |
| |
| std::ostream & | operator<< (std::ostream &, const LineSegment &) |
| |
| Radians | vertical_to_horizontal_field_of_view (Radians vertical_field_of_view, float aspect_ratio) |
| |
| Vector2 | topleft_normalized_point_to_ndc (Vector2 normalized_point) |
| |
| Vector2 | ndc_point_to_topleft_normalized (Vector2 ndc_point) |
| |
| Vector4 | topleft_normalized_point_to_ndc_cube (Vector2 normalized_point) |
| |
| Ray | perspective_unproject_topleft_normalized_pos_to_world (Vector2 normalized_point, Vector3 camera_world_space_origin, const Matrix4x4 &camera_view_matrix, const Matrix4x4 &camera_proj_matrix) |
| |
| Rect | ndc_rect_to_topleft_viewport_rect (const Rect &ndc_rect, const Rect &viewport) |
| |
| Vector2 | project_onto_viewport_rect (const Vector3 &world_space_position, const Matrix4x4 &view_matrix, const Matrix4x4 &projection_matrix, const Rect &viewport_rect) |
| |
| std::optional< Sphere > | bounding_sphere_of (std::span< const Vector3 >) |
| |
| Sphere | bounding_sphere_of (const AABB &) |
| |
| AABB | bounding_aabb_of (const Sphere &) |
| |
| Ray | transform_ray (const Ray &, const Matrix4x4 &) |
| |
| Ray | inverse_transform_ray (const Ray &, const Transform &) |
| |
| Matrix4x4 | matrix4x4_transform_between (const Disc &, const Disc &) |
| |
| Matrix4x4 | matrix4x4_transform_between (const LineSegment &, const LineSegment &) |
| |
| Transform | transform_between (const LineSegment &, const LineSegment &) |
| |
| Transform | cylinder_to_line_segment_transform (const LineSegment &, float radius) |
| |
| Transform | y_to_y_cone_to_segment_transform (const LineSegment &, float radius) |
| |
| Matrix4x4 | matrix4x4_transform_between_directions (const Vector3 &dir1, const Vector3 &dir2) |
| |
| EulerAngles | extract_eulers_xyz (const Quaternion &) |
| |
| Vector3 | transform_point (const Matrix4x4 &mat, const Vector3 &point) |
| |
| Vector3 | transform_vector (const Matrix4x4 &mat, const Vector3 &vector) |
| |
| Quaternion | to_world_space_rotation_quaternion (const EulerAngles &) |
| |
| void | apply_world_space_rotation (Transform &application_target, const EulerAngles &euler_angles, const Vector3 &rotation_center) |
| |
| float | volume_of (const Tetrahedron &) |
| |
| std::array< Matrix4x4, 6 > | calc_cubemap_view_proj_matrices (const Matrix4x4 &projection_matrix, Vector3 cube_center) |
| |
| template<typename T , size_t C, size_t R> |
| std::ostream & | operator<< (std::ostream &o, const Matrix< T, C, R > &m) |
| |
| template<typename T , size_t C, size_t R> |
| std::string | to_string (const Matrix< T, C, R > &m) |
| |
| template<size_t I, typename T , size_t C, size_t R> |
| constexpr const Matrix< T, C, R >::value_type & | get (const Matrix< T, C, R > &m) |
| |
| template<size_t I, typename T , size_t C, size_t R> |
| constexpr Matrix< T, C, R >::value_type & | get (Matrix< T, C, R > &m) |
| |
| template<size_t I, typename T , size_t C, size_t R> |
| constexpr Matrix< T, C, R >::value_type && | get (Matrix< T, C, R > &&m) |
| |
| template<size_t I, typename T , size_t C, size_t R> |
| constexpr const Matrix< T, C, R >::value_type && | get (const Matrix< T, C, R > &&m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator+ (const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator- (const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator+ (const Matrix< T, 3, 3 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator+ (T scalar, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator+ (const Matrix< T, 3, 3 > &m1, const Matrix< T, 3, 3 > &m2) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator- (const Matrix< T, 3, 3 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator- (T scalar, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator- (const Matrix< T, 3, 3 > &m1, const Matrix< T, 3, 3 > &m2) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator* (const Matrix< T, 3, 3 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator* (T scalar, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 >::column_type | operator* (const Matrix< T, 3, 3 > &m, const typename Matrix< T, 3, 3 >::row_type &v) |
| |
| template<typename T > |
| Matrix< T, 3, 3 >::row_type | operator* (const typename Matrix< T, 3, 3 >::column_type &v, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator* (const Matrix< T, 3, 3 > &a, const Matrix< T, 3, 3 > &b) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator/ (const Matrix< T, 3, 3 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator/ (T scalar, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 >::column_type | operator/ (const Matrix< T, 3, 3 > &m, const typename Matrix< T, 3, 3 >::row_type &v) |
| |
| template<typename T > |
| Matrix< T, 3, 3 >::row_type | operator/ (const typename Matrix< T, 3, 3 >::column_type &v, const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 3, 3 > | operator/ (const Matrix< T, 3, 3 > &m1, const Matrix< T, 3, 3 > &m2) |
| |
| template<typename T > |
| constexpr T | identity () |
| |
| template<> |
| constexpr Matrix3x3 | identity< Matrix3x3 > () |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator+ (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator- (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator+ (const Matrix< T, 4, 4 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator+ (T scalar, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator+ (const Matrix< T, 4, 4 > &m1, const Matrix< T, 4, 4 > &m2) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator- (const Matrix< T, 4, 4 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator- (T scalar, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator- (const Matrix< T, 4, 4 > &m1, const Matrix< T, 4, 4 > &m2) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator* (const Matrix< T, 4, 4 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator* (T scalar, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 >::column_type | operator* (const Matrix< T, 4, 4 > &m, const typename Matrix< T, 4, 4 >::row_type &v) |
| |
| template<typename T > |
| Matrix< T, 4, 4 >::row_type | operator* (const typename Matrix< T, 4, 4 >::column_type &v, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator* (const Matrix< T, 4, 4 > &a, const Matrix< T, 4, 4 > &b) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator/ (const Matrix< T, 4, 4 > &m, T scalar) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator/ (T scalar, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 >::column_type | operator/ (const Matrix< T, 4, 4 > &m, const typename Matrix< T, 4, 4 >::row_type &v) |
| |
| template<typename T > |
| Matrix< T, 4, 4 >::row_type | operator/ (const typename Matrix< T, 4, 4 >::column_type &v, const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | operator/ (const Matrix< T, 4, 4 > &m1, const Matrix< T, 4, 4 > &m2) |
| |
| template<> |
| constexpr Matrix4x4 | identity< Matrix4x4 > () |
| |
| template<std::floating_point T> |
| Matrix< T, 4, 4 > | look_at (const Vector< T, 3 > &eye, const Vector< T, 3 > ¢er, const Vector< T, 3 > &up) |
| |
| template<std::floating_point T, AngularUnitTraits Units> |
| Matrix< T, 4, 4 > | perspective (Angle< T, Units > vertical_field_of_view, T aspect, T z_near, T z_far) |
| |
| template<std::floating_point T> |
| Matrix< T, 4, 4 > | ortho (T left, T right, T bottom, T top, T z_near, T z_far) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | scale (const Matrix< T, 4, 4 > &m, const Vector< T, 3 > &v) |
| |
| template<std::floating_point T, AngularUnitTraits Units> |
| Matrix< T, 4, 4 > | rotate (const Matrix< T, 4, 4 > &m, Angle< T, Units > angle, Vector< T, 3 > axis) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | translate (const Matrix< T, 4, 4 > &m, const Vector< T, 3 > &v) |
| |
| template<std::floating_point T> |
| T | determinant_of (const Matrix< T, 3, 3 > &m) |
| |
| template<std::floating_point T> |
| T | determinant_of (const Matrix< T, 4, 4 > &m) |
| |
| template<std::floating_point T> |
| T | inverse (const Matrix< T, 3, 3 > &m) |
| |
| template<std::floating_point T> |
| Matrix< T, 4, 4 > | inverse (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| constexpr Matrix< T, 3, 3 > | transpose (const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Matrix< T, 4, 4 > | transpose (const Matrix< T, 4, 4 > &m) |
| |
| template<std::floating_point T> |
| Vector< RadiansT< T >, 3 > | extract_eulers_xyz (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| bool | decompose (const Matrix< T, 4, 4 > &model_matrix, Vector< T, 3 > &r_scale, Qua< T > &r_orientation, Vector< T, 3 > &r_translation, Vector< T, 3 > &r_skew, Vector< T, 4 > &r_perspective) |
| |
| template<std::floating_point T> |
| constexpr Matrix< T, 3, 3 > | adjugate (const Matrix< T, 3, 3 > &m) |
| |
| template<std::floating_point T> |
| Matrix< T, 3, 3 > | normal_matrix (const Matrix< T, 4, 4 > &m) |
| |
| template<std::floating_point T> |
| Matrix< T, 4, 4 > | normal_matrix4x4 (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T , size_t C, size_t R> |
| constexpr const T * | value_ptr (const Matrix< T, C, R > &m) |
| |
| template<typename T , size_t C, size_t R> |
| constexpr T * | value_ptr (Matrix< T, C, R > &m) |
| |
| template<std::floating_point T> |
| std::ostream & | operator<< (std::ostream &out, const Normalized< T > &normalized_value) |
| |
| std::ostream & | operator<< (std::ostream &, const Plane &) |
| |
| constexpr AnalyticPlane | to_analytic_plane (const Vector3 &point, const Vector3 &normal) |
| |
| constexpr AnalyticPlane | to_analytic_plane (const Plane &plane) |
| |
| constexpr float | signed_distance_between (const AnalyticPlane &plane, const Vector3 &vector) |
| |
| constexpr float | signed_distance_between (const Plane &plane, const Vector3 &vector) |
| |
| bool | is_in_front_of (const AnalyticPlane &plane, const AABB &aabb) |
| |
| bool | is_in_front_of (const Plane &plane, const AABB &aabb) |
| |
| PolarPerspectiveCamera | create_camera_with_radius (float) |
| |
| PolarPerspectiveCamera | create_camera_focused_on (const AABB &) |
| |
| Vector3 | recommended_light_direction (const PolarPerspectiveCamera &) |
| |
| void | focus_along_axis (PolarPerspectiveCamera &, size_t, bool negate=false) |
| |
| void | focus_along_x (PolarPerspectiveCamera &) |
| |
| void | focus_along_minus_x (PolarPerspectiveCamera &) |
| |
| void | focus_along_y (PolarPerspectiveCamera &) |
| |
| void | focus_along_minus_y (PolarPerspectiveCamera &) |
| |
| void | focus_along_z (PolarPerspectiveCamera &) |
| |
| void | focus_along_minus_z (PolarPerspectiveCamera &) |
| |
| void | zoom_in (PolarPerspectiveCamera &) |
| |
| void | zoom_out (PolarPerspectiveCamera &) |
| |
| void | reset (PolarPerspectiveCamera &) |
| |
| void | auto_focus (PolarPerspectiveCamera &, const AABB &element_aabb, float aspect_ratio=1.0f) |
| |
| template<typename T > |
| constexpr Qua< T > | operator+ (const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Qua< T > | operator- (const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Qua< T > | operator+ (const Qua< T > &q, const Qua< T > &p) |
| |
| template<typename T > |
| constexpr Qua< T > | operator- (const Qua< T > &q, const Qua< T > &p) |
| |
| template<typename T > |
| constexpr Qua< T > | operator* (const Qua< T > &q, const Qua< T > &p) |
| |
| template<typename T > |
| constexpr Vector< T, 3 > | operator* (const Qua< T > &q, const Vector< T, 3 > &v) |
| |
| template<typename T > |
| constexpr Vector< T, 3 > | operator* (const Vector< T, 3 > &v, const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Vector< T, 4 > | operator* (const Qua< T > &q, const Vector< T, 4 > &v) |
| |
| template<typename T > |
| constexpr Vector< T, 4 > | operator* (const Vector< T, 4 > &v, const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Qua< T > | operator* (const Qua< T > &q, const T &s) |
| |
| template<typename T > |
| constexpr Qua< T > | operator* (const T &s, const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Qua< T > | operator/ (const Qua< T > &q, const T &s) |
| |
| template<typename T > |
| std::ostream & | operator<< (std::ostream &o, const Qua< T > &v) |
| |
| template<typename T > |
| std::string | to_string (const Qua< T > &v) |
| |
| template<size_t I, typename T > |
| constexpr const T & | get (const Qua< T > &v) |
| |
| template<size_t I, typename T > |
| constexpr T & | get (Qua< T > &v) |
| |
| template<size_t I, typename T > |
| constexpr T && | get (Qua< T > &&v) |
| |
| template<size_t I, typename T > |
| constexpr const T && | get (const Qua< T > &&v) |
| |
| template<> |
| constexpr Quaternion | identity< Quaternion > () |
| |
| template<std::floating_point T> |
| Vector< bool, 4 > | isnan (const Qua< T > &q) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr Qua< T > | conjugate (const Qua< T > &q) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr T | dot (const Qua< T > &a, const Qua< T > &b) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr Qua< T > | inverse (const Qua< T > &q) |
| |
| template<typename T > |
| T | length (const Qua< T > &q) |
| |
| template<std::floating_point T> |
| Qua< T > | normalize (const Qua< T > &q) |
| |
| template<typename T > |
| Qua< T > | quaternion_cast (const Matrix< T, 3, 3 > &m) |
| |
| template<typename T > |
| Qua< T > | quaternion_cast (const Matrix< T, 4, 4 > &m) |
| |
| template<typename T > |
| constexpr Matrix< T, 3, 3 > | matrix3x3_cast (const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Matrix< T, 4, 4 > | matrix4x4_cast (const Qua< T > &q) |
| |
| template<typename T > |
| constexpr Qua< T > | quaternion_identity () |
| |
| template<std::floating_point T, AngularUnitTraits Units, std::convertible_to< const Vector< T, 3 > & > VectorLike> |
| Qua< T > | angle_axis (Angle< T, Units > angle, VectorLike &&axis) |
| |
| template<std::floating_point T, AngularUnitTraits Units> |
| Qua< T > | angle_axis (Angle< T, Units > angle, CoordinateDirection direction) |
| |
| template<typename T > |
| Qua< T > | rotation (const Vector< T, 3 > &origin, const Vector< T, 3 > &destination) |
| |
| template<typename T > |
| RadiansT< T > | pitch (const Qua< T > &q) |
| |
| template<typename T > |
| RadiansT< T > | yaw (const Qua< T > &q) |
| |
| template<typename T > |
| RadiansT< T > | roll (const Qua< T > &q) |
| |
| template<typename T > |
| Vector< RadiansT< T >, 3 > | to_euler_angles (const Qua< T > &x) |
| |
| std::ostream & | operator<< (std::ostream &, const Ray &) |
| |
| std::ostream & | operator<< (std::ostream &, const Rect &) |
| |
| float | aspect_ratio_of (const Rect &rect) |
| |
| constexpr Rect | bounding_rect_of (const Vector2 &x) |
| |
| Rect | bounding_rect_of (const Rect &x, const Vector2 &y) |
| |
| Rect | bounding_rect_of (const Rect &x, const Rect &y) |
| |
template<std::ranges::input_range R, typename Proj = std::identity>
requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>, Proj>::value_type, const Vector2&> |
| constexpr Rect | bounding_rect_of (R &&r, Proj proj={}) |
| |
| Rect | bounding_rect_of (const Circle &circle) |
| |
| Rect | clamp (const Rect &, const Vector2 &min, const Vector2 &max) |
| |
| std::ostream & | operator<< (std::ostream &, const Sphere &) |
| |
| constexpr Vector3 | operator* (const Transform &transform, Vector3 point) |
| |
| template<> |
| constexpr Transform | identity< Transform > () |
| |
| std::ostream & | operator<< (std::ostream &out, const Transform &transform) |
| |
| constexpr Matrix3x3 | matrix3x3_cast (const Transform &transform) |
| |
| constexpr Matrix4x4 | matrix4x4_cast (const Transform &transform) |
| |
| Matrix4x4 | inverse_matrix4x4_cast (const Transform &transform) |
| |
| constexpr Matrix3x3 | normal_matrix (const Transform &transform) |
| |
| constexpr Matrix4x4 | normal_matrix_4x4 (const Transform &transform) |
| |
| bool | try_decompose_to_transform (const Matrix4x4 &m, Transform &out) |
| |
| Transform | decompose_to_transform (const Matrix4x4 &m) |
| |
| Vector3 | transform_vector (const Transform &transform, const Vector3 &vector) |
| |
| Vector3 | inverse_transform_vector (const Transform &transform, const Vector3 &vector) |
| |
| constexpr Vector3 | transform_point (const Transform &transform, const Vector3 &point) |
| |
| constexpr Vector3 | inverse_transform_point (const Transform &transform, Vector3 point) |
| |
| EulerAngles | extract_eulers_xyz (const Transform &transform) |
| |
| EulerAngles | extract_extrinsic_eulers_xyz (const Transform &transform) |
| |
| Transform | point_axis_along (const Transform &transform, Vector3::size_type axis_index, const Vector3 &new_direction) |
| |
| Transform | point_axis_towards (const Transform &transform, Vector3::size_type axis_index, const Vector3 &position) |
| |
| Transform | rotate_axis (const Transform &transform, Vector3::size_type axis_index, Radians angle) |
| |
| bool | any_element_is_nan (const Transform &transform) |
| |
template<typename T >
requires std::is_arithmetic_v<T> |
| constexpr bool | can_form_triangle (const Vector< T, 3 > &a, const Vector< T, 3 > &b, const Vector< T, 3 > &c) |
| |
| template<std::floating_point T> |
| Vector< T, 3 > | triangle_normal (const Vector< T, 3 > &a, const Vector< T, 3 > &b, const Vector< T, 3 > &c) |
| |
| Vector< float, 3 > | triangle_normal (const Triangle &t) |
| |
| template<std::floating_point GenType> |
| GenType | sin (GenType v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units> |
| Rep | sin (Angle< Rep, Units > v) |
| |
| template<std::floating_point T, size_t N> |
| Vector< T, N > | sin (const Vector< T, N > &v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units, size_t N> |
| Vector< Rep, N > | sin (const Vector< Angle< Rep, Units >, N > &v) |
| |
| template<std::floating_point GenType> |
| GenType | cos (GenType v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units> |
| Rep | cos (Angle< Rep, Units > v) |
| |
| template<std::floating_point T, size_t N> |
| Vector< T, N > | cos (const Vector< T, N > &v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units, size_t N> |
| Vector< Rep, N > | cos (const Vector< Angle< Rep, Units >, N > &v) |
| |
| template<std::floating_point GenType> |
| GenType | tan (GenType v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units> |
| Rep | tan (Angle< Rep, Units > v) |
| |
| template<std::floating_point T, size_t N> |
| Vector< T, N > | tan (const Vector< T, N > &v) |
| |
| template<std::floating_point Rep, AngularUnitTraits Units, size_t N> |
| Vector< Rep, N > | tan (const Vector< Angle< Rep, Units >, N > &v) |
| |
| template<std::floating_point Rep> |
| RadiansT< Rep > | atan (Rep v) |
| |
| template<std::floating_point Rep> |
| RadiansT< Rep > | acos (Rep num) |
| |
| template<std::floating_point Rep> |
| RadiansT< Rep > | asin (Rep num) |
| |
| template<std::floating_point Rep> |
| RadiansT< Rep > | atan2 (Rep x, Rep y) |
| |
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { +v[0]; }) |
| constexpr auto | operator+ (const Vector< T, N > &vec) |
| |
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { -v[0]; }) |
| constexpr auto | operator- (const Vector< T, N > &vec) |
| |
template<typename T , size_t N>
requires (requires (const Vector<T, N>& v) { !v[0]; }) |
| constexpr auto | operator! (const Vector< T, N > &vec) |
| |
template<typename T , size_t N, typename U >
requires ( requires (const Vector<T, N>& v, const U& rhs) { v[0] + rhs; } ) |
| constexpr auto | operator+ (const Vector< T, N > &lhs, const U &rhs) |
| |
template<typename T , typename U , size_t N>
requires ( requires (const T& lhs, const Vector<U, N>& rhs) { lhs + rhs[0]; } ) |
| constexpr auto | operator+ (const T &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] + rhs[0]; }) |
| constexpr auto | operator+ (const Vector< T, N > &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] - rhs; }) |
| constexpr auto | operator- (const Vector< T, N > &lhs, const U &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { lhs - rhs[0]; }) |
| constexpr auto | operator- (const T &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] - rhs[0]; }) |
| constexpr auto | operator- (const Vector< T, N > &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] * rhs; }) |
| constexpr auto | operator* (const Vector< T, N > &lhs, const U &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { U(lhs * rhs[0]); }) |
| constexpr auto | operator* (const T &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] * rhs[0]; }) |
| constexpr auto | operator* (const Vector< T, N > &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , size_t N, typename U >
requires (requires (const Vector<T, N>& v, const U& rhs) { v[0] / rhs; }) |
| constexpr auto | operator/ (const Vector< T, N > &lhs, const U &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const T& lhs, const Vector<U, N>& rhs) { lhs / rhs[0]; }) |
| constexpr auto | operator/ (const T &lhs, const Vector< U, N > &rhs) |
| |
template<typename T , typename U , size_t N>
requires (requires (const Vector<T, N>& lhs, const Vector<U, N>& rhs) { lhs[0] / rhs[0]; }) |
| constexpr auto | operator/ (const Vector< T, N > &lhs, const Vector< U, N > &rhs) |
| |
| template<detail::OutputStreamable T, size_t N> |
| std::ostream & | operator<< (std::ostream &out, const Vector< T, N > &v) |
| |
| template<size_t I, typename T , size_t N> |
| constexpr const T & | get (const Vector< T, N > &v) |
| |
| template<size_t I, typename T , size_t N> |
| constexpr T & | get (Vector< T, N > &v) |
| |
| template<size_t I, typename T , size_t N> |
| constexpr T && | get (Vector< T, N > &&v) |
| |
| template<size_t I, typename T , size_t N> |
| constexpr const T && | get (const Vector< T, N > &&v) |
| |
| template<Scalar T, size_t N> |
| constexpr const T * | value_ptr (const Vector< T, N > &vec) |
| |
| template<Scalar T, size_t N> |
| constexpr T * | value_ptr (Vector< T, N > &vec) |
| |
| constexpr KeyCombination | operator| (KeyModifiers modifiers, Key key) |
| |
| constexpr KeyModifiers | operator| (KeyModifier lhs, KeyModifier rhs) |
| |
| std::shared_ptr< Logger > | global_default_logger () |
| |
| Logger * | global_default_logger_raw () |
| |
| LogLevel | log_level () |
| |
| template<typename... Args> |
| void | log_message (LogLevel level, CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_trace (CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_debug (CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_info (CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_warn (CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_error (CStringView fmt, const Args &... args) |
| |
| template<typename... Args> |
| void | log_critical (CStringView fmt, const Args &... args) |
| |
| LogLevel | global_get_traceback_level () |
| |
| void | global_set_traceback_level (LogLevel) |
| |
| SynchronizedValue< CircularBuffer< LogMessage, detail::c_max_log_traceback_messages > > & | global_get_traceback_log () |
| |
| CStringView | to_cstringview (LogLevel) |
| |
| std::optional< LogLevel > | try_parse_as_log_level (std::string_view) |
| |
| std::ostream & | operator<< (std::ostream &, LogLevel) |
| |
| std::tm | system_calendar_time () |
| |
| std::filesystem::path | current_executable_directory () |
| |
| std::filesystem::path | user_data_directory (std::string_view organization_name, std::string_view application_name) |
| |
| void | open_file_in_os_default_application (const std::filesystem::path &) |
| |
| void | open_url_in_os_default_web_browser (std::string_view) |
| |
| std::string | get_clipboard_text () |
| |
| bool | set_clipboard_text (std::string_view) |
| |
| std::pair< std::fstream, std::filesystem::path > | mkstemp (std::string_view suffix={}, std::string_view prefix={}) |
| |
| std::filesystem::path | mkdtemp (std::string_view suffix={}, std::string_view prefix={}) |
| |
| std::ostream & | operator<< (std::ostream &, const ResourceDirectoryEntry &) |
| |
template<std::derived_from< VirtualFilesystem > TResourceLoader, typename... Args>
requires std::constructible_from<TResourceLoader, Args&&...> |
| ResourceLoader | make_resource_loader (Args &&... args) |
| |
| constexpr ToggleablePanelFlags | operator- (ToggleablePanelFlags lhs, ToggleablePanelFlags rhs) |
| |
| constexpr bool | operator& (ToggleablePanelFlags lhs, ToggleablePanelFlags rhs) |
| |
| template<class T , class Proj = std::identity, std::indirect_strict_weak_order< std::projected< const T *, Proj > > Comp = std::ranges::less> |
| constexpr const T & | max (const T &a, const T &b, Comp comp={}, Proj proj={}) |
| |
| template<class T , class Proj = std::identity, std::indirect_strict_weak_order< std::projected< const T *, Proj > > Comp = std::ranges::less> |
| constexpr const T & | min (const T &a, const T &b, Comp comp={}, Proj proj={}) |
| |
| template<class T , class Proj = std::identity, std::indirect_strict_weak_order< std::projected< const T *, Proj > > Comp = std::ranges::less> |
| constexpr const T & | clamp (const T &v, const T &lo, const T &hi, Comp comp={}, Proj proj={}) |
| |
| template<std::ranges::random_access_range R, class Proj = std::identity, std::indirect_strict_weak_order< std::projected< std::ranges::iterator_t< R >, Proj > > Comp = std::ranges::less> |
| constexpr std::ranges::range_size_t< R > | max_element_index (R &&r, Comp comp={}, Proj proj={}) |
| |
template<std::ranges::random_access_range R>
requires std::ranges::borrowed_range<R> |
| constexpr std::ranges::range_reference_t< R > | at (R &&r, std::ranges::range_size_t< R > pos) |
| |
template<std::ranges::input_range R, typename T , typename Proj = std::identity>
requires std::indirect_binary_predicate<std::ranges::equal_to, std::projected<std::ranges::iterator_t<R>, Proj>, const T*> |
| std::optional< std::ranges::range_value_t< R > > | find_or_nullopt (R &&r, const T &value, Proj proj={}) |
| |
| template<AssociativeContainer Lookup, AssociativeContainerKeyFor< Lookup > Key> |
| std::optional< typename Lookup::mapped_type > | lookup_or_nullopt (const Lookup &lookup, const Key &key) |
| |
template<std::ranges::input_range R, typename T , typename Proj = std::identity>
requires std::ranges::borrowed_range<R> |
| auto | find_or_nullptr (R &&r, const T &value, Proj proj={}) -> decltype(std::addressof(*std::ranges::begin(r))) |
| |
| template<AssociativeContainer T, AssociativeContainerKeyFor< T > Key> |
| auto * | lookup_or_nullptr (const T &container, const Key &key) |
| |
| template<AssociativeContainer T, AssociativeContainerKeyFor< T > Key> |
| auto * | lookup_or_nullptr (T &container, const Key &key) |
| |
template<typename Downcasted , typename T1 , typename T2 >
requires std::equality_comparable<Downcasted> |
| and std::is_polymorphic_v< Downcasted > and std::derived_from< Downcasted, T1 > and std::derived_from< Downcasted, T2 > constexpr bool | is_eq_downcasted (const T1 &lhs, const T2 &rhs) |
| |
| constexpr void | append_range (R1 &r1, R2 &&r2) |
| |
| template<std::unsigned_integral T> |
| constexpr T | swap_single_bit (T value, int bit_index0, int bit_index1) |
| |
| bool * | cast_to_bool_ptr (BoolLike *bool_like) |
| |
| const bool * | cast_to_bool_ptr (const BoolLike *bool_like) |
| |
| std::string | to_string (const CStringView &cstring_view) |
| |
| std::ostream & | operator<< (std::ostream &, const CStringView &) |
| |
| std::string | operator+ (const char *, const CStringView &) |
| |
| std::string | operator+ (const std::string &, const CStringView &) |
| |
template<typename Rep , typename Period , typename Arithmetic >
requires std::is_arithmetic_v<Rep> |
| and std::is_arithmetic_v< Arithmetic > constexpr std::chrono::duration< Rep, Period > | lerp (const std::chrono::duration< Rep, Period > &a, const std::chrono::duration< Rep, Period > &b, const Arithmetic &t) |
| |
template<typename Clock , typename Duration , typename Arithmetic >
requires std::is_arithmetic_v<Arithmetic> |
| constexpr std::chrono::time_point< Clock, Duration > | lerp (const std::chrono::time_point< Clock, Duration > &a, const std::chrono::time_point< Clock, Duration > &b, const Arithmetic &t) |
| |
template<typename T , typename... Args>
requires std::constructible_from<T, Args&&...> |
| ClonePtr< T > | make_cloneable (Args &&... args) |
| |
template<typename U , typename T >
requires detail::HasConverter<std::remove_cvref_t<T>, U> |
| constexpr U | to (T &&value) |
| |
| template<typename T , typename... Args> |
| CopyOnUpdPtr< T > | make_cow (Args &&... args) |
| |
| template<typename U , typename... Args> |
| CopyOnUpdSharedValue< U > | make_cowv (Args &&... args) |
| |
| template<DenselyPackedOptionsEnum TEnum> |
| constexpr size_t | num_options () |
| |
| template<DenselyPackedOptionsEnum TEnum> |
| constexpr size_t | to_index (TEnum v) |
| |
| template<DenselyPackedOptionsEnum TEnum> |
| constexpr std::optional< TEnum > | from_index (size_t pos) |
| |
| template<DenselyPackedOptionsEnum TEnum, typename Proj = std::identity> |
| constexpr DenselyPackedOptionsIterable< TEnum, Proj > | make_option_iterable (Proj &&proj={}) |
| |
| template<FlagsEnum TEnum> |
| constexpr size_t | num_flags () |
| |
| std::string | potentially_nested_exception_to_string (const std::exception &, int indent=0) |
| |
| template<size_t N> |
| consteval std::string_view | extract_filename (const char(&p)[N]) |
| |
| void | for_each_file_with_extensions_recursive (const std::filesystem::path &root, const std::function< void(std::filesystem::path)> &consumer, std::span< const std::string_view > extensions) |
| |
| std::vector< std::filesystem::path > | find_files_with_extensions_recursive (const std::filesystem::path &root, std::span< const std::string_view > extensions) |
| |
| void | for_each_file_recursive (const std::filesystem::path &root, const std::function< void(std::filesystem::path)> &consumer) |
| |
| std::vector< std::filesystem::path > | find_files_recursive (const std::filesystem::path &root) |
| |
| bool | is_filename_lexicographically_greater_than (const std::filesystem::path &p1, const std::filesystem::path &p2) |
| |
| bool | is_subpath (const std::filesystem::path &dir, const std::filesystem::path &path) |
| |
template<class TEnum >
requires std::is_enum_v<TEnum> |
| constexpr auto | to_underlying (const Flags< TEnum > &e) noexcept |
| |
| template<Hashable T> |
| size_t | hash_combine (size_t seed, const T &v) noexcept(noexcept(std::hash< T >{}(v))) |
| |
| template<Hashable T> |
| size_t | hash_of (const T &v) noexcept(noexcept(std::hash< T >{}(v))) |
| |
| template<Hashable T, Hashable... Ts> |
| size_t | hash_of (const T &v, const Ts &... vs) |
| |
| template<typename Range > |
| size_t | hash_range (const Range &range) noexcept(noexcept(hash_combine(0, *std::ranges::begin(range)))) |
| |
| template<typename T , typename U > |
| bool | operator== (const LifetimedPtr< T > &lhs, const LifetimedPtr< U > &rhs) |
| |
| template<typename T > |
| bool | operator== (const LifetimedPtr< T > &lhs, std::nullptr_t) |
| |
| template<ObjectRepresentationByte Byte = std::byte, BitCastable T> |
| constexpr std::span< const Byte, sizeof(T)> | view_object_representation (const T &v) |
| |
template<ObjectRepresentationByte Byte = std::byte, std::ranges::contiguous_range Range>
requires BitCastable<typename Range::value_type> |
| constexpr std::span< const Byte > | view_object_representations (const Range &range) |
| |
| template<typename T , std::invocable< T & > UnaryFunction> |
| void | for_each_parallel_unsequenced (size_t min_chunk_size, std::span< T > values, UnaryFunction mutator) |
| |
| void | clear_all_perf_measurements () |
| |
| std::vector< PerfMeasurement > | get_all_perf_measurements () |
| |
| template<typename EF > |
| | ScopeExit (EF) -> ScopeExit< EF > |
| |
| template<typename T > |
| std::pair< SpscSender< T >, SpscReceiver< T > > | make_spsc_channel () |
| |
| template<typename Variant , typename T > |
| constexpr size_t | variant_index () |
| |
| template<typename... Ts> |
| | Overload (Ts...) -> Overload< Ts... > |
| |
| bool | contains_case_insensitive (std::string_view sv, std::string_view substr) |
| |
| bool | is_string_case_insensitive_greater_than (std::string_view a, std::string_view b) |
| |
| bool | is_equal_case_insensitive (std::string_view a, std::string_view b) |
| |
| bool | is_valid_identifier (std::string_view sv) |
| |
| std::string_view | strip_whitespace (std::string_view sv) |
| |
| std::optional< float > | from_chars_strip_whitespace (std::string_view sv) |
| |
| std::string | truncate_with_ellipsis (std::string_view sv, size_t max_length) |
| |
| std::string_view | substring_after_last (std::string_view sv, std::string_view::value_type delimiter) |
| |
| std::optional< std::pair< std::string_view, std::string_view > > | rsplit_once (std::string_view sv, std::string_view::value_type delimiter) |
| |
| std::pair< char, char > | to_hex_chars (uint8_t) |
| |
| std::optional< uint8_t > | try_parse_hex_chars_as_byte (char, char) |
| |
| template<OutputStreamable T> |
| std::string | stream_to_string (const T &v) |
| |
template<std::ranges::input_range R>
requires OutputStreamable<std::ranges::range_value_t<R>> |
| std::string | join (R &&r, std::string_view delimiter) |
| |
| std::string | replace (std::string_view str, std::string_view from, std::string_view to) |
| |
| std::ostream & | operator<< (std::ostream &, const UID &) |
| |
| bool | operator== (const Variant &, const Variant &) |
| |
| void | swap (Variant &, Variant &) noexcept |
| |
| std::ostream & | operator<< (std::ostream &, const Variant &) |
| |
| std::ostream & | operator<< (std::ostream &, VariantType) |
| |