Чтобы довести дисторсию изображения до предела, я решил пойти таким путем:
1. На пустом холсте в случайных местах рисовались радиальные градиенты, напоминающие пятна света:
vec2 uv1 = uv-vec2(R1,R2);
float spot1 = (1.0-dot(uv1, uv1))*R3;
vec2 uv2 = uv-vec2(R3,R4);
float spot2 = (1.0-dot(uv2, uv2))*R5;
2. Эти пятна света искажали систему координат:
vec2 uvDist = uv;
uvDist.x += spot1;
uvDist.y += spot2;
vec4 img = texture2D(TXP, uvDist);
Таким образом, на системе координат появлялись своего рода гравитационные центры, изгибающие пространство. В зависимости от размера и интенсивности искажающих пятен можно было получить как более фигуративные, так и совсем абстрактные снимки.
Мне понравилась максимально абстрактная версия этого эффекта. В ней объекты превращались в нечто вроде микроорганизмов в воде, или летающих объектов в небе. Менее интенсивную версию такого эффекта я использовал позже для имитации капель дождя на мокром стекле.
Изображения сняты через фильтры:
▹ mIRO))) / Infadels
▹ mIRO))) / Infadels / B







