This is how i solved this problem:Each struct contains one function
struct hash
{
float m_hash( float2 p ) {
float h = dot(p,float2(127.1,311.7));
return frac(sin(h)*43758.5453123);
}
};
struct noise
{
hash mhash;
float m_noise( float2 p ) {
float2 i = floor( p );
float2 f = frac( p );
float2 u = ff(3.0-2.0f);
return -1.0+2.0lerp( lerp( mhash.m_hash( i + float2(0.0,0.0) ),
mhash.m_hash( i + float2(1.0,0.0) ), u.x),
lerp( mhash.m_hash( i + float2(0.0,1.0) ),
mhash.m_hash( i + float2(1.0,1.0) ), u.x), u.y);
}
};
noise mnoise;
return mnoise.m_noise(iTime);