Organic looks, fancy dissolves or liquid surfaces. Those looks can be achieved by shader UV distortion. I am going to show you how this is done with the example of a simple caustics projector effect, like this:

This is a projector, projecting a distorted map onto the geometry. A perfect way to simulate caustics for example. The jump in the sequence is due to the looping. I did not bother to cut it properly ;), the shader is smooth of course.

Okay, so effectively, what you do is to use some values (a noise) to shift UV coordinates to create an impression of an image distortion.

So you need to change the UVs for a given texture like so:

The crucial part is this:

The output from the Panning and the Noise is combined in a Lerp (this favors either A or B depending on T. In this particular example, the distortion intensity defines the strength of the Noise compared to the Panning. You may also implement the Intensity somewhere else, for example in the Noise Contrast.

Panning moves the UV coordinates, meaning they slide across the canvas in X and Y direction, depending on what you set. Like so, but ideally loopable:

Then you need to multiply this panning with some Noise (Simple Noise Node), and you get the nice distortion:

The last part, in this specific shader is a mask, that crop away the nasty corners, but it is ultimately not needed. I thought it be nice though:

And here the full shader:

You may download the shader and the used texture in our labs archive.

Thanks for reading!

Leave a comment