public static void TestIntersection(Ray simdRay, BoundingBox simdBox, ref int intersectionCount)
{
bRay scalarRay;
bBoundingBox scalarBox;
scalarRay.Position = Convert(simdRay.Position);
scalarRay.Direction = Convert(simdRay.Direction);
scalarBox.Min = Convert(simdBox.Min);
scalarBox.Max = Convert(simdBox.Max);
float simdT;
var simdIntersects = Ray.Intersects(ref simdRay, ref simdBox, out simdT);
float scalarT;
var scalarIntersects = scalarRay.Intersects(ref scalarBox, out scalarT);
//Console.WriteLine($"Simd says: {simdIntersects}, scalar says {scalarIntersects}");
Assert.IsTrue(simdIntersects == scalarIntersects);
if (simdIntersects)
{
var error = Math.Abs(simdT - scalarT);
Assert.IsTrue(error <= 1e-5f);
intersectionCount++;
}
//Just treat T as undefined if it's not intersecting. No need to check it.
}