28 lines
612 B
GLSL
28 lines
612 B
GLSL
// Translation (from C) of utility functions Inigo Quilez
|
|
// explains in http://www.iquilezles.org/www/articles/functions/functions.htm
|
|
float almostIdentity(float x, float m, float n) {
|
|
if(x > m) return x;
|
|
|
|
float a = 2.*n - m;
|
|
float b = 2.0*m - 3.0*n;
|
|
float t = x/m;
|
|
|
|
return (a*t + b)*t*t + n;
|
|
}
|
|
|
|
float impulse(float k, float x) {
|
|
float h = k * x;
|
|
return h*exp(1.0-h);
|
|
}
|
|
|
|
float cubic_pulse(float c, float w, float x) {
|
|
x = abs(x - c);
|
|
if(x > w) return .0;
|
|
x /= w;
|
|
return 1.0 - x*x*(3.0-2.0*x);
|
|
}
|
|
|
|
float parabola(float x, float k) {
|
|
return pow(4.0*x*(1.0-x), k);
|
|
}
|