Hey everyone, i created a scene with no light sources to enhance performance. Ambient light is set to black. All objects have self-illuminating materials - shader is Self-Illumin/Diffuse. In Unity everything looks just fine. Once built and installed on the iPhone all objects look overbright as if ambient light is set to almost white. Any ideas on this? Many thanks in advance!
I'm not sure about the use of self illumination shaders on iPhone, but perhaps you could solve your problem by just reverting your models to the normal Diffuse shader, and turn up the ambient light.
Ambient light is not the same as dynamic scene lights, so it won't incur the performance hit that dynamic scene lights do.
IMHO Self-ilumination are a bit bright for faking light/shadow too, have you tried baked illumination and lightmap shaders? It'll surely give a nice illumination to the scene.
I don't know how will performance will be affected though.
A good way to do scenes without light sources is to use vertex colors for shading on objects, in combination with a vertex color shader, such as the kind that you normally use on particles.
Edit: Or see shaders here.
I'd like to answer your actual question about ambient light, but I don't know. I've been testing for a while now, and can't reproduce your problem. However, considering everyone else has just suggested an alternate solution, I'll do the same. :)
If you don't have any lights in the scene, then the idea of "self illumination" is meaningless. All you're doing is displaying a texture. The only reason you might want to use the shader you did is to use the same texture with various lightmaps. However, because you would need a different lightmap for each material, it would be a performance benefit to just bake the light into the various textures themselves (unless you've completely run out of memory and need to use lower-res textures for the lightmaps). As such, all you actually need is this shader, the fastest possible.
Of course, as an alternative to multiple lit versions of the texture, if you have enough vertices for it to look good, you ought to use the "VertexColorUnlit" shader that Eric posted, because then all of the various vertex-lightmapped versions of your texture can be drawn in a single pass.