Giter Club home page Giter Club logo

acl's Introduction

CLA assistant Build status Build Status Build status Sonar Status GitHub release GitHub license Discord

Animation Compression Library

Animation compression is a fundamental aspect of modern video game engines. Not only is it important to keep the memory footprint down but it is also critical to keep the animation clip sampling performance fast.

The more memory an animation clip consumes, the slower it will be to sample it and extract a character pose at runtime. For these reasons, any game that attempts to push the boundaries of what the hardware can achieve will at some point need to implement some form of animation compression.

While some degree of compression can easily be achieved with simple tricks, achieving high compression ratios, fast decompression, while simultaneously not compromising the accuracy of the resulting compressed animation requires a great deal of care.

Goals

This library has four primary goals:

  • Implement state of the art and production ready animation compression algorithms
  • Be easy to integrate into modern video game engines
  • Serve as a benchmark to compare various techniques against one another
  • Document what works and doesn't work

Algorithms are optimized with a focus on (in this particular order):

  • Minimizing the compression artifacts in order to reach high cinematographic quality
  • Fast decompression on all our supported hardware
  • A small memory footprint to lower memory pressure at runtime as well as reducing disk and network usage

Decompression speed will not be sacrificed for a smaller memory footprint nor will accuracy be compromised under any circumstances.

Philosophy

Much thought was put into designing the library for it to be as flexible and powerful as possible. To this end, the following decisions were made:

Supported platforms

  • Windows VS2015 x86 and x64
  • Windows (VS2017, VS2019) x86, x64, and ARM64*
  • Windows VS2019 with clang9 x86 and x64
  • Linux (gcc5, gcc6, gcc7, gcc8, gcc9, gcc10) x86 and x64
  • Linux (clang4, clang5, clang6, clang7, clang8, clang9, clang10) x86 and x64
  • OS X (Xcode 8.3, 9.4, 10.3) x86 and x64
  • OS X (Xcode 11.2) x64
  • Android (NDK 21) ARMv7-A and ARM64
  • iOS (Xcode 8.3, 9.4, 10.3, 11.2) ARM64
  • Emscripten (1.39.11) WASM

The above supported platform list is only what is tested every release but if it compiles, it should run just fine.

Note: VS2017 and VS2019 compile with ARM64 on AppVeyor but I have no device to test them with.

The Unreal Engine is supported through a plugin found here.

Getting started

This library is 100% headers as such you just need to include them in your own project to start using it. However, if you wish to run the unit tests, regression tests, to contribute to ACL or use it for research, head on over to the getting started section in order to setup your environment and make sure to check out the contributing guidelines.

If you would like to integrate ACL into your own game engine, follow the integration instructions here.

Performance metrics

External dependencies

You don't need anything else to get started: everything is self contained. See here for details.

License, copyright, and code of conduct

This project uses the MIT license.

Copyright (c) 2017 Nicholas Frechette & Animation Compression Library contributors

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

acl's People

Contributors

codydwjones avatar janisozaur avatar meradrin avatar nfrechette avatar tirpidz avatar vjeffh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.