Привет!
Кто знает, как сделать эффект волны на картинке?
Хочу во время взрыва сделать скриншот экрана, наложить на него круговой distortion с увеличением радиуса, а поверх уже рисовать частички взрыва.
Все что смог найти в сети это distortion через grabpass, что не подходит, так как ресурсоемко для мобилок.
А может это называется Displacement?
Может кто-то идею понимает, как это делается?
Спасибо!
А что за проект? Если 2д, то достаточно будет один раз отрендерить тот кусок фона, который непосредственно под эффектом взрыва, а затем передать в шейдер эффекта через SetTexture. Дальше его можно искажать так же, как в варианте с GrabPass.
Все динамические объекты надо будет рендерить поверх этого эффекта, иначе при заходе в его область они будут исчезать, ведь в момент рендера фона их там не было.
BooTheJudge
Ага, 2д.
Я понял, сделать скрин, наложить шейдер.
Сейчас я не понимаю по какой формуле в шейдере делать сдвиг текстурных координат относительно нормал карты.
вот такая карта:
по идее должно получиться красивое искажение по кругу, но не могу сообразить че там прибавлять к uv координатам
Vogd2
> по какой формуле
время, чем больше время, тем больше волна. Волна идёт от центра. 1 волна находится в UV от (0,0)-(1,1). Две волны (двух, трех, четырех - волновая..) будет соответственно (0,0)-(2..4, 2..4). В положительную или отрицательную особо значения не имеет.
Волна должна исходить из центра, то есть например точка 100,100 это центр
тогда:
length = 1; //длина самой волны (длина квадрата, quad) x1 = 100-(length/2)*time; y1 = 100-(length/2)*time; x2 = 100+(length/2)*time; y2 = 100+(length/2)*time;
то есть x2-x1 = length.
uv1 и uv2 думаю расчитаете сами, понятно должно быть. Тот же принцип, только от 0 до n (где n - количество волн), если волна всегда только 1, то будет всегда от 0-1.
В шейдере придётся накладывать normal из текстуры и если он больше 0, то именно его и брать. Ну или так
normal = normalize( texture(NormalTexture, NormalUV)+ texture(normalMap, uv));
Salamandr
Ага, вроде понял
Сдвинуть по нормали получилось, дальше буду анимировать саму волну, это уже понятней
Попробовал сделать GUI - кнопку таким образом. :))
ПылеВлагоЗащищеннаяКнопка