Blenderplayer seems to be slower when using Texture Coordinates?

So I tested UPBGE’s Action Actuator with a rig I made for a Suzanne.

I then created a test material that has a standard UV Grid mapped to reflection coordinates from a Texture Coordinate node which then passes into a Mapping node to scale up the texture, then it passes into an Emission shader to make it shadeless.

I then set everything up so the ‘frame’ property went to zero after passing a certain frame where the animation would end. The frame property climbs up, so this makes the animation cyclic when set to zero at the end.

I noticed that when I started the player normally, the test was 60FPS. But in the external player (Blenderplayer), it was only 47FPS.

A few things to note:

  • Suzanne does not have too much geometry for an armature to slow the player down. Emission also doesn’t slow down the player either. Glass BDSF is more intense, so this will slow it, but Emission doesn’t.

  • Maybe the Reflection texture coordinates are what is causing it, but I am not using SSRs or ambient occlusion, just a simple UV Grid image texture, which should be very easy on the player.

Is this a bug in the Blenderplayer? Or a minor bug in the Texture Coordinates when paired with a Mapping node? I’m not sure exactly, since it is a very light shader material…

I then tested another object in another file with another animation, and this made no impact. I also had made the object low-poly which allowed a solid 60FPS. But Suzanne is also low-poly. Weird!

Can anyone tell me what I am encountering? It sounds rather like Blenderplayer uses more RAM than the internal player, despite my silicon Mac being capable of running the player at more than 60FPS.