Unity3D. Тряска R канала.
Всем доброго времени суток!
В первую очередь хочется поблагодарить всех кто сыграл в демку моей игры и оставил свои отзывы. В комментариях меня попросили объяснить как я сделал эффект проигрывания в своей игре.
Unity package с содержимым этого урока: https://drive.google.com/open?id=0ByezjEHgcxecRXRCbnpSSGhwQm...
Советую почитать про шейдеры и их устройство.
Ну что же, приступим. Для начала создадим новый шейдер постэффекта: Create->Shader->ImageEffectShader.
Называем его как хотим
Открываем его и видим стандартную заготовку, которая инвертирует цвет.
Что же мы будем делать? У текстуры которая рендерит нам камера, у каждого пикселя смещать его красную составляющую.
Добавляем параметры смещения по обоим координатам и обзовём их _OffsetX и _OffsetY.
Перед функцией самого шейдера указываем переменные в которые будут идти значения из параметров. И в саму функцию добавляем такие строки:
Создаём скрипт который будет применять данный эффект на нашу камеру.
В него добавляем такие строки
Кидаем этот скрипт на камеру. Изменяя значения offsetX и offsetY, наблюдаем такой результат.
Создаём новый скрипт, который будет контролировать саму тряску и кидаем его на камеру.
Создадим кнопку, добавим ей вызов метода SetTimer и укажем сколько времени должен длится эффект. Запускаем, нажимаем на кнопку и наслаждаемся результатом. На UI элементах наш эффект не будет действовать если у Canvas режим рендера будет Overlay, поскольку он будет отрендерен после всех камер на сцене.
Так же такой эффект можно попробовать и с другими каналами RGB.
Благодарю за внимание!










Лайк за шейдеры =)