Exemplo n.º 1
0
        public void float4_operator_equal_scalar_wide()
        {
            float  a0 = (-253.397278f);
            float4 b0 = float4(19.95221f, -185.791992f, 407.8136f, -87.2767f);
            bool4  r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 == b0, r0);

            float  a1 = (-206.274689f);
            float4 b1 = float4(160.503113f, -274.7708f, -2.63153076f, 448.354553f);
            bool4  r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 == b1, r1);

            float  a2 = (-410.035248f);
            float4 b2 = float4(247.329041f, 355.539124f, -298.0667f, 414.1015f);
            bool4  r2 = bool4(false, false, false, false);

            TestUtils.AreEqual(a2 == b2, r2);

            float  a3 = (-481.3026f);
            float4 b3 = float4(196.55072f, 34.6010132f, 113.7616f, -386.453369f);
            bool4  r3 = bool4(false, false, false, false);

            TestUtils.AreEqual(a3 == b3, r3);
        }
Exemplo n.º 2
0
 public static void AreEqual(bool4 a, bool4 b)
 {
     AreEqual(a.x, b.x);
     AreEqual(a.y, b.y);
     AreEqual(a.z, b.z);
     AreEqual(a.w, b.w);
 }
Exemplo n.º 3
0
        public static void bool4_operator_equal_scalar_wide()
        {
            bool  a0 = (true);
            bool4 b0 = bool4(false, false, true, false);
            bool4 r0 = bool4(false, false, true, false);

            TestUtils.AreEqual(a0 == b0, r0);

            bool  a1 = (true);
            bool4 b1 = bool4(false, true, false, false);
            bool4 r1 = bool4(false, true, false, false);

            TestUtils.AreEqual(a1 == b1, r1);

            bool  a2 = (false);
            bool4 b2 = bool4(false, true, false, true);
            bool4 r2 = bool4(true, false, true, false);

            TestUtils.AreEqual(a2 == b2, r2);

            bool  a3 = (true);
            bool4 b3 = bool4(true, false, true, true);
            bool4 r3 = bool4(true, false, true, true);

            TestUtils.AreEqual(a3 == b3, r3);
        }
Exemplo n.º 4
0
        public void DrawLeavesRecursive(NativeArray <BoundingVolumeHierarchy.Node> nodes, Color color, int nodeIndex)
        {
            if (nodes[nodeIndex].IsLeaf)
            {
                bool4 leavesValid = nodes[nodeIndex].AreLeavesValid;
                for (int l = 0; l < 4; l++)
                {
                    if (leavesValid[l])
                    {
                        Aabb   aabb   = nodes[nodeIndex].Bounds.GetAabb(l);
                        float3 center = aabb.Center;
                        OutputStream.Box(aabb.Extents, center, Quaternion.identity, color);
                    }
                }

                return;
            }

            for (int i = 0; i < 4; i++)
            {
                if (nodes[nodeIndex].IsChildValid(i))
                {
                    DrawLeavesRecursive(nodes, color, nodes[nodeIndex].Data[i]);
                }
            }
        }
        public void bool4_operator_bitwise_or_wide_scalar()
        {
            bool4 a0 = bool4(true, true, false, true);
            bool  b0 = (true);
            bool4 r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 | b0, r0);

            bool4 a1 = bool4(true, true, false, true);
            bool  b1 = (true);
            bool4 r1 = bool4(true, true, true, true);

            TestUtils.AreEqual(a1 | b1, r1);

            bool4 a2 = bool4(false, true, false, false);
            bool  b2 = (false);
            bool4 r2 = bool4(false, true, false, false);

            TestUtils.AreEqual(a2 | b2, r2);

            bool4 a3 = bool4(true, true, true, true);
            bool  b3 = (false);
            bool4 r3 = bool4(true, true, true, true);

            TestUtils.AreEqual(a3 | b3, r3);
        }
Exemplo n.º 6
0
        public void float4_operator_equal_wide_scalar()
        {
            float4 a0 = float4(-303.230072f, 451.5263f, -253.655884f, -105.203644f);
            float  b0 = (123.544556f);
            bool4  r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 == b0, r0);

            float4 a1 = float4(-500.6911f, 159.8761f, -59.55838f, -57.4773865f);
            float  b1 = (-426.192474f);
            bool4  r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 == b1, r1);

            float4 a2 = float4(-182.049744f, 370.886f, -172.035309f, 455.400024f);
            float  b2 = (406.513733f);
            bool4  r2 = bool4(false, false, false, false);

            TestUtils.AreEqual(a2 == b2, r2);

            float4 a3 = float4(-11.3389893f, -27.1505737f, -325.976074f, -290.359039f);
            float  b3 = (363.938232f);
            bool4  r3 = bool4(false, false, false, false);

            TestUtils.AreEqual(a3 == b3, r3);
        }
