highfidelity/hifi — pull request #3601 by ZappoMan (2014-10-16 00:11:59+00:00)
Title: Implement "segregation" of mesh groups

Model::renderMeshes() was constantly switching shader programs between every mesh of a model. This causes a fairly significant performance hit on models with lots of sub-meshes (like the Westfield model). This change does a preprocessing pass on the meshes of the model geometry and stores a list of mesh types which require each different shader type. renderMeshes() is changed to support doing a single group pass at once only changing the shader program once per group type. This makes the Westfield model jump from 15fps to 55+fps on my low end MBP.