Fragment shaders for agent animation using finite state machines
In a previous paper we generated animated agents and their behavior using a combination of XML and images. The behavior of agents was specified as a finite state machine (FSM) in XML. We used images to determine properties of the world that agents react to. While this approach is very flexible, it can be made much faster by using the power available in modern GPUs. In this paper we implement FSMs as fragment shaders using three kinds of images: world space images, agent space images and FSM table images. We show a simple example and compare performance of CPU and GPU implementations. Then we examine a more complex example involving more maps and two types of agents (predatorprey). Furthermore we explore how to render agents in 3D more efficiently by using a variation on pseudoinstancing.
shader finite state machine gpu maps fsm-based simulations virtual characters crowds behavior simulation