Gradient Ascent – Generative Space Posters

My latest generative work explores space landscapes and dithering effects to generate retro style sci-fi posters. It’s also a spiritual successor to one of my most popular fxhash releases “Dithered Branches” from over 6 months ago! In this post I will talk about the concept and features including some of my favorite results. You can see all 300 iterations on fxhash.

Gradient Ascent on fxhash

Gradient Ascent Set Preview

Continue reading to learn more about Gradient Ascent…

Dithered Planets

The story begins late last year, on December 25th. I released Dithered Branches, one of my most popular generative works on fxhash. In that set I was inspired to simulate a low resolution 80s style dot matrix printing combined with water color painting and paper texture. You can read all about that project in another post I wrote.

Dithered Branches #102

Most of the results for Dithered Branches include a tree as the main subject but only 19 of 256 have no tree but instead a rocky landscape. Those ended up being some of my favorites.

Dithered Branches #156

This is also a continued evolution of my first release on fxhash “Aliendscapes”

Aliendscapes #51 – my first project on fxhash

So that’s where my inspiration began as developed these minimal dithered landscapes into a new project. I have been tinkering with this for most of the year but really gained momentum when a friend asked me to make some art for her show in Austin Texas. I produced a few limited edition poster size prints based on my current work in progress.

“Party Planets” – Full poster size prototypes for Gradient Ascent

As I continued working to improve the code and experiment with new ideas, I eventually distilled everything into the art generator I released on fxhash called “Gradient Ascent.”

Scene Generation

There are only a few components used to build the scene including mountains, clouds, planets, meteors, and the ocean. The “View” feature decides the overall scene type and primary components. Most appear in a poster style aspect ratio with occasional landscape and square variations.

The color palette is also fully generative. It mostly works by picking a main hue and building around that. There are some extra color features that constrain the palette like “Vivid”, “Minimal”, and “Grayscale”. There is special code for gradients which I used on almost everything because they look amazing when dithered.

Of all the views, the most common view is “Ocean”. This shows everything with moons above mountains reflected in an expansive sea using a custom programmed reflection system.

Gradient Ascent #37 – ocean view

A less common variant removes the ocean to focus on the rocky mountainous landscape using an algorithm I have been developing across many works. This includes a new shadow system that aligns with planet shading and sun position to create a more visually cohesive scene.

Gradient Ascent #53 – mountains + square

The rarest possible view does not have mountains at all, but is still terrestrial with clouds and atmosphere. These are some of the most unique results, with only 5 like this in the entire set. This one also has “Vivid” colors that amplify the saturation and gradients.

Gradient Ascent #4 – sky + vivid

Removing the atmosphere leaves us with just planets, nebulas, and stars, the perfect ingredients to generate really cool space scenes. These have extra large planets and more nebulas that were custom programmed for this project to provide a rich backdrop.

Gradient Ascent #291 – space

Post Processing

After generating a scene the dithering effect and other types of post processing are applied. The image can also be viewed in high definition without post processing by clicking the mouse. Advanced user commands are provided to fully control the output size.

Gradient Ascent Preview – without post processing

As a cool bonus feature, any image can be dropped into the frame to apply the same effect. This is fun to play around with because each iteration has it’s own unique style. It’s definitely something I want to experiment more with in future projects.

Starry Night with Gradient Ascent post processing


The dithering system draws scenes by printing colored dots to emulate a unique retro printing effect. This is not based on a real printer but more like a bespoke creation. It is all custom coded in vanilla JavaScript using the 2D canvas API. I implemented several different types of post processing including diffusion, ordered, halftone, pixel and LCD.

Diffusion dithering is the most common, which uses a Floyd–Steinberg style algorithm also known as error diffusion. This is similar to the system used in “Dithered Branches.” I love how it creates interesting artifacts similar to cellular automaton. Colors can also be limited to a few saturated elements with the “Minimal” color feature.

Gradient Ascent #1 – diffusion dithering, minimal color

Ordered dithering works a bit similar to diffusion but using a Bayer thresholding matrix. This creates a visual repeated pattern in the output and was used in some early computer games.

Gradient Ascent #101 – ordered dithering, night meteors

Halftone dithering works like traditional newspapers, by changing the size of dots to control the brightness. I also used halftone dithering in Astronomic Comics.

Gradient Ascent #70 – halftone printing, minimal color

Another post processing style I experimented with is LCD which mimics the tiny sub elements in pixels when magnified. These remind me of watching cartoons on TV.

Gradient Ascent #84 – LCD dithering

These have interesting detail when viewed up close, so here it is again magnified in HD…

Gradient Ascent #84 – detail

Finally we have pixel dithering which is the most rare. It works a post processing effect to pixelate the image into square shaped pixels with some randomness in position.

Gradient Ascent #144 – pixel dithering, grayscale

Rare Features

There are several rare features that can combine in interesting ways. One of my favorite results is this black and white halftone on green paper.

Gradient Ascent #277 – halftone black and white

Only 12 iterations in the set ended up using the “Inverted” feature which completely inverts all colors in the output. It is not the most complex operation but often has impressive results so I like to include it as a special feature in most of my releases.

Gradient Ascent #261 – inverted

One of the rarest features is the glitch effect, only applied to 12 in the set. It introduces more glitching to the algorithm and even allows the image to wrap around the sides.

Gradient Ascent #110 – glitch

The chroma effect breaks up each pixel into red, green, and blue components and offsets them slightly to produce a chromatic aberration effect.

Gradient Ascent #77 – chroma effect on yellow paper

Some results include “Meteors” and space scene can have larger “Comets”.

Gradient Ascent #217 – space comets

There are several different resolutions possible, but only 2 resulted in “Potato” which is the lowest. So of course this ended up being one of my favorites in the set.

Gradient Ascent #275 – potato resolution


Gradient Ascent is now closed out at 300 editions on fxhash. Thanks to everyone who supported this project. They can still be collected on the secondary market.

To celebrate I picked 25 of the owners to receive a physical postcard. This will be my fourth postcard drop for fxhash, 100 unique postcards in total. I have a lot of fun sending these out to people around the world.

Gradient Ascent Postcards

Wrap Up

That’s all I have for now, thank you for reading and supporting my work! Follow me on twitter for latest updates on everything I do.

I’ll leave you with one of of my first posts showing off the concept from May 11. I ended up making many changes like removing the asemic writing but this is where it started…

This entry was posted in Generative and tagged , , . Bookmark the permalink.

Leave A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.