Hardware Skinning

Just wondering, why aren’t you doing the transform directly, e.g.

gl_Position = p3d_ViewProjectionMatrix * transform * p3d_Vertex;

As rdb already mentioned, if you use instancing, all models will play the same animation. To support different animations, panda would have to support that first. To combine the instancing and hardware skinning, I guess you want something like that:

gl_Position = p3d_ViewProjectionMatrix * transform * matrix * p3d_Vertex;

whereas matrix is the transform matrix.

Keep in mind that if you use p3d_ModelViewProjectionMatrix, this also includes the base models transform, rotation, and scale. Most likely you don’t want that if you pass a custom transform, so you should use p3d_ViewProjectionMatrix.