Mechatrommer, this tripped my XY type problem senses, and indeed, really simple integer math can solve it, not fixed point, not even divide or root, just add subtract and multiply,
to 3dgeo, I now see what your doing with your led driver chips. the driver chips seem to be immediate update to me,
still 8 bit per colour per led per frame at 60Hz, Equals 151200 bits per second, I hope your running I2C at atleast 400KHz,
A possible alternative using SPI would let you update faster, then keep the leds on as long as possible, instead of currently having there large ripples from no time being left from the updates, and being able to update with a latch.
Method would be, while your showing your current update, you load up all the shift registers, turn off 1 pfet, toggle the latch, turn on the next pfet and then start loading the next frame.
e.g.
https://au.mouser.com/datasheet/2/389/aled1642gw-973895.pdfI will also say the spi transfers should not be too costly if you use CLK/2, With some overhead, the spi transfer would only be about 7% of your processor time.