На данный момент система освещения Пьера поддерживает точечные источники света. У них есть несколько показателей — позиция, радиус, цвет и интенсивность. Для каждого источника света на экране разработчик рисует квадрат, центр которого совпадает с самим источникам, а длина его сторон равна 2r (r — радиус освещённой области). Далее он использует шейдер, чтобы определить цвет каждого пикселя в квадрате.
Когда них*я не понял, но выглядит потрясно!
Когда все понял и понял, что здесь описаны очевидные вещи.
Но да - гифки прикольные.
Да не выглядит оно потрясно. У него очень острые тени, будто вырезанные ножницами. В реальной жизни они выглядят куда мягче. Посмотрите на пример Олега пару сообщениями ниже.
Простым языком - чтобы свет не выглядел кружком поверх стен, расчитывается какие его части надо отсечь.
Подобное использовалось в старой игрушке NOX
Кстати, вот пример отличного точечного 2d-освещения на пиксельных шейдерах:
https://www.shadertoy.com/view/4dfXDn
Когда делаешь тень/видимость нужно думать от обратного, надо строить не многоугольник видимости, а четырехугольники невидимости, сложность твоих расчетов уменьшится до О(n), никаких рейкастов, никаких сортировок, просто по информации о сегментах составляешь большую мешку из экстраполированных отрезков в бесконечность и красишь, не закрашенная область и будет областью видимости