Pixel Bender filter «Normal Mapping» для Flash
Собственно решил изучить Pixel Bender. Быстро попробовав различные математические формулы, решил попробовать сделать что нибудь более крутое. Как раз на одном из моих «родных» форумах, обсуждали написание различных пиксельных шейдеров. Не без помощи одного из «продвинутых» участников форума, я смог написать этот шейдер. Давнишняя моя мечта на самом деле. Пример+исходник под катом.
Свет следует за мышкой:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии (11)
А почему говоришь тормозной? Вроде ж шустро отсвечивает.
Понятно, что точечный (omni) источник света ты заменил направленным (directional), но зачем его задавать через угол?
cos() и sin() считает для каждого пиксела, хотя они не меняются.
Почему бы этот лайтвектор не сделать параметром?
Один раз посчитал в as3 и используешь.
Вот тут, если лайтвектор нормализованный, можно заменить dot на умножение.
Теоретически, выбрасываем две нормализации и деление.
Не факт, но может будет быстрее.
Остальное не смотрел.
параллакс мэппинг
бамп мэппинг (там текстура «растед стил» так вообще зачетно выглядит)
Проще поработать с олдскульным ColorMatrixFilter.
Наши старенькие примеры:
blog.alternativaplatform.com/ru/2007/12/26/normal-mapping/
blog.alternativaplatform.com/ru/2007/12/26/normal-mapping-2/
blog.alternativaplatform.com/ru/2007/12/27/parallax-mapping/
blog.alternativaplatform.com/ru/2007/12/30/spot-normal-mapping/
blog.alternativaplatform.com/ru/2008/01/04/character-parallax/
Исходников под рукой, к сожалению, нет.
wonderfl.net/c/hrob
метод calculate() в конце