Skip to main content

Interaction

Portrait morph

WebGL hover image transition

Client · OGL

Live preview

Interact with the component below — same behavior as on the About page.

Portrait morph demo

Summary

A grayscale portrait container that morphs between two images on hover using a custom WebGL fragment shader. The transition origin follows the cursor entry point, ripple distortion runs along the wipe edge, and progress eases in and out with spring-like interpolation.

  • Custom GLSL wipe with fbm noise and edge ripple
  • Transition origin and direction follow pointer entry
  • ResizeObserver keeps canvas resolution in sync
  • Static fallback image while textures load

Add to your project

Loading install instructions…

Let’s connect

I’m always open to discussing new projects, creative ideas, or opportunities to be part of your visions. Just reach out!

2026 © Built with Next.js

By Love ❤️