Я в свое время у себя в блоге писал, но читающие говорили что корявенько вышло. Я делал на шейдерах исключительно, выходило красиво. quadengine.blogspot.com/2011/07/2.html
Имхо делать так же как шадоумаппинг, рендерить со стороны источника света, но для 2д нам можно рендерить в текстуру высотой в 1 пиксель (одномерную посути), а значит никакого проседания по филлрейту, ну а геометрия там примитивная.
Да, вот тоже хотел написать об этом.
Вообще вот у меня есть тоже материал по дин. освещению, но публиковать его после этих двух статей уже желание отпало.
Карта векторов направления света это, по сути, результат выполнения оператора градиента (grad) над лайтмэпом. В шейдере можно использовать функции ddx/ddy, которые как раз вычисляют частные производные по x и y пикселя. Скорее всего, это будет быстрее, чем вычисление производных «в лоб», и к тому же немного элегантнее (хотя для двумерной игры скорость исполнения шейдеров не так критична).
Динамическое освещение и неограниченное количество источников произвольной формы в 2D