Wait. Are we talking about lighting or shadows here? There's a BIG difference in the two subjects. It's quite a breeze to handle most non-global illumination, standard lighting setups (even with multiple sources). Shadows are a whole other story. The flashlight in your example would more than likely be a cone or spot light rather than a directional. Directional lights have no size as they are an infinitely distanced light source with just a normal vector.Flashlight isn't a huge dynamic directional light, it's small. They could even use vertex lighting only.
Additionally, vertex lighting is not going to interpolate well when you have low-poly or even single quad meshes (such as your paper) representing small detail objects. It's simply impractical overall unless you're willing to tessellate the meshes you use just so you can heighten the depth of the effect from vertex lighting.
That depends on how close the camera is going to get to the object. Even half a piece of crumpled loose-leaf could benefit aesthetically from a normal map if it's being held in front of the viewer's face. It's actually not costly at all considering that you'd switch to a non-normal-mapped shader when you were just a few feet away and thus would be unable to discern the details anyhow.Sticking a normal map on a tiny piece of paper isn't smart.
Static lighting/shadows through lightmaps would look and perform fine; however, they would use additional memory, require an additional texture-lookup unless stuffed into a spare texture channel (or baked), and most importantly (once again) they would be less dynamic in realtime.And about that usage of static lighting.. How would it look and with what speed would it go if there would be no lightmaps?
PRT can produce similar performance if you're willing to tessellate your meshes and run them through pre-calculation steps (as you seem to be). The end results of doing so would be significantly improved since you'd get wonderful lighting by-products such as color bleeding as well as retaining the ability to move your light sources around dynamically.Nothing looks better than a very nice lightmap and runs at a good speed.
Actually, it would REDUCE the batch count if you just pass the terrain in one step rather than attempting to dice it up for on-screen triangle performance (which is what I'm fairly sure swiftcoder is referring to).That brute force really is increasing batch count too.
Batching objects together isn't simply a matter of just deciding what triangles to plug where. The objects in the batch have to be related (typically by using the same material/shader) or specially tailored/optimized to be processed together (example above -- atlas mapping).I know. It has always been like that. But we can choose what to split and how.