//Float2 Interpolation_C2( Float2 x ) { return (x*x).Square().Mul((x * ((x * 6.0f) - 15.0f)).Add(10.0f)); } void FastHash2D(Float2 Pos,out Float4 hash_0, out Float4 hash_1, out Float4 hash_2){ Float2 Offset = new Float2(26,161); Float Domain = 71f; Float3 SomeLargeFloats = new Float3(951.135664f,642.9478304f,803.202459f); Float4 P = new Float4(Pos,Pos+1); P = P.Sub(floor(P.Mul((1.0f/Domain)),true).Mul(Domain)); P.Add(Offset.xyxy); P.Square(); P = P.xzxz*P.yyww; hash_0 = frac(P*(1f/SomeLargeFloats.x),true); hash_1 = frac(P*(1f/SomeLargeFloats.y),true); hash_2 = frac(P*(1f/SomeLargeFloats.z),true); }
Float4 FastHash2D(Float2 Pos){ Float2 Offset = new Float2(26,161); Float Domain = 71; Float SomeLargeFloat = 951.135664f; Float4 P = new Float4(Pos.xy,Pos.xy+1); //P = P-floor(P*(1.0f/Domain))*Domain; P = P-floor((P+0).Mul(1.0f/Domain),true).Mul(Domain); P.Add(Offset.xyxy); P.Square(); return frac(P.xzxz.Mul(P.yyww).Mul(1.0f/SomeLargeFloat),false); }