Exemplo n.º 7
0
 public bool4x4(bool4 c0, bool4 c1, bool4 c2, bool4 c3)
 {
     this.c0 = c0;
     this.c1 = c1;
     this.c2 = c2;
     this.c3 = c3;
 }
Exemplo n.º 8
0
        public void float4_operator_less_scalar_wide()
        {
            float  a0 = (-423.1174f);
            float4 b0 = float4(385.094849f, -123.933472f, 86.37659f, 133.4422f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 < b0, r0);

            float  a1 = (161.457947f);
            float4 b1 = float4(229.754272f, 222.5716f, 315.5312f, -447.203522f);
            bool4  r1 = bool4(true, true, true, false);

            TestUtils.AreEqual(a1 < b1, r1);

            float  a2 = (271.833862f);
            float4 b2 = float4(-393.605316f, 317.486877f, -164.6051f, -282.876038f);
            bool4  r2 = bool4(false, true, false, false);

            TestUtils.AreEqual(a2 < b2, r2);

            float  a3 = (296.979553f);
            float4 b3 = float4(-254.401154f, 365.6156f, -441.984253f, -131.42865f);
            bool4  r3 = bool4(false, true, false, false);

            TestUtils.AreEqual(a3 < b3, r3);
        }
Exemplo n.º 9
0
        public void float4_operator_greater_wide_wide()
        {
            float4 a0 = float4(483.5014f, 310.8156f, 106.966187f, 295.7353f);
            float4 b0 = float4(-471.398f, -371.9853f, 36.9006958f, -316.7636f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 > b0, r0);

            float4 a1 = float4(116.957581f, -478.299774f, -14.8974f, -33.8174438f);
            float4 b1 = float4(19.6830444f, 207.309143f, 362.7975f, 324.95343f);
            bool4  r1 = bool4(true, false, false, false);

            TestUtils.AreEqual(a1 > b1, r1);

            float4 a2 = float4(-24.74054f, 319.782654f, -120.158569f, -289.008575f);
            float4 b2 = float4(340.948059f, 25.9860229f, -114.211121f, 240.803467f);
            bool4  r2 = bool4(false, true, false, false);

            TestUtils.AreEqual(a2 > b2, r2);

            float4 a3 = float4(455.85144f, 144.706909f, 63.9320068f, -285.683044f);
            float4 b3 = float4(273.422424f, 325.515747f, 27.3410645f, 64.47955f);
            bool4  r3 = bool4(true, false, true, false);

            TestUtils.AreEqual(a3 > b3, r3);
        }
Exemplo n.º 10
0
        public void float4_operator_less_wide_wide()
        {
            float4 a0 = float4(196.84259f, 336.4098f, 251.963745f, 257.655945f);
            float4 b0 = float4(-465.345032f, -256.1524f, -314.814026f, 364.5667f);
            bool4  r0 = bool4(false, false, false, true);

            TestUtils.AreEqual(a0 < b0, r0);

            float4 a1 = float4(430.0459f, -62.4196472f, 8.839233f, -333.8167f);
            float4 b1 = float4(100.21051f, 182.560974f, 3.11700439f, -259.430481f);
            bool4  r1 = bool4(false, true, false, true);

            TestUtils.AreEqual(a1 < b1, r1);

            float4 a2 = float4(164.678833f, -350.9449f, 3.84143066f, 125.409729f);
            float4 b2 = float4(-437.3349f, -456.043732f, -394.255981f, 401.9137f);
            bool4  r2 = bool4(false, false, false, true);

            TestUtils.AreEqual(a2 < b2, r2);

            float4 a3 = float4(-111.129944f, 70.00549f, 448.1983f, -419.987122f);
            float4 b3 = float4(313.439148f, 121.286682f, -28.0122986f, -282.965881f);
            bool4  r3 = bool4(true, true, false, true);

            TestUtils.AreEqual(a3 < b3, r3);
        }
