@@ -32,6 +32,7 @@ struct Plane
32
32
float distance;
33
33
};
34
34
35
+ // https://gamedev.stackexchange.com/questions/23743/whats-the-most-efficient-way-to-find-barycentric-coordinates
35
36
void tri_barycentric(float3 p, float3 a, float3 b, float3 c, out float u, out float v, out float w)
36
37
{
37
38
float3 v0 = b - a, v1 = c - a, v2 = p - a;
@@ -93,7 +94,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
93
94
p1 = dot(v1, a00);
94
95
p2 = dot(v2, a00);
95
96
r = extents.y * abs(f0.z) + extents.z * abs(f0.y);
96
-
97
97
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
98
98
{
99
99
return false;
@@ -104,7 +104,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
104
104
p1 = dot(v1, a01);
105
105
p2 = dot(v2, a01);
106
106
r = extents.y * abs(f1.z) + extents.z * abs(f1.y);
107
-
108
107
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
109
108
{
110
109
return false;
@@ -115,7 +114,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
115
114
p1 = dot(v1, a02);
116
115
p2 = dot(v2, a02);
117
116
r = extents.y * abs(f2.z) + extents.z * abs(f2.y);
118
-
119
117
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
120
118
{
121
119
return false;
@@ -136,7 +134,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
136
134
p1 = dot(v1, a11);
137
135
p2 = dot(v2, a11);
138
136
r = extents.x * abs(f1.z) + extents.z * abs(f1.x);
139
-
140
137
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
141
138
{
142
139
return false;
@@ -147,7 +144,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
147
144
p1 = dot(v1, a12);
148
145
p2 = dot(v2, a12);
149
146
r = extents.x * abs(f2.z) + extents.z * abs(f2.x);
150
-
151
147
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
152
148
{
153
149
return false;
@@ -158,7 +154,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
158
154
p1 = dot(v1, a20);
159
155
p2 = dot(v2, a20);
160
156
r = extents.x * abs(f0.y) + extents.y * abs(f0.x);
161
-
162
157
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
163
158
{
164
159
return false;
@@ -169,7 +164,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
169
164
p1 = dot(v1, a21);
170
165
p2 = dot(v2, a21);
171
166
r = extents.x * abs(f1.y) + extents.y * abs(f1.x);
172
-
173
167
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
174
168
{
175
169
return false;
@@ -180,7 +174,6 @@ bool intersects_tri_aabb(float3 va, float3 vb, float3 vc, AABB aabb)
180
174
p1 = dot(v1, a22);
181
175
p2 = dot(v2, a22);
182
176
r = extents.x * abs(f2.y) + extents.y * abs(f2.x);
183
-
184
177
if (max(-max(p0, max(p1, p2)), min(p0, min(p1, p2))) > r)
185
178
{
186
179
return false;
0 commit comments