Combining animation textures
The act of combining many smaller textures into one larger texture is called atlasing. A large texture that contains multiple smaller textures is often called a texture atlas. The benefit of atlasing textures is needing to use fewer texture samplers.
The crowd rendering system presented in this chapter has one major drawback: while the crowd can play animations at different time offsets, they can only play the same animation. There is an easy way to work around this: atlas multiple animation textures onto one large texture.
A 1024x1024 texture, for example, can contain 16 smaller 256x256 textures. This means any member of the crowd could play 1 of 16 animations. An additional "offset" uniform has to be added to the per-instance data of the shader. This offset uniform would be an array of MAX_INSTANCES
size.
For each character being rendered, the GetPose
function would have to apply the offset before retrieving the animation texels. In...