← gradient descent

gradient descent #15

by who?

gradient descent #15 static token preview
Full screen

Static preview.

Project

Whether by choice or circumstance, we often find our lives thrust into uncertainty. We're resilient, though — we find patterns in the chaos, deciphering and unraveling it piece by piece until a new comfort emerges. gradient descent is my expression of that cyclical flow that comes to dominate our lives.

The piece starts with comfort, a smooth gradient chosen from a curated palette. As the animation runs, that gradient is mutated by a unique sequence of linear transformations - slice, skew or stride on an underlying grid - as it descends into uncertainty. After a time the animation will reverse, peeling back each transformation and returning to comfort before beginning anew.

The menu - which can be accessed with a double click or Escape - gives you extensive control of the experience. I'd encourage you to explore these settings — they transform the feel of the piece, allowing you to adapt it to match your environment or mood. Any setting that can be changed in the menu can also be provided as a URL parameter - there's a button in the menu to export them all.

Built with raw WebGL 1.0, optimised to run smoothly on most devices.

Best viewed in full screen on large format displays.

||| controls

[hold space] ⇝ speed up
[esc/2xclick] ⇝ toggle menu
[g] ⇝ toggle gallery mode
[p] ⇝ toggle pause
[s] ⇝ capture current frame
[a] ⇝ capture all keyframes
[8/9/0/-] ⇝ change viewport

||| settings

All settings are configurable via the interactive menu. Initial values can be set as url parameters by adding &[name]=[value] to the url.

loop [1|0, default 1]
| ⇝ loop the animation
infinite [1|0, default 0]
| ⇝ generate a new sequence after each descent, constantly evolving
gallery [1|0, default 0]
| ⇝ display in gallery mode with keyframes
quality [#, default 1]
| ⇝ additional dpr scaling - lower to improve animation smoothness
speed [#, default 1]
| ⇝ multiplier for step animation speed
step-pause [#, default 0.35]
| ⇝ seconds to pause between keyframe steps
start-pause [#, default 4]
| ⇝ seconds to pause at the initial keyframe
end-pause [#, default 4]
| ⇝ seconds to pause at the final keyframe

||| capture

Capture current frame saves the still immediately, while capture all keyframes saves each of the keyframes sequentially. Some browsers may require confirmation to save multiple stills. When triggered early, unrendered keyframes will be blank. All captures are impacted by the following settings.

capture-aspect [#, default 1]
| ⇝ aspect ratio of the capture, as width/height
capture-size [#, default 2048]
| ⇝ longest dimension of the captures to save, in pixels

NFT License, who? 2022
webgl engine based on lightgl by evanw

Price history

DateEventPriceMarket
2022-11-23Sale10 tezfxhash marketplace v2
2022-11-23Mint16 tezfxhash issuer v2
Last completed sales index sync
fx(params) mint tickets
Block 15305302
fxhash issuer v1 (first)
Block 15305302
fxhash issuer v1
Block 15305302
fxhash issuer v2
Block 15305302
fxhash issuer fx(params)
Block 15305302
fxhash marketplace v2
Block 15305302
fxhash marketplace v1
Block 15305302
objkt.com marketplace v1
Block 15305302
objkt.com English auctions v2
Block 15305302
objkt.com marketplace v2
Block 15305302
objkt.com English auctions v1
Block 15305302
objkt.com marketplace v3.2
Block 15305302
objkt.com collection offers
Block 15305302
objkt.com English auctions v3
Block 15305302
objkt.com marketplace v3.1
Block 15305302
objkt.com Dutch auctions v1
Block 15305302

Traits

grid size
51245 of 242 indexed editions · 19%
palette
vapor44 of 242 indexed editions · 18%
direction bias
⦿53 of 242 indexed editions · 22%
gradient
↘27 of 242 indexed editions · 11%