I have a GLSL shader that handles up to 8 lights (all the usual types). All lights are switchable between per vertex and per fragment. Of course, the latter is quite a bit slower.
What I cannot explain is this:
At the moment I use only one spotlight with maybe not more than 80000 triangles to be rendered. My PC is a Q6600 quad core and opengl stuff is done by the 4th core. GPU is 8800 GT. Switching from per vertex to per fragment and vice versa only requires setting a uniform variable. Otherwise the CPU does the same thing.
But if I switch the light to per fragment, according to Task Manager, the load on the 4th CPU core is increased by at least 20%. Switching the light back to per vertex decreases it by the same 20%.
Why does the CPU have to work more? Theoretically I only increased the load on the GPU.
I would appreciate if someone had an explanation.