// Runtime shaders require specific main signatures. Test that older signatures, or those intended
// for color filters don't work.

half4 main() { return half4(1); }
half4 main(half4 color) { return color; }
half4 main(float2 xy, half4 color, half4 bonusColor) { return color; }
half4 main(half4 outOfOrderColor, float2 outOfOrderXy) { return color; }
half4 main(float2 xy, half4 color) { return color; }

half4 main(float2 xy) { return half4(1); }  // the correct signature is allowed

/*%%*
'main' parameter must be 'float2' or 'vec2'
'main' parameter must be 'float2' or 'vec2'
unknown identifier 'color'
'main' parameter must be 'float2' or 'vec2'
unknown identifier 'color'
'main' parameter must be 'float2' or 'vec2'
unknown identifier 'color'
'main' parameter must be 'float2' or 'vec2'
unknown identifier 'color'
*%%*/
