- Home /
Can't dynamic batch because "objects are affected by different forward lights"
I have a few hundred low vertex objects (under 150 vertices) that I'm trying to get to batch. They are instantiated at runtime from the same base object, have the same material using the standard shader with only an albedo and normal map, not skinned or transparent, and not casting or receiving dynamic shadows. They should be able to batch, but only about 1/3 of them do.
The frame debugger gives me two reasons why they won't batch: "Dynamic Batching is turned off in Player Settings or is disabled temporarily in the current context to avoid z-fighting" and "Objects are affected by different forward lights." But there's only one light in the scene and there's no potential for z-fighting. If I expand the light to fill the entire scene then none of the objects will batch and they all give the same z-fighting reason why.
Another weird thing, even if the light is off I still have over 200 draw calls. But if I disable the gameobject containing the light I cut that number in half. Why would a gameobject with a disabled light component be increasing the number of draw calls?
My target platform is Android.
I also get the reason "object is affected by multiple forward lights" for why they can't batch, which is ridiculous for a scene with only one total light. Does "unlit" count as being lit by a different light? Does the renderer simply render all these objects in an inefficient order? There's only one light! If the lit and unlit objects can't batch together then why doesn't it simply batch the two groups separately ins$$anonymous$$d of constantly breaking batching by switching back and forth?
Did you ever find an answer to this? It's the only place on google I can find any mention of this topic :/