Batch Rendering in GLSL (3D)

How should I go about getting matrices over to the shader? I can fit up to 256 objects in each batch renderer, but only have a max of 4096 uniforms (I guess this is pretty standard?), If I include a light and camera position, not to mention I’m pretty sure gl_* are taking up slots as well, I don’t have enough room for even one set of matrices.

How do I get around this? I really don’t want to lower the number of objects anymore, passing all of the matrices as varying/in doesn’t sound appealing either, and I can’t send one model/proj/normal matrix per batcher as this doesn’t account for translation/scaling/rotation of each object… :emo:

Any ideas?

Hmm, using instancing and pass this stuff as vertex attributes?
http://ogldev.atspace.co.uk/www/tutorial33/tutorial33.html (random google hit)