| 281 | #endif |
| 282 | |
| 283 | static fl::i8 inline __attribute__((always_inline)) lerp7by8( fl::i8 a, fl::i8 b, fract8 frac) |
| 284 | { |
| 285 | // int8_t delta = b - a; |
| 286 | // int16_t prod = (uint16_t)delta * (uint16_t)frac; |
| 287 | // int8_t scaled = prod >> 8; |
| 288 | // int8_t result = a + scaled; |
| 289 | // return result; |
| 290 | fl::i8 result; |
| 291 | if( b > a) { |
| 292 | fl::u8 delta = b - a; |
| 293 | fl::u8 scaled = scale8( delta, frac); |
| 294 | result = a + scaled; |
| 295 | } else { |
| 296 | fl::u8 delta = a - b; |
| 297 | fl::u8 scaled = scale8( delta, frac); |
| 298 | result = a - scaled; |
| 299 | } |
| 300 | return result; |
| 301 | } |
| 302 | |
| 303 | fl::i16 inoise16_raw(fl::u32 x, fl::u32 y, fl::u32 z) |
| 304 | { |