{
float3 a = tri_a + tri_n_a;
float3 b = tri_b + tri_n_b;
float3 c = tri_c + tri_n_c;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, tri_a, tri_b, tri_c);
}
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
tri_a,
tri_b,
tri_c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, tri_a + tri_n_a, tri_b + tri_n_b, tri_c + tri_n_c);
}
}
// side a, b
{
float3 a = tri_a;
float3 b = tri_b;
float3 c = tri_a + tri_n_a;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
} else {
float3 a = tri_a + tri_n_a;
float3 b = tri_b;
float3 c = tri_b + tri_n_b;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
}
}
}
// side b, c
{
float3 a = tri_b;
float3 b = tri_c;
float3 c = tri_b + tri_n_b;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
} else {
float3 a = tri_b + tri_n_b;
float3 b = tri_c;
float3 c = tri_c + tri_n_c;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
}
}
}
// // side c, a
{
float3 a = tri_c;
float3 b = tri_a;
float3 c = tri_c + tri_n_c;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
} else {
float3 a = tri_c + tri_n_c;
float3 b = tri_a;
float3 c = tri_a + tri_n_a;
if (ray_triangle_intersect(P,
dir,
FLT_MAX,
a,
b,
c,
&u, &v, &t)) {
handle_hit(min_hit, max_hit, P, dir, t, u, v, a, b, c);
}
}
}