The issue is caused by the math accuracy in the HelperFunction.hlsl . Tiny precision errors can cause significantly different outputs.
Refactoring the function to read:
void Random_Vector_float(precise float2 UV, out float3 Out)
{
float s_multiplier = 43758.5453;
precise float dp = dot(UV, float2(12.9898, 78.233));
float rf1 = sin(dp);
float randomno1 = frac(rf1* s_multiplier);
float rf2 = sin(dp*2.0);
float randomno2 = frac(rf2 * s_multiplier);
float rf3 = sin(dp*3.0);
float randomno3 = frac(rf3 *s_multiplier);
Out = float3(randomno1, randomno2, randomno3);
}
fixes the issue. Note the use of precision on the dot product.