On older hardware, you would have a shader that only calculated a single light. Then for each light, you would draw the object using that same shader (and additively blend the 2nd and onwards lights).
Why do people say the geometry has to get ''re-drawn'' for each light in the forward rendering approach?
After this, people optimized this technique to only require a single pass by having n different shaders that worked for n different lights. If an object was lit by 5 lights, you'd use the 'Forward5Lights' shader.
Today, you can load thousands of lights into a cbuffer/texture/etc, and then use dynamic branching in your shader to loop through each object's required lights (so we're back to one shader and one pass).
does this mean that deferred shading is obsolete in DirectX11 now?
EDIT:what I mean is - if it was so easy,why do modern game engines use complex GBuffer techniques?