-
Здравствуйте. Как сделать эффект горячего воздуха на плоском изображении?
-
Так же как и в 3D. шейдерами проще всего.
-
В RenderMonkey есть пример Reflection-Refraction там искажается изображение когда камера под водой. Для огня надо юзать тотже эффект.
-
Я такое на GLSL делал поделится?
-
> [3] Jkot © (04.07.07 16:41)
Делись!
-
VP varying vec2 TexCoord;
void main(void)
FP
uniform sampler2D BaseTex;
uniform sampler2D NormalTex;
uniform sampler2D AlphaTex;
uniform vec2 Phase;
uniform float Size;
uniform float Intensity;
varying vec2 TexCoord;
void main(void)
Phase - сдвиг для текстуры преломления, просто изменяеш x,y здесь и создеётся эффект что пар движется Intensity- интенсивность Size -Scale для текстуры преломления. BaseTex - здесь нужно передать то что по зади спрайта изображающего пар тоесть рендер в текстуру. NormalTex - текстура для прелоления R обозначает сдвиг по x G по Y, впринципе подходят Dot текстуры для воды в общем клавное что-бы было похоже на волны на воде и тайлёное. AlphaTex - текстура из которой берётся R компонента как альфа текстура. Альфа должна быть 0 по краям а то будут лаги. уфф... в общем всё =)
-
-
>Что такое "на плоском изображении"? Чистый софтвер?
На плоском - значит не в 3D :) И чистый софтвер не цель, но ключ к пониманию. Интересует именно алгоритмическая часть, чтобы её можно было реализовать на обычных битмапах.
К сожалению, в [5] я вижу, что задействован какой-то алгоритм искажения, но пока не могу его понять.
Более всего пока подходит [6]. В пресете Reflective Text вижу задатки искажений. Наклепал плавный рельеф - в общем, похоже. Если других идей/способов не предложат, то остановлюсь на этом.
-
> К сожалению, в [5] я вижу, что задействован какой-то алгоритм искажения, но пока не могу его понять.
ключ к пониманию вот эта строка:
Color = texture2D(BaseTex,TexCoord + Alpha * ( normalize ( texture2D(NormalTex,(TexCoord * Size) + Phase ) ).xy*Intensity-Intensity/3) );
Выбрасываем доп. функции.
texture2D(BaseTex,TexCoord +normalize ( texture2D(NormalTex,(TexCoord)) ).xy*Intensity);
Получается BaseTex нормальный задний фон TexCoord нормальные координаты а кним добавняется r и g ( как x и y) из текстуры преломления..
-
И [5], и [6] - один и тот же бамп-мэппинг (bump-mapping): Dst[x,y] = Src[x + Bump[x,y].x, y + Bump[x,y].y] В [5] модифицируются текстурные координаты, а в [6] - непосредственно пиксели картинки. Аппаратно реализовать можно и без шейдеров. См. пример BumpUnderwater (или BumpWaves) из DX8 SDK ( http://www.clootie.ru ).
-
-
ИМХО нет. Есть замечание, что слишком дискретный эффект.
-
Дискретный - всмысле, можно рёбра посчитать?
-
> [12] Жидкое стекло © (05.07.07 20:43)
У меня возникло ощущение, что не плавный эффект.
-
Я не понял ты мой шейдер юзал?
-
> [14] Jkot © (06.07.07 05:43)
Врядли. скорее fastlib.
-
На тёмном фоне плохо видно, что там за эффект вообще. Лучше бы машину в профиль поставить (вид сбоку). Дискретный - скорее пикселизованный, что ли, или "блочный"... видимо, артефакты jpeg вылезают. Попытался состряпать карту рельефа на собственном генераторе текстур: http://slil.ru/24600602(67 кб, rar) Сохранить карту рельефа - переключиться на эффект "Distort" + контекстное меню у картинки.
|