the noise primitive only appears to provide 1d noise when used in fx_4_0. All other dimensions appear to get mapped down to 1d, which is wrong.
noise(float arg); // works
noise(float2 arg); // does not return 2d noise
noise(float3 arg); // does not return 3d noise
noise(float4 arg); // does not return 4d noise