Есть такая вот реализация
lerp#[inline(always)]
pub fn lerp(a: f32, b: f32, t: f32) -> f32 {
if t < 0.5 {
(b - a).mul_add(t, a)
} else {
(a - b).mul_add(1.0 - t, b)
}
}
Зачем делать такой
lerp вместо a.mul_add(1.0 - t, b * t) или b.mull_add(t, a * (1.0 - t)) или даже b.mull_add(t, a.mull_add(-t, a)), да хоть тот же (b - a).mul_add(t, a) из первого бранча?Вроде как без бранча сильно лучше было бы для перформанса?