Visions of Escher

Available now on fxhash

‘Eye’, by M.C. Escher

In 1946 the artist M.C. Escher created the mezzotint ‘Eye’, a rendering of his own eye as reflected in an extremely convex mirror. Although he liked the technique, the process of creating each mezzotint was slow, and as a result he only created eight mezzotints over the course of his career.

The image is striking: a highly-detailed rendering of the human eye, complete with reflections, and there, at the centre of the eye, is a skull: a reminder that “we are all confronted with death whether we like it or not”, and a fulfilment of what Escher saw as a need to portray an observer reflected in the convex mirror of the eye.

‘Visions of Escher’ by Mandy Brigwell

I decided to recreate ‘Eye’ generatively, my intention being to produce an infinite range of pieces based on Escher's painstakingly-constructed original. The iris, pupil, skull and eyelid would be generated using random processes, shaped with the aid of probabilities and limited colour palettes. Layers would be built up over a sequence of three hundred and sixty frames, a number chosen for no reason other than it was a pleasing multiple of sixty, and also the number of degrees in a circle.


I began working on the provisionally-titled ‘Eye’ on the 17th of April, and development continued, wedged amongst work and life, until the beginning of May. The shift from a hastily-sketched out starting point to the final piece is quite dramatic when viewed on a single page. I maintained a Twitter thread of my work in progress, available here, and for the first time ever documented my ideas and creative process.

‘Visions of Escher’ is a little different to my previous work, though it has much in common thematically and algorithmically. Nevertheless, the subject matter is more organic than subejcts to which I'm usually drawn, and decisions and compromises have been made regarding how realistic the rendition, and how naturalistic colour palettes and shading should be.

A starting point: nothing more than concentric circles, but the real work is there in the code: layers, variables and rendering loops are all waiting to be shaped.

The beginnings of an iris. Pupil diameter and iris diameter are variable, and striations extend from the centre outwards.

Some shading is applied using weighted random numbers.

Further shading is applied using translucent sections of arc.

Further shading is added, and tempered slightly, but the surrounding sclera gives the eye an unintended feel.

Striations are added by weighting the random numbers that generate the iris. The central portion of the iris needs blending, however.

Darkening is added, and the probability-based render of the skull is added.

Rendering is improved further.

Further Details

Having completed the iris, pupils and made good progress with the sclera, I found the eyelids took a little work. The right shape eluded me, and I took time away from the computer to sketch some eyes, paying particular attention to the shape of the lid and its relation to the iris. I'd have loved to generatively-create eyelid shapes, but ultimately I ended up overlaying a grid on my sketches and coming up with some vector-based shapes to define four eyelid possiblities. I added a little randomness to the points, and flipped them to create eight basic variations, with a range of sizing options.

The skull is formed from elliptical fields of random dots, shaped by repeatedly multiplying random numbers to maintain a kind of probability cloud. Darker colours are chosen for the skull: Escher's original is quite subtle; the grinning face of death is quite able to be overlooked at first glance. Some of my colour schemes hide death away in the shadows, though there are others that allow it full reign of the pupil's domain.

I also wanted to work further on the sclera: the white of the eye is hardly white at all, but whilst I didn't want to simply shade it, I also didn't want to get into the minute detail of blood vessels and natural colours. Perlin noise, stretched appropriately, gave me enough of a feel for blood vessels, without distracting too much from the colours of the iris, which I felt were the main attraction of the piece.

Final touches

My previous piece, The Last Days of Fire and Steel, was something of a multimedia extravaganza, with titles, quotes, story background and a soundtrack. Whilst I wanted to maintain the presentation aspects with this piece, I didn't feel it supported a narrative or a soundtrack. A title screen, quote and informative render progress was added, though, and a number of rare features are lurking in the code: A 'dark mode', which showcases the beautiful iris striations on a black background; an extreme zoom which allows the iris to fill the entire viewport; a version with a curious striated effect to the upper-right specular reflection. Coupled with the varying eyelid styles and range of colour palettes, there's enough variation here to support a couple of hundred editions. A programmer's heart is drawn to powers of two, so two hundred and fifty-six editions it is…


The completion of a piece is always cause for celebration, but for me it always brings a tinge of doubt. Will the piece be accepted by the world at large? What emotion will it instil in the potential viewer? Will there be approval or abhorrence? The worst one can imagine is to be completely ignored, but without the risk of release there is no possibility of any other interaction. As ever, time will tell…


Visions of Escher is available on fxhash.

Source Code

Source code is available on github.


A twitter feed of the creation process is available here.