[pixel shader]
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, u.y, u.z);
}

[test]
uniform 0 float4 -0.1 10.0 0.0 0.0
todo(glsl) draw quad
probe (0, 0) rgba (1.0, 0.0, 0.0, 1.0)

[test]
uniform 0 float4 1.2 -0.1 0.0 0.0
todo(glsl) draw quad
probe (0, 0) rgba (1.0, 1.2, 0.0, 1.0)

[test]
uniform 0 float4 1.2 2.0 3.0 0.0
todo(glsl) draw quad
probe (0, 0) rgba (1.0, 1.2, 8.0, 1.0)

[pixel shader]
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, u.y, u.z) + lit(u.x, u.y, u.z);
}

[test]
uniform 0 float4 1.2 2.0 3.0 0.0
todo(glsl) draw quad
probe (0, 0) rgba (2.0, 2.4, 16.0, 2.0)

[pixel shader fail]
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.xy, u.y, u.z);
}

[pixel shader fail]
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, u.xy, u.z);
}

[pixel shader fail]
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, u.y, u.yz);
}

[pixel shader fail]
uniform float4x4 m;
uniform float4 u;

float4 main() : sv_target
{
    return lit(m, u.y, u.z);
}

[pixel shader fail]
uniform float4x4 m;
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, m, u.z);
}

[pixel shader fail]
uniform float4x4 m;
uniform float4 u;

float4 main() : sv_target
{
    return lit(u.x, u.y, m);
}