Skeletal Based GPU Instanced Crowds 🚀
Turbo Sequence is built to support a modern way to render Skeletal Meshes. It's using GPU Instancing with Niagara to manage draw calls efficiently, which is mostly the bottleneck of traditional rendering systems. Turbo Sequence is using bones to animate the meshes, which allow IK and layer mask blending per Bone.
Turbo Sequence is a Plugin for Unreal Engine 5 which is Open Source with an MIT License. The advantage of using Turbo Sequence over VATs is that Turbo Sequence uses bone joint bending instead of pre-computed animations, which allows runtime bone joint bending like IK or Sockets. Turbo Sequence is trying to use Draw-Calls per archetype efficiently and not per instance, which has an advantage compared to traditional Skeletal Meshes.
Traditional Rendering:
CPU GPU
|
v
Instance 1 (Mesh data 1) -> Draw call
| |
v v
Instance 2 (Mesh data 2) -> Draw call
| |
v v
Instance N (Mesh data N) -> Draw call
GPU Instancing
CPU GPU
|
v
Base mesh data -> Draw call
| (all instances combined)
v
Rendered instances
TS is optimized for crowds around 10k - 50k, if you need more units, use VATs, Turbo Sequence is built to combine Animation Quality with Modern Rendering which means it is just as fast as the Quality of Bone joint bending allows it.
Navigate to the Releases and download the source of your Unreal Engine Version
Inside Unreal Engine, navigate to ..\Plugins\TurboSequence\Content\Demo
and play through the demos; there is no additional setup required.
The official documentation and API can be found here:
Turbo Sequence is a Hobby Project, nothing commercial behind the Repo, the Contributors are not responsible for solving bugs for users of Turbo Sequence, features may or may not come; if you really need a specific feature, please fork the Repo and build your own system on top of it; and optional create a pull request if you really think it should be part of the original Turbo Sequence Repo.
If you encounter a bug, create an issue and when I have the time, I try to respond to it.
Contributions are welcome; if you want to contribute, Fork the Repo, create an Exp Branch, and create a Pull Request from the Exp Branch. Pull requests need to be reviewed to maintain the quality standards of this Repo in terms of runtime performance and the UE Coding Standards.