Силовое поле
Телеграм - Три мема внутривенно
Inktober День 31: Ферма
Завершающая картинка этого Инктобера,
Всем спасибо за вашу поддержку и интерес!)
Ответ zhopkaOgurchika в «Как рождаются мемы»
чуть более прилизанная версия, если кому надо на схоронить
Ответ на пост «Как рождаются мемы»
ТС хотел скрыть от нас истинную причину происшествия!
Эффект силового поля (шейдер)
Небольшая практика в эффектиках и шейдерах под Unity. Хотелось мне сделать эффект силового поля, в которое попадают что-либо и провоцирует световое пятно, растекающееся по поверхности. Сказано - сделано :)
Немношко матана для любителей: сфера - это обычный меш, эффектом френеля симулируем "энергетическое" поле, с прозрачностью в зависимости от взаимного направления нормали вертекса и направления зрения камеры.
отдаем всё это добро в пиксельный шейдер, где считаем возвращаемый цвет пикселя (на всякий случай добавил ещё и текстуру для поля, какие-нить флуктуации там добавить о.О
тут немношко вкусовщины... Смешение слоёв аддитивом, поэтому перемножение и цвета и альфы влияет на финальное изображение, а именно на переход от прозрачки к непрозрачки. Тут на вкус и цвет, как говорится, особенно поэкономить на этой функции не удастся, так как в любом случае придётся что-то на что-то перемножать, но под себя "поколдовать" можно попробовать.
Ну и сам эффект растекающейся энергетической вспышки
_InpactPoint - это вектор направления попадания (для отрисовки пятна в нужной стороне, передавать его придётся с помощью скрипта(конечное, минус начальное, ну и привести к единичке). Подсказочка:
Нормаль берём из вертекса.
_HitOverlayArea - регулирует величину пятна (плавность пятна зависит от полигонажа сферы, потому что работаем с нормалями вертексов. Тут немношко экономии - нормали берём в вертексном шейдере. Но если экономить не надо - можно нормаль посчитать и во фрагменте, тогда никаких проблем с размерами пятна не будет).
_HitOverlayValue - сила пятна.
_HitColor - собственно цвет для пятна.
Цвет самого поля задается через _TintColor и сохраняется в переменную col (код был выше).
Собственно сам инспектор всего этого добра, для тех, кто не хочет математики, а подёргать ползунки:
Надеюсь, что подписульки понятны лучше, чем названия переменных :)