I thought about adding that, but it would require argument parsing in the technique block, which overcomplicates the compiler code. And since the same can be done with only a few more lines of code I decided against it:
float4 PS_Foo(float4 pos : SV_Position, float2 uv : TEXCOORD, float2 dir) {
//blur in the direction defined by dir
}
float4 PS_FooX(float4 pos : SV_Position, float2 uv : TEXCOORD) { return PS_Foo(pos, uv, float2(1.0, 0.0)); }
float4 PS_FooY(float4 pos : SV_Position, float2 uv : TEXCOORD) { return PS_Foo(pos, uv, float2(0.0, 1.0)); }
technique Bar {
pass X {
VertexShader = PostProcessVS;
PixelShader = PS_FooX;
}
pass Y {
VertexShader = PostProcessVS;
PixelShader = PS_FooY;
}
}