Exemplo n.º 11
0
        public void float4_operator_less_wide_scalar()
        {
            float4 a0 = float4(-132.057312f, -192.465f, -66.8345947f, -379.017517f);
            float  b0 = (-156.010223f);
            bool4  r0 = bool4(false, true, false, true);

            TestUtils.AreEqual(a0 < b0, r0);

            float4 a1 = float4(-360.2824f, -158.240753f, 437.3459f, -20.4526062f);
            float  b1 = (20.9278564f);
            bool4  r1 = bool4(true, true, false, true);

            TestUtils.AreEqual(a1 < b1, r1);

            float4 a2 = float4(225.2915f, 274.015259f, 373.549683f, 398.523682f);
            float  b2 = (307.4842f);
            bool4  r2 = bool4(true, true, false, false);

            TestUtils.AreEqual(a2 < b2, r2);

            float4 a3 = float4(105.030151f, 109.670105f, -108.85318f, -44.9712524f);
            float  b3 = (-58.0108948f);
            bool4  r3 = bool4(false, false, true, false);

            TestUtils.AreEqual(a3 < b3, r3);
        }
Exemplo n.º 12
0
        public void float4_operator_not_equal_scalar_wide()
        {
            float  a0 = (275.795837f);
            float4 b0 = float4(-57.1969f, -382.432526f, 97.82037f, -161.463654f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 != b0, r0);

            float  a1 = (-458.39563f);
            float4 b1 = float4(-499.617859f, 327.92218f, 367.571228f, 59.786377f);
            bool4  r1 = bool4(true, true, true, true);

            TestUtils.AreEqual(a1 != b1, r1);

            float  a2 = (-209.580688f);
            float4 b2 = float4(-62.5804443f, -479.974976f, -49.4945068f, -114.685211f);
            bool4  r2 = bool4(true, true, true, true);

            TestUtils.AreEqual(a2 != b2, r2);

            float  a3 = (109.93927f);
            float4 b3 = float4(-176.284821f, -347.4853f, 85.5409546f, -356.659546f);
            bool4  r3 = bool4(true, true, true, true);

            TestUtils.AreEqual(a3 != b3, r3);
        }
Exemplo n.º 13
0
        public void float4_operator_not_equal_wide_scalar()
        {
            float4 a0 = float4(-16.9145813f, 168.8341f, -462.713531f, 130.307739f);
            float  b0 = (-145.372772f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 != b0, r0);

            float4 a1 = float4(214.501587f, -197.12796f, -169.099854f, -386.611176f);
            float  b1 = (-440.263275f);
            bool4  r1 = bool4(true, true, true, true);

            TestUtils.AreEqual(a1 != b1, r1);

            float4 a2 = float4(-281.021f, -403.9637f, -269.805725f, 299.654236f);
            float  b2 = (-270.26886f);
            bool4  r2 = bool4(true, true, true, true);

            TestUtils.AreEqual(a2 != b2, r2);

            float4 a3 = float4(-71.7509155f, -457.363129f, -13.5195923f, 273.873047f);
            float  b3 = (-432.755737f);
            bool4  r3 = bool4(true, true, true, true);

            TestUtils.AreEqual(a3 != b3, r3);
        }
Exemplo n.º 14
0
        public void float4_operator_not_equal_wide_wide()
        {
            float4 a0 = float4(430.842529f, 104.69f, 225.802429f, -310.5702f);
            float4 b0 = float4(210.024719f, -55.20334f, -269.925354f, -234.546722f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 != b0, r0);

            float4 a1 = float4(-418.619446f, 304.128174f, -509.3268f, -160.538086f);
            float4 b1 = float4(25.91742f, -63.72699f, -484.5537f, -425.3336f);
            bool4  r1 = bool4(true, true, true, true);

            TestUtils.AreEqual(a1 != b1, r1);

            float4 a2 = float4(-203.301971f, -505.763245f, 162.17218f, 1.156189f);
            float4 b2 = float4(-53.2743835f, 328.1944f, 15.9631348f, 461.7141f);
            bool4  r2 = bool4(true, true, true, true);

            TestUtils.AreEqual(a2 != b2, r2);

            float4 a3 = float4(65.66205f, 102.787781f, 172.930054f, 26.6210327f);
            float4 b3 = float4(-113.363037f, -240.072968f, 495.119141f, 203.55835f);
            bool4  r3 = bool4(true, true, true, true);

            TestUtils.AreEqual(a3 != b3, r3);
        }
