public void FastHash2D(Float2 Pos,out Float4 hash_0, out Float4 hash_1){ //Float2 Offset = new Float2(26,161); float Domain = 71; Float2 SomeLargeFloats = new Float2(951.135664f,642.9478304f); Float4 P = new Float4(Pos.x,Pos.y,Pos.x+1,Pos.y+1); P = P-floor(P*(1.0f/Domain),false)*Domain; P.x += 26; P.y += 161; P.z += 26; P.w += 161; P.Mul(P); P = P.xzxz.Mul(P.yyww); hash_0 = frac(P*(1/SomeLargeFloats.x),false); hash_1 = frac(P*(1/SomeLargeFloats.y),false); }
//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); }
public Float4 CellularWeightSamples( Float4 Samples ) { Samples = Samples.Mul(2.0f).Sub(1); //return (1.0 - Samples * Samples) * sign(Samples); return ((Samples+0).Square().Square()).Sub(sign(Samples,false)); }