{"id":13629940,"url":"https://github.com/nfrechette/acl","last_synced_at":"2025-05-14T15:00:39.552Z","repository":{"id":38628451,"uuid":"91615309","full_name":"nfrechette/acl","owner":"nfrechette","description":"Animation Compression Library","archived":false,"fork":false,"pushed_at":"2025-04-12T01:09:12.000Z","size":13562,"stargazers_count":1417,"open_issues_count":53,"forks_count":114,"subscribers_count":43,"default_branch":"develop","last_synced_at":"2025-04-12T02:26:26.794Z","etag":null,"topics":["animation-3d","animation-compression","c-plus-plus","compression","cpp","game-development","game-engine"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nfrechette.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["nfrechette"]}},"created_at":"2017-05-17T20:02:25.000Z","updated_at":"2025-04-10T07:26:23.000Z","dependencies_parsed_at":"2023-10-26T14:08:41.230Z","dependency_job_id":"0df837a6-9c5b-4357-889e-5d1ac03d4e40","html_url":"https://github.com/nfrechette/acl","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Facl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Facl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Facl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrechette%2Facl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfrechette","download_url":"https://codeload.github.com/nfrechette/acl/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248631669,"owners_count":21136554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation-3d","animation-compression","c-plus-plus","compression","cpp","game-development","game-engine"],"created_at":"2024-08-01T22:01:24.916Z","updated_at":"2025-04-12T20:41:19.937Z","avatar_url":"https://github.com/nfrechette.png","language":"C++","readme":"[![CLA assistant](https://cla-assistant.io/readme/badge/nfrechette/acl)](https://cla-assistant.io/nfrechette/acl)\n[![All Contributors](https://img.shields.io/github/all-contributors/nfrechette/acl)](#contributors-)\n[![Build status](https://ci.appveyor.com/api/projects/status/8h1jwmhumqh9ie3h/branch/develop?svg=true)](https://ci.appveyor.com/project/nfrechette/acl)\n[![Build status](https://github.com/nfrechette/acl/actions/workflows/build_push.yml/badge.svg)](https://github.com/nfrechette/acl/actions)\n[![Sonar Status](https://sonarcloud.io/api/project_badges/measure?project=nfrechette_acl\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=nfrechette_acl)\n[![GitHub release](https://img.shields.io/github/release/nfrechette/acl.svg)](https://github.com/nfrechette/acl/releases)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nfrechette/acl/master/LICENSE)\n[![Conan](https://img.shields.io/badge/on-conan-blue.svg)](https://conan.io/center/recipes/nfrechette-acl)\n[![Discord](https://img.shields.io/discord/691048241864769647?label=discord)](https://discord.gg/UERt4bS)\n\n# Animation Compression Library\n\nAnimation 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.\n\nThe 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.\n\nWhile 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.\n\n## Goals\n\nThis library has four primary goals:\n\n*  Implement state of the art and production ready animation compression algorithms\n*  Be easy to integrate into modern video game engines\n*  Serve as a benchmark to compare various techniques against one another\n*  Document what works and doesn't work\n\nAlgorithms are optimized with a focus on (in this particular order):\n\n*  Minimizing the compression artifacts in order to reach high cinematographic quality\n*  Fast decompression on all our supported hardware\n*  A small memory footprint to lower memory pressure at runtime as well as reducing disk and network usage\n\nDecompression speed will not be sacrificed for a smaller memory footprint nor will accuracy be compromised under any circumstances.\n\n## Philosophy\n\nMuch 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:\n\n*  The library consists of **100% C++11** header files and is thus easy to integrate in any game engine\n*  [An intermediary clip format](./docs/the_acl_file_format.md) is supported in order to facilitate debugging and bug reporting\n*  All allocations use a [game provided allocator](./includes/acl/core/iallocator.h)\n*  All asserts use a [game provided macro](./includes/acl/core/error.h)\n\n## Supported platforms\n\n*  Windows VS2015 x86 and x64\n*  Windows (VS2017 to VS2022) x86, x64, and ARM64\n*  Windows (VS2017 to VS2022) with clang x86 and x64\n*  Linux (gcc 5 to 13) x86 and x64\n*  Linux (clang 4 to 15) x86 and x64\n*  OS X (12.5, 13.2, 14.2) x64 and ARM64\n*  Android (NDK 21) ARMv7-A and ARM64\n*  iOS (Xcode 10.3, 11.7, 12.5, 13.2, 14.2) ARM64\n*  Emscripten (1.39.11) WASM\n*  MSYS2 x64\n\nThe above supported platform list is only what is tested every release but if it compiles, it should run just fine.\n\nThe [Unreal Engine](https://www.unrealengine.com/en-US/blog) is supported through a plugin found [here](https://github.com/nfrechette/acl-ue4-plugin).\n\n## Getting started\n\nThis 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](./docs/getting_started.md) section in order to setup your environment and make sure to check out the [contributing guidelines](CONTRIBUTING.md).\n\nIf you would like to integrate ACL into your own game engine, follow the integration instructions [here](./docs#how-to-integrate-the-library).\n\nYou can install `nfrechette-acl` with [Conan](https://conan.io/center/recipes/nfrechette-acl).\n\n## Performance metrics\n\n*  [Carnegie-Mellon University database performance](./docs/cmu_performance.md)\n*  [Paragon database performance](./docs/paragon_performance.md)\n*  [Matinee fight scene performance](./docs/fight_scene_performance.md)\n*  [Decompression performance](./docs/decompression_performance.md)\n\n## External dependencies\n\nYou don't need anything else to get started: everything is self contained.\nSee [here](./external) for details.\n\n## License, copyright, and code of conduct\n\nThis project uses the [MIT license](LICENSE).\n\nCopyright (c) 2017 Nicholas Frechette \u0026 Animation Compression Library contributors\n\nPlease note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.\n\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/CodyDWJones\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28773740?v=4?s=100\" width=\"100px;\" alt=\"CodyDWJones\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCodyDWJones\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=CodyDWJones\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#data-CodyDWJones\" title=\"Data\"\u003e🔣\u003c/a\u003e \u003ca href=\"#maintenance-CodyDWJones\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#tool-CodyDWJones\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"#infra-CodyDWJones\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#ideas-CodyDWJones\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Meradrin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7066278?v=4?s=100\" width=\"100px;\" alt=\"Meradrin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMeradrin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=Meradrin\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tirpidz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9991876?v=4?s=100\" width=\"100px;\" alt=\"Martin Turcotte\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMartin Turcotte\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=tirpidz\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#tool-tirpidz\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"#ideas-tirpidz\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/vjeffh\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22382688?v=4?s=100\" width=\"100px;\" alt=\"vjeffh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evjeffh\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=vjeffh\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Romain-Piquois\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3689912?v=4?s=100\" width=\"100px;\" alt=\"Romain-Piquois\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRomain-Piquois\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/issues?q=author%3ARomain-Piquois\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/janisozaur\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/550290?v=4?s=100\" width=\"100px;\" alt=\"Michał Janiszewski\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichał Janiszewski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=janisozaur\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#tool-janisozaur\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"#maintenance-janisozaur\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#infra-janisozaur\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://keybase.io/visualphoenix\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/394175?v=4?s=100\" width=\"100px;\" alt=\"Raymond Barbiero\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRaymond Barbiero\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-visualphoenix\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ddeadguyy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42090666?v=4?s=100\" width=\"100px;\" alt=\"ddeadguyy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eddeadguyy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=ddeadguyy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-ddeadguyy\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://gitlab.com/intelligide\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/12529837?v=4?s=100\" width=\"100px;\" alt=\"Yoann Potinet\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYoann Potinet\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-intelligide\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jbrd-pg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/100773491?v=4?s=100\" width=\"100px;\" alt=\"James Bird\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames Bird\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-jbrd-pg\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/nfrechette/acl/commits?author=jbrd-pg\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/GermanAizek\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/21138600?v=4?s=100\" width=\"100px;\" alt=\"Herman Semenov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHerman Semenov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=GermanAizek\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Dreaming381\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25555355?v=4?s=100\" width=\"100px;\" alt=\"Tyler\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTyler\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=Dreaming381\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-Dreaming381\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/naetherm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/16878712?v=4?s=100\" width=\"100px;\" alt=\"naetherm\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003enaetherm\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=naetherm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TetraSomia\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19408647?v=4?s=100\" width=\"100px;\" alt=\"Arthur Josso\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArthur Josso\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=TetraSomia\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Yusuf-PG\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/168181217?v=4?s=100\" width=\"100px;\" alt=\"Yusuf Ismail\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYusuf Ismail\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/nfrechette/acl/commits?author=Yusuf-PG\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":["https://github.com/sponsors/nfrechette"],"categories":["C++","Graphics"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrechette%2Facl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfrechette%2Facl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrechette%2Facl/lists"}