Exemplo n.º 15
0
        public void float4_operator_greater_equal_scalar_wide()
        {
            float  a0 = (374.827026f);
            float4 b0 = float4(-1.60977173f, 338.615234f, -116.1814f, -332.157318f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 >= b0, r0);

            float  a1 = (-355.97937f);
            float4 b1 = float4(-468.901428f, 38.579895f, -332.347534f, 2.89013672f);
            bool4  r1 = bool4(true, false, false, false);

            TestUtils.AreEqual(a1 >= b1, r1);

            float  a2 = (467.777771f);
            float4 b2 = float4(121.406372f, -305.023376f, -58.4288025f, -226.519562f);
            bool4  r2 = bool4(true, true, true, true);

            TestUtils.AreEqual(a2 >= b2, r2);

            float  a3 = (-47.0209961f);
            float4 b3 = float4(305.302673f, -427.401245f, 92.26367f, -497.178528f);
            bool4  r3 = bool4(false, true, false, true);

            TestUtils.AreEqual(a3 >= b3, r3);
        }
Exemplo n.º 16
0
        public void float4_operator_greater_wide_scalar()
        {
            float4 a0 = float4(64.31793f, -397.703461f, 431.8769f, 85.703f);
            float  b0 = (305.859924f);
            bool4  r0 = bool4(false, false, true, false);

            TestUtils.AreEqual(a0 > b0, r0);

            float4 a1 = float4(246.263062f, 286.199463f, 280.813354f, -405.7846f);
            float  b1 = (197.491577f);
            bool4  r1 = bool4(true, true, true, false);

            TestUtils.AreEqual(a1 > b1, r1);

            float4 a2 = float4(171.565369f, 333.5782f, 370.279175f, -413.7014f);
            float  b2 = (-241.807281f);
            bool4  r2 = bool4(true, true, true, false);

            TestUtils.AreEqual(a2 > b2, r2);

            float4 a3 = float4(-356.592346f, 396.645325f, 467.222046f, -240.013428f);
            float  b3 = (-353.0313f);
            bool4  r3 = bool4(false, true, true, true);

            TestUtils.AreEqual(a3 > b3, r3);
        }
Exemplo n.º 17
0
        public void float4_operator_equal_wide_wide()
        {
            float4 a0 = float4(492.1576f, -495.206329f, 227.457642f, -147.374054f);
            float4 b0 = float4(192.568787f, -235.611023f, -254.043121f, -412.624725f);
            bool4  r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 == b0, r0);

            float4 a1 = float4(-222.682f, 64.09375f, -23.8904114f, -16.8197327f);
            float4 b1 = float4(471.9048f, -6.47277832f, -339.102356f, 488.187561f);
            bool4  r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 == b1, r1);

            float4 a2 = float4(163.232117f, -165.271f, 470.8777f, -423.942566f);
            float4 b2 = float4(-379.5966f, -308.417f, -82.333374f, -102.921082f);
            bool4  r2 = bool4(false, false, false, false);

            TestUtils.AreEqual(a2 == b2, r2);

            float4 a3 = float4(109.6344f, 462.6903f, -335.38147f, 357.2345f);
            float4 b3 = float4(226.515747f, -356.9013f, -362.912781f, -427.898438f);
            bool4  r3 = bool4(false, false, false, false);

            TestUtils.AreEqual(a3 == b3, r3);
        }
Exemplo n.º 18
0
        public void float4_operator_greater_scalar_wide()
        {
            float  a0 = (-282.6705f);
            float4 b0 = float4(358.099976f, -72.596405f, -232.163788f, -60.7067261f);
            bool4  r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 > b0, r0);

            float  a1 = (75.15662f);
            float4 b1 = float4(150.883484f, 339.539185f, -498.196045f, 459.7461f);
            bool4  r1 = bool4(false, false, true, false);

            TestUtils.AreEqual(a1 > b1, r1);

            float  a2 = (-227.968719f);
            float4 b2 = float4(335.862122f, 76.17883f, 296.859924f, 177.48999f);
            bool4  r2 = bool4(false, false, false, false);

            TestUtils.AreEqual(a2 > b2, r2);

            float  a3 = (-281.2012f);
            float4 b3 = float4(244.722839f, 137.328552f, -385.338257f, 443.163452f);
            bool4  r3 = bool4(false, false, true, false);

            TestUtils.AreEqual(a3 > b3, r3);
        }
