Тоесть Z-буфер не очищать после первого прохода, только запрещать в него запись. Затем для каждого источника света рисовать шарик и проверять, где он не прошел тест глубины, тогда получим силуэт реально освещенной части объекта, находящийся в буфере трафарета. А затем уже рисуем экранный квад с отсечением по трафарету. Так?
|
типа того, только не просто где шарик не прошёл тест глубины, а именно где только одной стороной повернутые фейсы прошли, а другой не прошли - это будет часть именно внутри шарика.
Работает все очень шустро - в любом месте 60 фпс.
|
ура!
для дебага можно тупо один цвет вывести в шейдере лайта - сразу будет видно на каких пикселях считается лайт, убедиться что всё как надо.