Я тут недавно тоже свое освещение пилил для 2D topdown игры. У меня правда немного замудреней подход. Я вычисляю irradiance через трассировку в SDF и использую кэш из экранных проб чтобы уменьшить нагрузку. Это позволяет считать вторичный отраженный свет. Все никак не дойдут руки написать статью: https://www.youtube.com/watch?v=TNPthGbYd3k&feature=youtu.be
Я тут недавно тоже свое освещение пилил для 2D topdown игры. У меня правда немного замудреней подход. Я вычисляю irradiance через трассировку в SDF и использую кэш из экранных проб чтобы уменьшить нагрузку. Это позволяет считать вторичный отраженный свет. Все никак не дойдут руки написать статью: https://www.youtube.com/watch?v=TNPthGbYd3k&feature=youtu.be
Исходники на Rust/WGPU/WGSL лежат здесь если интересно: https://github.com/zaycev/bevy-magic-light-2d/tree/zaycev/dev