remove glm swizzling for better debugability
This commit is contained in:
@@ -11,12 +11,12 @@ bool point_in_rect(const glm::vec2& p, const glm::vec4& r)
|
||||
glm::vec4 rect_intersection(glm::vec4 a, glm::vec4 b)
|
||||
{
|
||||
// convert from [x,y,w,h] to [x1,y1,x2,y1]
|
||||
a = glm::vec4(a.xy(), a.xy() + a.zw());
|
||||
b = glm::vec4(b.xy(), b.xy() + b.zw());
|
||||
a = glm::vec4(xy(a), xy(a) + zw(a));
|
||||
b = glm::vec4(xy(b), xy(b) + zw(b));
|
||||
// compute intersection
|
||||
auto o = glm::vec4(glm::max(a.xy(), b.xy()), glm::min(a.zw(), b.zw()));
|
||||
auto o = glm::vec4(glm::max(xy(a), xy(b)), glm::min(zw(a), zw(b)));
|
||||
// back to rect form
|
||||
o = glm::vec4(o.xy(), glm::max({ 0, 0 }, o.zw() - o.xy()));
|
||||
o = glm::vec4(xy(o), glm::max({ 0, 0 }, zw(o) - xy(o)));
|
||||
return o;
|
||||
}
|
||||
|
||||
@@ -24,12 +24,12 @@ glm::vec4 rect_intersection(glm::vec4 a, glm::vec4 b)
|
||||
glm::vec4 rect_union(glm::vec4 a, glm::vec4 b)
|
||||
{
|
||||
// convert from rect [x,y,w,h] to bb [x1,y1,x2,y1]
|
||||
a = glm::vec4(a.xy(), a.xy() + a.zw());
|
||||
b = glm::vec4(b.xy(), b.xy() + b.zw());
|
||||
a = glm::vec4(xy(a), xy(a) + zw(a));
|
||||
b = glm::vec4(xy(b), xy(b) + zw(b));
|
||||
// compute union
|
||||
glm::vec4 o = { glm::min(a.xy(), b.xy()), glm::max(a.zw(), b.zw()) };
|
||||
glm::vec4 o = { glm::min(xy(a), xy(b)), glm::max(zw(a), zw(b)) };
|
||||
// back to rect form
|
||||
o = glm::vec4(o.xy(), glm::max({ 0, 0 }, o.zw() - o.xy()));
|
||||
o = glm::vec4(xy(o), glm::max({ 0, 0 }, zw(o) - xy(o)));
|
||||
return o;
|
||||
}
|
||||
|
||||
@@ -47,8 +47,8 @@ bool segments_intersect(const glm::vec2& p0a, const glm::vec2& p0b,
|
||||
if (den == 0.f)
|
||||
{
|
||||
glm::vec4 is = rect_intersection({p, r}, {q, s});
|
||||
out_pt = is.xy + is.zw * 0.5f;
|
||||
return glm::all(glm::greaterThan(is.zw(), glm::vec2(0, 0)));
|
||||
out_pt = xy(is) + zw(is) * 0.5f;
|
||||
return glm::all(glm::greaterThan(zw(is), glm::vec2(0, 0)));
|
||||
}
|
||||
float t = cross2d(q - p, s) / den;
|
||||
float u = cross2d(q - p, r) / den;
|
||||
@@ -71,9 +71,9 @@ glm::vec4 rand_color()
|
||||
glm::vec3 convert_hsv2rgb(const glm::vec3 c)
|
||||
{
|
||||
glm::vec4 K = glm::vec4(1.0f, 2.0f / 3.0f, 1.0f / 3.0f, 3.0f);
|
||||
glm::vec3 p = glm::abs(glm::fract(glm::vec3(c.xxx + K.xyz)) * 6.0f - K.www);
|
||||
auto tmp = glm::clamp(glm::vec3(p - K.xxx), 0.0f, 1.0f);
|
||||
return c.z * glm::mix(glm::vec3(K.xxx), tmp, c.y);
|
||||
glm::vec3 p = glm::abs(glm::fract(glm::vec3(c.x) + xyz(K)) * 6.0f - glm::vec3(K.w));
|
||||
auto tmp = glm::clamp(p - glm::vec3(K.x), 0.0f, 1.0f);
|
||||
return c.z * glm::mix(glm::vec3(K.x), tmp, c.y);
|
||||
}
|
||||
|
||||
glm::vec3 convert_rgb2hsv(const glm::vec3 c)
|
||||
@@ -81,8 +81,8 @@ glm::vec3 convert_rgb2hsv(const glm::vec3 c)
|
||||
glm::vec4 K = glm::vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
//glm::vec4 p = mix(glm::vec4(c.bg, K.wz), glm::vec4(c.gb, K.xy), glm::step(c.b, c.g));
|
||||
//glm::vec4 q = mix(glm::vec4(p.xyw, c.r), glm::vec4(c.r, p.yzx), glm::step(p.x, c.r));
|
||||
glm::vec4 p = c.g < c.b ? glm::vec4(c.bg, K.wz) : glm::vec4(c.gb, K.xy);
|
||||
glm::vec4 q = c.r < p.x ? glm::vec4(p.xyw, c.r) : glm::vec4(c.r, p.yzx);
|
||||
glm::vec4 p = c.g < c.b ? glm::vec4(c.b, c.g, K.w, K.z) : glm::vec4(c.g, c.b, K.x, K.y);
|
||||
glm::vec4 q = c.r < p.x ? glm::vec4(p.x, p.y, p.w, c.r) : glm::vec4(c.r, p.y, p.z, p.x);
|
||||
float d = q.x - glm::min(q.w, q.y);
|
||||
float e = 1.0e-10f;
|
||||
return glm::vec3(fabs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||
|
||||
Reference in New Issue
Block a user