Vec3 smoothStep(const Vec3& value1, const Vec3& value2, const float& amount) { return Vec3(smoothStep(value1.x, value2.x, amount), smoothStep(value1.y, value2.y, amount), smoothStep(value1.z, value2.z, amount)); }
Vec1 smoothStep(const Vec1& value1, const Vec1& value2, const float& amount) { return Vec1(smoothStep(value1.x, value2.x, amount)); }
Vec2 smoothStep(const Vec2& value1, const Vec2& value2, const float& amount) { return Vec2(smoothStep(value1.x, value2.x, amount), smoothStep(value1.y, value2.y, amount)); }
float smoothPulse(float e0,float e1,float e2,float e3,float x) { return (smoothStep (e0, e1, x) - smoothStep (e2, e3, x)); }