The Paradox of Choice

Jeff Palmer550/550

### OVERVIEW ###
This project revisits some of the foundational ideas in my previous work "Above (The Infinite)" and makes them available in a parameterized form for your exploration.

This project both rewards and requires exploration. I intentionally left the parameter space very broad so that edge case configurations would be possible. In practice this means that additional curation beyond the initial random parameters will very likely be required, in a way that mimics my day to day experience as a generative artist.

Thanks to Karsten Schmidt for his excellent libraries (, which form the technical foundation upon which this work was built.

### CONTROLS ###
e - Save the current frame as a PNG
space - Pause/Resume animation

NOTE: Some combinations of parameters will cause flashing/strobing, which is why I have attached the "Epileptic Seizure" label to the project.

* Color Palette: The color palette to apply to the output.
* Merge Technique: The method used to combine the different patterns.
* Patterns: The various patterns that can be combined to form the overall resulting tiled pattern.
* Pattern Scales: The scales used to combine patterns. Higher scale values provide more visible pattern repetition.
* Deformers: An optional additional spatial deformation of a pattern.
* Deformer Scales: The scale of the deformation itself. Lower values use less of the deformation space, while higher values include more.
* Detail: Acts as a filter on the visual complexity of the overall tiled pattern. Lower values will reduce visual complexity, while higher values will increase it.
* Rotation Rate/Scroll Rates: How fast should the image rotate or scroll. Note: adjusting these parameters may result in visuals that trigger motion sickness.
* Zoom: Lower values zoom in, higher values zoom out.
* Round Scales Up?: When checked the pattern scales are rounded up to the nearest integer.
* Animate?: Should some parameters be adjusted with the passing of time?
* Low Res?: When checked, force device pixel density to 1, which reduces strain on the GPU, but may result in graphical artifacts. I usually keep this unchecked unless I want to lighten the load on the GPU.
* Anti-alias?: When checked each pixel will be sampled multiple times to attempt to smooth out possible aliasing. This will put more load on the GPU, and will typically be slower. Can be useful when "Low Res?" is enabled.

### HOWTO ###
Here's how I find interesting things.

First, I lock all of the parameters below "Pattern 3" at their default values. I will also usually lock both Deformers to "Empty", as they can sometimes hide interesting patterns while exploring, and then I experiment with enabling one or both once I have found something interesting.

You can also explore the options individually (to a certain degree) by setting other patterns to "Empty". This can make how patterns affect one another more obvious when you set them.

At this point I'll randomize the parameters, and then do one of the following:

- If I see something that's extremely noisy/detailed, I'll turn down the "Detail" level, which can sometimes smooth things out.

- If a tiling is very tight, I'll lower the "Zoom" to see more of the pattern, or the reverse if I want to see more overview.

- If there's still a lot of aliasing/noise in the image, sometimes enabling anti-aliasing will help, but that will affect performance. I usually try to adjust the Scale/Detail/Zoom before resorting to anti-aliasing.

- Interesting patterns are formed by the scale factors controlling how pattern overlap happens. Sometimes enabling "Round Scales Up?" will introduce some appealing visual symmetry.

- Enable one or both of the deformers to see what impact they have on the pattern.

Finally, once I've found a pattern that's interesting, I may enable scrolling or rotation. Note that enabling additional movement can increase graphical aliasing, so anti-aliasing may be required depending on the pattern.

I hope you enjoy the exploration process!

- Jeff Palmer

This page has been generated using fx_hash public API, to display an overview of a creator's collection from The computation of "rarity" is not the official computation and therefore can differ. Dev by @zancan.