Ty Vek
//
INNER
FORMS


Launch playground ↗︎

Summer, 2025. Details forthcoming.

An open-form collection.
[view on fxhash ↗︎]

Inner Forms is a psychic successor to The Self Trilogy.

Where that explored Freud's theories on the id, ego and superego, this explores Jung's ideas around archetypes and the collective unconscious.

"Who looks outside dreams; who looks inside awakes."
C.G. Jung
Open-form.

FX(hash) just invented open-form and this project is using it.

Open-form collections allow for direct relationships between specific pieces in the collection.



How does it (basically) work? Here is an example of how evolution is used in Inner Forms with a lineage of 4 generations, starting from scratch.



Hopefully it's clear that each descendant builds on its ancestors; each generation has the potential to build (or hide) complexity through adding new elements and altering composition.

What might not be clear above is that each generation gets a little bit taller, in terms of aspect ratio.

It's a little more apparent with the sample below, as this jumps 25 or so generations down.



We have limits, for now. The algorithm will only pay attention to the most recent 100 generations in the lineage even if somehow you minted one at the 1000th generation.

I had to draw the line somewhere. (It was breaking my browser, so there's that. There's a chance yours may break earlier.)

One last thing, open-form allows you to update the algorithm as well... so as tech evolves, more Inner Forms at deeper depths may be possible. Stay tuned.
Archetypes, etc.

C.G. Jung felt dreams were our unconscious trying to communicate with our conscious mind.

Dreams aren't literal and are often symbolic, but where do these symbols come from?

What Jung—and others—found was that some symbols or situations that dreams conjured would convey roles, ideas or images that the dreamer had no experience with in their waking life.



This was common across folks from different places and walks of life.

Jung called these symbols archetypes or primordial images. Freud called them archaic remnants.

Some examples include: the trickster, the hero, the flood, the shadow, the maiden and the anima/animus. There are many more, and often they could appear in various combinations in a dream, in subtle or obvious ways.

Jung believed we are born with these programmed into us, and that they evolve over time, just as a species or society may evolve. He rejected the tabula rasa theory of psychological development, where people are blanks slates, formed only by their personal experience.

He also felt that this collective unconscious was the reason why there are similarities in our various mythologies.



This project abstracts these inherited symbols/archetypes as patterns passed down between each piece in the collection.

They may not manifest the same way each time, but so is the case with our individual psyches or our unconscious mind's use of these collective images.

Pieces that share a lineage may share elements, but each will be drawn slightly different or may be masked by another element, partially or completely.

The final composition does not represent an archetype directly, but rather abstracts the liminal space between the unconscious and conscious, where these symbols are combined in an individual way, echoing how Jung felt these collective symbols manifest to each person uniquely.

Ultimately, each composition is constructed of layers of patterns that have been cropped and composed in individual ways. The patterns persist through generations, but the cropping and compositions vary and evolve. Some layers may dominate others while some may be hidden completely.

There will be repeating motifs throughout the collection as well—even if there is no shared lineage—due to the nature in how each pattern is drawn.
Reveals.

There's a bit over a dozen of main composition types. Some have variants. Not all are available from the start.



A few are represented in the samples on this page, but some will be surprises that reveal at certain generations.

3 basic ones are available from the start, and 3 more appear for the 2nd generation. A few more at 3rd, 4th and 5th. Then we skip until 10th, 15th, 25th generations before anything new is added.

The final type added at the 25th generation creates combinations of the other compositions.

Since the aspect ratio keeps growing, at a certain point, images get very tall so this photo-booth style allows for various permutations.

At 26 generations, you can have 2 composition types in 1 piece, 3 once you hit 51 generations, and finally 4 at 76 generations.

Full list will appear here before collection release.

Keystrokes.

Press "I" to toggle the info card.

Press "G" to save a GIF.
Press "B" to save a bigger GIF. (If you specified a custom height, etc.)

Press "J" to save a JPG at current size.
Press "R" to render high-resolution JPG.

Press "P" to show the parent.
Press "D" to render a random descendant.
Press "Q" to render a random sibling.

Press "A" to generate a random piece with no ancestor.
Press "Z" to generate a random piece at a random generation.
URL Parameters.

Add some combination of these to the url to customize the outputs. Some combinations cancel others and who knows, could break the output. Use your best judgement.

&static=true : Only render one frame (useful for rendering large images for prints) &height=X : draw images at X height (width will be calculated)
&aspect=X : override the aspect ratio (width / height; 0.5 will be twice as tall)
&square=true : aspect ratio of composition remains the same, but full image will be padded out so the image is a square

&saveframes=true : Save each frame of GIF locally as it renders

&gframes=X : Render GIF with X frames (default: 5)
&gdelay=X : Render GIF with X milliseconds between frames (default: 100)
&gheight=X : Render GIF with X height (default: 2000)

&grain=X : grain level (default: 1, higher is more grain, 0 is none)

&ff=true : "force fabric" — Safari was slow rendering the texture, so by default it doesn't get all the texture rendered in Chrome, use this to override.
Rendering Notes.

Inner Forms is written in vanilla Javascript, composed as SVG and then rendered to a 2d canvas. It is then processed a little bit.

There might be slight differences in rendering from browser to browser. This is expected as they might translate the SVG slightly differently. Let's call Chromium renderings canonical. They also render faster there and we love that.

Shoutout to Matt DesLauriers for A) being an incredible artist, and B) for writing gifenc, a wonderful GIF encoder for Javascript that was used in this project.
← Home
© 2022-2025, Ty Vek