Маска полутени

Разрабатываю свой движок #ForceEngine на базе ресурсов игр #Thief и #SystemShock2 .
Маска полутени (penumbra mask) - прием оптимизации, который позволил обрабатывать в риалтайме динамические мягкие тени от всех объектов и от каждого источника света на уровне.

7171

А можно подробней расписать процесс, происходящий между шагами? Какое разрешение имеет получившаяся маска? Почему стенка за источником света полностью покрыта маской?

2

Дополнил статью под скриншотами 😉

2

Только сейчас увидел часть коммента про стенку, покрытую маской. Да, это неприятная особенность, возникает из-за угла наклона, под которым камера "смотрит" на стенку. Очень крутые углы вызывают сильные перепады в буфере глубины и алгоритм считает эти перепады разными гранями. Плюс, из-за остроты угла, один сэмпл маски может покрывать всю стену по высоте.
На самом деле, это не супер-критично, потому что эта стенка вся покрыта маской только для этого источника. Для остальных, ситуация, скорее всего, будет другая и они не будут обрабатывать всю стенку целиком. Тогда как без маски, целиком обрабатывались бы все поверхности в переделах досягаемости, каждый раз для каждого источника.

2