10 Sep 2017 · Animation Compression, Releases
This marks the fourth release of ACL. It contains a lot of good stuff but most notable is the addition of segmenting support. I have not had the chance to play with the settings much yet but using segments of 16 key frames reduces the memory footprint by about 13% with variable quantization under uniform sampling. Adding range reduction on top of it (per segment), further reduces the memory footprint by another 10%. This is very significant!
Read the full post
30 Aug 2017 · Math
While investigating precision issues with ACL, I ran into two problems that I hadn’t seen documented elsewhere and that slightly surprised me.
Read the full post
29 Jul 2017 · Animation Compression, Releases
This release marks an important milestone. It now supports a fully variable bit rate and it performs admirably so far. The numbers don’t lie. Without using any form of key reduction, we match the compression ratio of Unreal 4 (which uses a mix of linear key reduction with a form of variable quantization) and many more tricks will follow to push this even further. It is worth noting that this new variable bit rate algorithm is entirely different from the one I presented at the GDC 2017 and it should outperform it. In due time, more stats and graphs will be published to outline how the data looks across the whole dataset.
Read the full post
25 Jun 2017 · Animation Compression, Releases
Over the years, I’ve had my fare share of discussions about animation compression and two things became obvious over time:
we were all (re-)doing similar things and none of us had access to a state of art implementation to compare against.
This lead to rampant speculation about which algorithm was superior or inferior.
Having implemented a few algorithms in the past, I have finally decided to redo all that work once more and in the open this time.
Say ‘Hello’ to the Animation Compression Library (ACL for short).
Read the full post
13 Apr 2017 · Math, Performance
In modern video games, the 4x4 matrix multiplication is an important cornerstone. It is used for a very long list of things: moving individual character joints, physics simulation, rendering, etc. To generate a single video game image (and we typically generate between 25 and 60 per second), several thousand matrix multiplications will take place. Today, we will take an in-depth look at such a fundamental piece of code.
Read the full post