Exemplo n.º 19
0
        private static void SelfSweep <T>(BucketSlices bucket, int jobIndex, T processor) where T : struct, IFindPairsProcessor
        {
            int count = bucket.xmins.Length;

            for (int i = 0; i < count - 1; i++)
            {
                for (int j = i + 1; j < count && bucket.xmins[j] <= bucket.xmaxs[i]; j++)
                {
                    float4 less = new float4(bucket.yzminmaxs[i].z, bucket.yzminmaxs[j].z, bucket.yzminmaxs[i].w, bucket.yzminmaxs[j].w);
                    float4 more = new float4(bucket.yzminmaxs[j].x, bucket.yzminmaxs[i].x, bucket.yzminmaxs[j].y, bucket.yzminmaxs[i].y);

                    bool4 tests = less < more;
                    if (math.bitmask(tests) == 0)
                    {
                        processor.Execute(new FindPairsResult
                        {
                            bodyA      = bucket.bodies[i],
                            bodyB      = bucket.bodies[j],
                            bodyAIndex = i,
                            bodyBIndex = j,
                            jobIndex   = jobIndex
                        });
                    }
                }
            }
        }
Exemplo n.º 20
0
        public void float4_operator_less_equal_wide_wide()
        {
            float4 a0 = float4(-438.523132f, 210.489441f, 4.87731934f, -137.297943f);
            float4 b0 = float4(-474.814148f, 304.371033f, 234.824158f, -390.485443f);
            bool4  r0 = bool4(false, true, true, false);

            TestUtils.AreEqual(a0 <= b0, r0);

            float4 a1 = float4(156.094116f, -363.924133f, -97.94849f, 437.2954f);
            float4 b1 = float4(-297.175354f, -326.2924f, 107.253906f, -413.131073f);
            bool4  r1 = bool4(false, true, true, false);

            TestUtils.AreEqual(a1 <= b1, r1);

            float4 a2 = float4(458.530273f, -294.064758f, 23.62262f, -34.2840576f);
            float4 b2 = float4(67.09442f, 470.075256f, -84.499115f, 392.784241f);
            bool4  r2 = bool4(false, true, false, true);

            TestUtils.AreEqual(a2 <= b2, r2);

            float4 a3 = float4(149.736511f, -418.8867f, -197.502533f, -88.2055054f);
            float4 b3 = float4(-263.531738f, 369.3009f, -333.3253f, 238.413452f);
            bool4  r3 = bool4(false, true, false, true);

            TestUtils.AreEqual(a3 <= b3, r3);
        }
Exemplo n.º 21
0
 public bool4x4(bool v)
 {
     this.c0 = v;
     this.c1 = v;
     this.c2 = v;
     this.c3 = v;
 }
Exemplo n.º 22
0
        public void float4_operator_less_equal_wide_scalar()
        {
            float4 a0 = float4(193.49585f, 168.915527f, -313.993073f, 81.8269653f);
            float  b0 = (443.850525f);
            bool4  r0 = bool4(true, true, true, true);

            TestUtils.AreEqual(a0 <= b0, r0);

            float4 a1 = float4(18.5036011f, 241.361145f, -463.8164f, -1.35775757f);
            float  b1 = (-0.3581848f);
            bool4  r1 = bool4(false, false, true, true);

            TestUtils.AreEqual(a1 <= b1, r1);

            float4 a2 = float4(-268.899475f, -471.253082f, -264.9378f, 82.2583f);
            float  b2 = (398.991943f);
            bool4  r2 = bool4(true, true, true, true);

            TestUtils.AreEqual(a2 <= b2, r2);

            float4 a3 = float4(11.2460327f, 426.482239f, 56.3200073f, -196.2879f);
            float  b3 = (424.704041f);
            bool4  r3 = bool4(true, false, true, true);

            TestUtils.AreEqual(a3 <= b3, r3);
        }
        public void bool4_operator_bitwise_and_wide_wide()
        {
            bool4 a0 = bool4(false, false, true, true);
            bool4 b0 = bool4(false, false, true, false);
            bool4 r0 = bool4(false, false, true, false);

            TestUtils.AreEqual(a0 & b0, r0);

            bool4 a1 = bool4(false, false, true, true);
            bool4 b1 = bool4(true, true, false, false);
            bool4 r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 & b1, r1);

            bool4 a2 = bool4(true, false, true, true);
            bool4 b2 = bool4(true, true, false, false);
            bool4 r2 = bool4(true, false, false, false);

            TestUtils.AreEqual(a2 & b2, r2);

            bool4 a3 = bool4(true, true, false, false);
            bool4 b3 = bool4(false, false, true, false);
            bool4 r3 = bool4(false, false, false, false);

            TestUtils.AreEqual(a3 & b3, r3);
        }
