Вот немного более наглядно про VSM:
PCF, VSM8, VSM16, VSM32.
Для тех, кто в танке:
PCF делает фильтрацию при применении, т.е. тень вычисляется каждый кадр на каждый пиксель в нескольких соседних точках, получается типа фильтрованная.
VSM позволяет применять любой обычный блюр к текстуре тени ещё до её наложения. В плейканвасе мы применяем гауссиан блюр, можно легко выбрать его ширину. Т.к. блюр не обязан применяться каждый кадр, VSM отлично работает, когда тень не нужно обновлять постоянно (это движок также позволяет настроить). Например, если персонаж бежит под непересекающимися фонарями, можно обновлять только тот, под которым он сейчас, другие будут просто накладывать тень довольно дёшево. Минус - VSM больше занимают видеопамяти.
Технические детали:
VSM8 это на самом деле 16-битный VSM, где 2 канала упакованы в RG и BA восьмибитной текстуры соответственно. Для многих задач прекрасно хватает, работает везде.
VSM16 это уже 16-битный EVSM, засчёт экспоненты выше точность, вблизи кастеров особенно. Запаковать в ргба8 его не вышло, так что требует честных халф-флоатов (на ряде мобилок не поддерживаются), т.к. там нужна нормальная целая/дробная часть.
VSM32 это 32-битный EVSM, круче уже низя, весит тоже прилично, требует поддержки рендера в флоат)