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); } } }
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)); } } } }