Пример #1
0
    public void Verify_DispatchAsPixelShader(Device device)
    {
        using ReadWriteTexture2D <Rgba32, float4> texture = device.Get().AllocateReadWriteTexture2D <Rgba32, float4>(256, 256);

        device.Get().ForEach <DispatchPixelShader, float4>(texture);

        Rgba32[,] data = texture.ToArray();

        for (int y = 0; y < texture.Height; y++)
        {
            for (int x = 0; x < texture.Width; x++)
            {
                Rgba32 pixel = data[y, x];

                Assert.AreEqual((float)pixel.R / 255, (float)x / texture.Width, 0.1f);
                Assert.AreEqual((float)pixel.G / 255, (float)y / texture.Height, 0.1f);
                Assert.AreEqual(pixel.B, 255);
                Assert.AreEqual(pixel.A, 255);
            }
        }
    }
Пример #2
0
    public unsafe void PixelShader_EarlyReturn(Device device)
    {
        using ReadWriteTexture2D <Rgba32, float4> texture = device.Get().AllocateReadWriteTexture2D <Rgba32, float4>(128, 128);

        device.Get().ForEach <EarlyReturnShader, float4>(texture);

        Rgba32[,] result = texture.ToArray();

        for (int i = 0; i < texture.Height; i++)
        {
            for (int j = 0; j < texture.Width; j++)
            {
                if (j % 2 == 0)
                {
                    Assert.AreEqual(result[i, j], new Rgba32(255, 0, 0, 0));
                }
                else
                {
                    Assert.AreEqual(result[i, j], new Rgba32(0, 255, 0, 0));
                }
            }
        }
    }