Files
glsl_playground/utilities/inigo.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);
}