View Revisions: Issue #3984

Summary 0003984: GPU vertex skinning
Revision 22.12.2014 03:06 by SteveL
Description Animated (MD5) meshes and particle effects currently work out the exact position of each vertex of each mesh on the CPU, and then load the results to the GPU every frame. Both these things take time, and the result is that we can typically have only 3 or 4 AI on screen before losing FPS.

The animation system is responsible for deciding where an AI's (or any md5 mesh's) skeleton is. Skinning is the process of fitting its visible surfaces over the current skeleton configuration. That can be done on either the CPU or the GPU. We currently use only the CPU. The best solution is to do it on *both* CPU and GPU, because doing the sums twice is less costly than passing the results between processors.

Ideally, the CPU will skin only the collision model (where needed, approximations are used most of the time) and any shadowcasting meshes, because it needs to know those results for other purposes. The GPU will skin the shadow mesh and the remaining visible meshes, which the CPU doesn't care about.
Revision 22.12.2014 02:33 by SteveL
Description Animated (MD5) meshes and particle effects currently work out the exact position of each vertex of each mesh on the CPU, and then load the results to the GPU every frame. Both these things take time, and the result is that we can typically have only 3 or 4 AI on screen before losing FPS.

The animation system is responsible for deciding where an AI's (or any md5 mesh's) skeleton is. Skinning is the process of fitting its visible surfaces over the current skeleton configuration. That can be done on either the CPU or the GPU. We currently use only the CPU. The best solution is to do it on *both* CPU and GPU, because doing the sums twice is less costly than passing the results between processors.

Ideally, the CPU will skin only the collision model (where needed) and any shadowcasting meshes, because it needs to know those results for other purposes. The GPU will skin the shadow mesh and the remaining visible meshes, which the CPU doesn't care about.