Memory Manager
During this project I worked to understand the various memory allocation techniques used in video games. These include Linear Allocators, Stack Allocators, Double-Ended Stack Allocators, and Pools.
In the example shown in the video the center emitter uses a linear allocator. While this is the fastest of the memory allocation techniques it is very inefficient in its use of memory.
The other four emitters in the scene utilize a free list of sorted pools to spawn the particles. Sorted pools are great because their speed comes from processing elements in batch. All of the active elements are also stored contiguously.