I was trying to pass my light params as an array of uniform structures. This it seems is supported by shader compiler/linker as I wasn’t getting any errors when trying to retrieve the uniform locations, but it was causing all kinds of undefined behavior. Breaking up the array of structures into separate arrays for each member has solved all of the instability problems. Is this a known issue? I remember I had a similar problem with GLSL years ago that eventually lead me to use Cg.