I think it's time to replace the frob material stages with a shader (probably add a param to the existing ambient shader) There is more than one angle to this issue but I am mainly concerned about too many stages in materials that are somewhat taxing in terms of performance. Imagine rendering of 3K surfaces interacting with 3 lights in average and using materials with 7 stages in average. The renderer loops through every stage for every surface making it ~ 20K checks per loop.