Exemplo n.º 24
0
        public void float4_operator_less_equal_scalar_wide()
        {
            float  a0 = (393.606262f);
            float4 b0 = float4(-75.6883545f, -44.2638855f, 125.864929f, 191.9649f);
            bool4  r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 <= b0, r0);

            float  a1 = (13.54303f);
            float4 b1 = float4(-197.051941f, -423.9451f, -330.0486f, 420.165527f);
            bool4  r1 = bool4(false, false, false, true);

            TestUtils.AreEqual(a1 <= b1, r1);

            float  a2 = (105.5473f);
            float4 b2 = float4(174.821289f, 296.7176f, -469.7004f, 123.267212f);
            bool4  r2 = bool4(true, true, false, true);

            TestUtils.AreEqual(a2 <= b2, r2);

            float  a3 = (112.996948f);
            float4 b3 = float4(495.143372f, -488.6579f, 388.539429f, -493.240784f);
            bool4  r3 = bool4(true, false, true, false);

            TestUtils.AreEqual(a3 <= b3, r3);
        }
        public void bool4_operator_bitwise_xor_scalar_wide()
        {
            bool  a0 = (true);
            bool4 b0 = bool4(true, false, true, true);
            bool4 r0 = bool4(false, true, false, false);

            TestUtils.AreEqual(a0 ^ b0, r0);

            bool  a1 = (false);
            bool4 b1 = bool4(true, true, false, false);
            bool4 r1 = bool4(true, true, false, false);

            TestUtils.AreEqual(a1 ^ b1, r1);

            bool  a2 = (true);
            bool4 b2 = bool4(true, false, false, true);
            bool4 r2 = bool4(false, true, true, false);

            TestUtils.AreEqual(a2 ^ b2, r2);

            bool  a3 = (false);
            bool4 b3 = bool4(true, true, false, true);
            bool4 r3 = bool4(true, true, false, true);

            TestUtils.AreEqual(a3 ^ b3, r3);
        }
Exemplo n.º 26
0
        public void float4_operator_greater_equal_wide_wide()
        {
            float4 a0 = float4(-507.9286f, 504.4975f, -385.4345f, -262.323425f);
            float4 b0 = float4(-81.3465f, 297.666138f, 171.06543f, -431.038055f);
            bool4  r0 = bool4(false, true, false, true);

            TestUtils.AreEqual(a0 >= b0, r0);

            float4 a1 = float4(-37.5509338f, -111.595276f, -463.702026f, 387.448853f);
            float4 b1 = float4(-6.85907f, 319.7257f, 254.079163f, 396.5724f);
            bool4  r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 >= b1, r1);

            float4 a2 = float4(456.9688f, -211.010162f, 182.411377f, -53.59604f);
            float4 b2 = float4(178.8393f, -447.063354f, 288.492676f, 474.889282f);
            bool4  r2 = bool4(true, true, false, false);

            TestUtils.AreEqual(a2 >= b2, r2);

            float4 a3 = float4(-309.570221f, -136.022491f, 280.736267f, -96.99588f);
            float4 b3 = float4(-321.750244f, -395.977234f, -158.692474f, 391.4887f);
            bool4  r3 = bool4(true, true, true, false);

            TestUtils.AreEqual(a3 >= b3, r3);
        }
