static inline uint packUnorm2x16(const float2& v) { uint x = (uint)round(clamp(v.getX(), 0, 1) * 65535.0f); uint y = (uint)round(clamp(v.getY(), 0, 1) * 65535.0f); return ((uint)0x0000FFFF & x) | ((y << 16) & (uint)0xFFFF0000); }
static inline float2 sumPerElem(const float2 &v, const float2& w) { return float2(v.getX() + w.getX(), v.getY() + w.getY()); }
static inline float2 mulPerElem(const float2 &v, float f) { return float2(v.getX()*f, v.getY()*f); }
static inline float2 step(const float2& y, const float2& x) { return float2(x.getX() >= y.getX() ? 1.f : 0.f, x.getY() >= y.getY() ? 1.f : 0.f); }
static inline float2 subtract(const float2& v, const float2& w) { return float2(v.getX() - w.getX(), v.getY() - w.getY()); }
static inline float2 abs(const float2& v) { return float2(fabsf(v.getX()), fabsf(v.getY())); }