
This is faster than a ramp and it is quite predictable, and the ends are smooth:
@P.y = 4 * smooth(0, 1, @P.x) * smooth(0, 1, 1-@P.x);
Also you may shape it further with ease and bias functions, ends are still smooth:
void distort_bias(float dimension, bias)
{
if (dimension <= 0) dimension = 0; else if (dimension >= 1)
dimension = 1;
else
dimension = (1-bias) / (((1.0 / dimension) - 2) * (bias) + 1);
}
float distort_bias(float dimension, bias)
{
float eval;
if (dimension <= 0) eval = 0; else if (dimension >= 1)
eval = 1;
else
eval = (1-bias) / (((1.0 / dimension) - 2) * (bias) + 1);
return eval;
}
void distort_ease(float dimension, ease)
{
if(dimension<0.5)
dimension = distort_bias(dimension*2,ease)/2;
else
dimension = 1 - distort_bias((1-dimension)*2,ease)/2;
}