[require]
shader model >= 4.1


[sampler 0]
filter linear linear linear
address clamp clamp clamp

[srv 0]
size (2d, 3, 3)
0.0 0.0 0.0 0.4     0.1 0.0 0.5 0.0     0.2 0.0 0.0 0.4
0.0 0.1 0.5 0.0     0.1 0.1 0.0 0.4     0.2 0.1 0.5 0.0
0.0 0.2 0.0 0.4     0.1 0.2 0.5 0.0     0.2 0.2 0.0 0.4


[pixel shader]
sampler s;
Texture2D t;

float4 main() : sv_target
{
    return t.Gather(s, float2(0.2, 0.2));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.0, 0.1, 0.1, 0.0)


[pixel shader]
sampler s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherRed(s, float2(0.6, 0.6), int2(0, 0));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.1, 0.2, 0.2, 0.1)


[require]
shader model >= 5.0


[pixel shader]
SamplerState s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherGreen(s, float2(0.2, 0.2), int2(0, 0));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.1, 0.1, 0.0, 0.0)


[pixel shader]
SamplerState s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherGreen(s, float2(0.8, 0.8));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.2, 0.2, 0.1, 0.1)


[pixel shader todo]
SamplerState s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherGreen(s, float2(0.2, 0.2), int2(0, 0), int2(0, 0), int2(0, 0), int2(0, 0));
}

[test]
todo(sm<6) draw quad
probe (0, 0) rgba (0.1, 0.1, 0.0, 0.0)


[pixel shader]
SamplerState s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherBlue(s, float2(0.2, 0.8), int2(0, 0));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.0, 0.5, 0.0, 0.5)


[pixel shader]
SamplerState s;
Texture2D t;

float4 main() : sv_target
{
    return t.GatherAlpha(s, float2(0.2, 0.8), int2(0, 0));
}

[test]
todo(glsl) draw quad
probe (0, 0) rgba (0.4, 0.0, 0.4, 0.0)