5#ifndef __UTIL_MATH_FLOAT2_H__
6#define __UTIL_MATH_FLOAT2_H__
9# error "Do not include this file directly, include util/types.h instead."
24#if !defined(__KERNEL_METAL__)
52 float invf = 1.0f / f;
103 float invf = 1.0f / f;
109 return (a.x ==
b.x && a.y ==
b.y);
119 return (a.x == 0.0f && a.y == 0.0f);
124 return a.
x *
b.x + a.y *
b.y;
130 return (a.x + a.y) * (1.0f / 2.0f);
135#if defined(__KERNEL_METAL__)
149 return min(a.x, a.y);
154 return max(a.x, a.y);
170 return (t != 0.0f) ? a / t : a;
173#if !defined(__KERNEL_METAL__)
181 return (a.x *
b.y - a.y *
b.x);
207 return min(
max(a, mn), mx);
227 return a + t * (
b - a);
232 return a + t * (
b - a);
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
local_group_size(16, 16) .push_constant(Type b
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline float2 as_float2(const float4 &a)
ccl_device_inline float2 operator*(const float2 a, const float2 b)
ccl_device_inline float2 operator-(const float2 &a)
ccl_device_inline float distance(const float2 a, const float2 b)
ccl_device_inline float2 fmod(const float2 a, const float b)
ccl_device_inline float2 one_float2()
CCL_NAMESPACE_BEGIN ccl_device_inline float2 zero_float2()
ccl_device_inline float2 floor(const float2 a)
ccl_device_inline float len_squared(const float2 a)
ccl_device_inline bool is_zero(const float2 a)
ccl_device_inline bool operator!=(const float2 a, const float2 b)
ccl_device_inline float average(const float2 a)
ccl_device_inline float reduce_max(const float2 a)
ccl_device_inline float reduce_add(const float2 a)
ccl_device_inline float dot(const float2 a, const float2 b)
ccl_device_inline float2 safe_normalize(const float2 a)
ccl_device_inline float2 normalize_len(const float2 a, ccl_private float *t)
ccl_device_inline float2 operator/=(float2 &a, const float2 b)
ccl_device_inline float cross(const float2 a, const float2 b)
ccl_device_inline float2 operator/(float f, const float2 a)
ccl_device_inline float reduce_min(const float2 a)
ccl_device_inline float2 power(float2 v, float e)
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline float2 clamp(const float2 a, const float2 mn, const float2 mx)
ccl_device_inline float2 operator+=(float2 &a, const float2 b)
ccl_device_inline bool isequal(const float2 a, const float2 b)
ccl_device_inline bool operator==(const float2 a, const float2 b)
ccl_device_inline float2 operator+(const float2 a, const float2 b)
ccl_device_inline float2 safe_divide_float2_float(const float2 a, const float b)
ccl_device_inline float2 operator*=(float2 &a, const float2 b)
ccl_device_inline float2 interp(const float2 a, const float2 b, float t)