28#if !defined(__KERNEL_METAL__)
56 const float invf = 1.0f / f;
107 const float invf = 1.0f / f;
113 return (a.
x ==
b.x && a.
y ==
b.y);
128 return (a.
x == 0.0f && a.
y == 0.0f);
133 return a.
x *
b.x + a.
y *
b.y;
139 return (a.
x + a.
y) * (1.0f / 2.0f);
144#if defined(__KERNEL_METAL__)
151template<
class MaskType>
170 return min(a.
x, a.
y);
175 return max(a.
x, a.
y);
190 const float t =
len(a);
191 return (t != 0.0f) ? a / t : a;
194#if !defined(__KERNEL_METAL__)
202 return (a.
x *
b.y - a.
y *
b.x);
228 return min(
max(a, mn), mx);
248 return a + t * (
b - a);
253 return a + t * (
b - a);
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define ccl_device_inline
#define ccl_device_template_spec
#define CCL_NAMESPACE_END
VecBase< float, D > normalize(VecOp< float, D >) RET
bool all(VecOp< bool, D >) RET
VecBase< float, 3 > cross(VecOp< float, 3 >, VecOp< float, 3 >) RET
ccl_device_inline float2 as_float2(const float4 &a)
ccl_device_inline float2 power(const float2 v, const float e)
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 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_template_spec float2 make_zero()
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 float2 operator/(float f, const float2 a)
ccl_device_inline float reduce_min(const float2 a)
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 mask(const MaskType mask, const float2 a)
ccl_device_inline int2 operator>=(const float2 a, const float2 b)
ccl_device_inline float2 interp(const float2 a, const float2 b, const float t)
ccl_device_inline float2 safe_divide_float2_float(const float2 a, const float b)
ccl_device_inline float2 operator*=(float2 &a, const float2 b)