Exemplo n.º 27
0
        public static bool4 Raycast4Spheres(Ray ray, float4 xCenter, float4 yCenter, float4 zCenter, float radius, out float4 fractions)
        {
            float4 deltaX       = ray.start.x - xCenter;
            float4 deltaY       = ray.start.y - yCenter;
            float4 deltaZ       = ray.start.z - zCenter;
            float4 a            = math.dot(ray.displacement, ray.displacement);
            float4 b            = 2f * (ray.displacement.x * deltaX + ray.displacement.y * deltaY + ray.displacement.z * deltaZ);
            float4 c            = deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ - radius * radius;
            float4 discriminant = b * b - 4f * a * c;
            bool4  hit          = discriminant >= 0f & c >= 0f;      //Unlike Unity.Physics, we ignore inside hits.

            discriminant = math.abs(discriminant);
            float4 sqrtDiscriminant = math.sqrt(discriminant);
            float4 root1            = (-b - sqrtDiscriminant) / (2f * a);
            float4 root2            = (-b + sqrtDiscriminant) / (2f * a);
            float4 rootmin          = math.min(root1, root2);
            float4 rootmax          = math.max(root1, root2);
            bool4  rootminValid     = rootmin >= 0f & rootmin <= 1f;
            bool4  rootmaxValid     = rootmax >= 0f & rootmax <= 1f;

            fractions = math.select(rootmax, rootmin, rootminValid);
            bool4 aRootIsValid = rootminValid | rootmaxValid;

            return(hit & aRootIsValid);
        }
Exemplo n.º 28
0
        public void float4_operator_greater_equal_wide_scalar()
        {
            float4 a0 = float4(465.152161f, -424.886078f, -209.2211f, 58.7798462f);
            float  b0 = (-5.599884f);
            bool4  r0 = bool4(true, false, false, true);

            TestUtils.AreEqual(a0 >= b0, r0);

            float4 a1 = float4(-302.2691f, 16.3533936f, -344.559967f, 393.278076f);
            float  b1 = (140.12561f);
            bool4  r1 = bool4(false, false, false, true);

            TestUtils.AreEqual(a1 >= b1, r1);

            float4 a2 = float4(-315.701538f, -509.781555f, -36.9942932f, 494.8203f);
            float  b2 = (441.011536f);
            bool4  r2 = bool4(false, false, false, true);

            TestUtils.AreEqual(a2 >= b2, r2);

            float4 a3 = float4(-164.973938f, -123.813751f, 215.651245f, 104.995728f);
            float  b3 = (-466.1201f);
            bool4  r3 = bool4(true, true, true, true);

            TestUtils.AreEqual(a3 >= b3, r3);
        }
Exemplo n.º 29
0
        public static void bool4_operator_not_equal_wide_scalar()
        {
            bool4 a0 = bool4(false, false, true, true);
            bool  b0 = (false);
            bool4 r0 = bool4(false, false, true, true);

            TestUtils.AreEqual(a0 != b0, r0);

            bool4 a1 = bool4(true, false, false, true);
            bool  b1 = (true);
            bool4 r1 = bool4(false, true, true, false);

            TestUtils.AreEqual(a1 != b1, r1);

            bool4 a2 = bool4(false, false, true, false);
            bool  b2 = (true);
            bool4 r2 = bool4(true, true, false, true);

            TestUtils.AreEqual(a2 != b2, r2);

            bool4 a3 = bool4(true, true, true, false);
            bool  b3 = (true);
            bool4 r3 = bool4(false, false, false, true);

            TestUtils.AreEqual(a3 != b3, r3);
        }
Exemplo n.º 30
0
        public static void fix64p4_operator_equal_wide_scalar()
        {
            fix64p4 a0 = fix64p4(new fix64p(65.6712f), new fix64p(404.415527f), new fix64p(-269.730164f), new fix64p(83.6306152f));
            fix64p  b0 = (new fix64p(-155.815765f));
            bool4   r0 = bool4(false, false, false, false);

            TestUtils.AreEqual(a0 == b0, r0);

            fix64p4 a1 = fix64p4(new fix64p(152.9945f), new fix64p(314.671265f), new fix64p(386.365173f), new fix64p(290.04895f));
            fix64p  b1 = (new fix64p(-155.868286f));
            bool4   r1 = bool4(false, false, false, false);

            TestUtils.AreEqual(a1 == b1, r1);

            fix64p4 a2 = fix64p4(new fix64p(-132.6352f), new fix64p(-69.68326f), new fix64p(-191.190765f), new fix64p(186.845215f));
            fix64p  b2 = (new fix64p(-65.66748f));
            bool4   r2 = bool4(false, false, false, false);

            TestUtils.AreEqual(a2 == b2, r2);

            fix64p4 a3 = fix64p4(new fix64p(-232.895691f), new fix64p(-49.70108f), new fix64p(-300.8819f), new fix64p(333.396851f));
            fix64p  b3 = (new fix64p(-319.144043f));
            bool4   r3 = bool4(false, false, false, false);

            TestUtils.AreEqual(a3 == b3, r3);
        }