Pular para o conteúdo
Distorcer · TécnicaIniciante

Redemoinho, compressão e lente

Girar ou escalar as coordenadas pela distância até um centro, para a imagem torcer, afundar ou inchar.

UVTempoSuperfícieTela / pós

Cards

Um exemplo ao vivo para ajustar, aprender e copiar.

Como funciona

Essas três distorções são uma receita só em coordenadas polares. Pegue a posição do pixel em volta de um centro como um raio e um ângulo, mude um dos dois por uma quantidade que depende do raio, e leia a imagem no resultado.

vec2 p = uv - center;
float r = length(p);
float a = atan(p.y, p.x);
float amount = 1.0 - smoothstep(0.0, reach, r); // 1 no centro, 0 na borda do efeito
  • Redemoinho (swirl) soma ao ângulo: a += twist * amount. Pontos perto do centro giram muito, pontos na borda nada, então linhas retas se curvam em espirais.
  • Compressão (pinch) escala o raio onde a leitura acontece, r *= 1.0 + strength * amount com strength acima de 0: cada pixel perto do centro mostra o que está mais para fora, então a imagem parece sugada para o meio.
  • Lente (bulge) é a mesma linha com strength abaixo de 0 (e acima de -1): o meio é lido de uma área menor e parece ampliado, como numa lupa ou numa gota d’água.

Um redemoinho pode ficar na forma polar, como faz o Redemoinho d’água: ele desenha os braços direto do ângulo girado, sem voltar para x e y. Para entortar uma textura ou a tela, transforme o par polar de volta numa coordenada antes: center + r * vec2(cos(a), sin(a)), e amostre ali.

A queda decide o visual

A curva de amount é uma função de modelagem, e importa mais do que a torção. Uma queda linear dá uma espiral uniforme, uma ao quadrado concentra o giro perto do olho, e um smoothstep deixa a borda do efeito invisível. Sem uma queda que chegue exatamente a 0, os pixels de fora também se deslocam e a borda do efeito aparece como uma emenda.

Superfície e tela

Numa superfície, elas trabalham num quad com UV ou na textura do objeto. Como passada de pós-processamento de tela, leem o quadro, que é como um buraco negro entorta o que está atrás dele ou um portal faz a sala girar; isso exige a cena num render target antes, como qualquer passada de pós.

Leitura complementar