Light Streaks — generative photography
-
@ewen
Thank you! It's also very special to me, since a) it's one of these projects I keep on returning to occasionally for almost 30 years now (similar to my cellular automatas) and b) it feels "full circle" to how I first started experimenting with photography as a teen in the 80s, recording light patterns of a small torch pendulum directly onto photo paper (even before I had my first camera), and it's what essentially brought me to digital/generative art as wider field...About the IFS & simulation approach: Just one more example of how beautiful maths can be and constant reminder that the way its taught in school and how most people's relationship to it is so very misguided (as a result)...
-
-
-
-
@nclslbrn @ewen I'd say yes to that! The only thing missing here is a lens/focal param, but that's not really essential for the general photographic process itself. Attached are some comparisons of the same scene captured at different exposure rates:
- First image: 100 million iterations @ rate 0.01
- Second image: 1 billion iterations @ rate 0.001(i.e. the 2nd image accumulates light 10x slower and therefore needs 10x iterations for same exposure)
If you zoom in you can really tell the dramatic difference in graininess for the 0.01 version, basically the equivalent of using a higher ISO film (or setting on a camera), leading to more light sensitivity, shorter exposure time, but also more grain and fewer details...
-
Light Streaks — generative photography
A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems), a family of very oldskool primitive/trivial fractal functions, but which can produce a fairly wide variety of outcomes. Each image is the result of billions of iterations of a single particle being iteratively transformed (meaning the particle's current position is used as the input for computing its next position etc.) For each iteration & position a tiny amount of light is being captured, slowly revealing an image, just like a negative does in analog film photography.
Some of these images have been "exposed" (aka computed) for up to 30 mins. The smaller the amount of light captured per iteration, the smoother (less grainy) the outcome...
(For the more technical: This is one of these projects where a floating point pixel buffer _really_ makes all the difference! My exposure rate is only 0.001 per pixel per frame, some of the images use even weaker settings... That means for a pixel to become fully white is has to be visited at least 1000 times [or more])
Made with https://thi.ng/matrices (matrix transformations) and https://thi.ng/pixel ("film" capture)...
#MonochromeMonday #Photography #Light #Simulation #LongExposure #Fractal #IFS #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
@toxi Very nice! I love this technique, and made some similar images in the past myself: https://jpalmer.art/projects/recursion-i/
-
@toxi Very nice! I love this technique, and made some similar images in the past myself: https://jpalmer.art/projects/recursion-i/
@jeffpalmer These are really beautiful too!!
I love the curvatures and 3D-ness of the shading... Is this from your Julia days?One of the first (commissioned) projects I used that technique for was the generative identity for Leeds College of Music. There I used the De Jong strange attractor instead of IFS and OpenCL for the computation, but the overall exposure/accumulation approach is identical. Before that I was always just using integer pixel buffers and was shocked by the level of detail suddenly revealed when switching to floats... was mindblowing!

-
@jeffpalmer These are really beautiful too!!
I love the curvatures and 3D-ness of the shading... Is this from your Julia days?One of the first (commissioned) projects I used that technique for was the generative identity for Leeds College of Music. There I used the De Jong strange attractor instead of IFS and OpenCL for the computation, but the overall exposure/accumulation approach is identical. Before that I was always just using integer pixel buffers and was shocked by the level of detail suddenly revealed when switching to floats... was mindblowing!

@toxi Yes, this was in Julia. I’ve required float texture buffers for all of my work for a while now, across implementations. Was first influenced by the work of @inconvergent and their excellent sand painting methods, and then found the benefits of float buffers so compelling that I wrote a custom rendering library that I’ve been hacking on for like five years.


-
@toxi Very nice! I love this technique, and made some similar images in the past myself: https://jpalmer.art/projects/recursion-i/
@jeffpalmer @toxi istr from when I played with this some years back, thar histogram equalization was a real game changer for shading. So still use integers, but make sure to use as equal amount of the coloring gradient
-
@jeffpalmer @toxi istr from when I played with this some years back, thar histogram equalization was a real game changer for shading. So still use integers, but make sure to use as equal amount of the coloring gradient
@pedersen @jeffpalmer I used histo equalization too in the past, but found the results are not quite comparable to floats, though of course still better than without that post-processing step... Disclaimer: I only used this with 8 bit buffers. 16 bit would likely have worked much better, but with 8 bit, pixels get saturated far too quickly in processes like this and then there isn't much left to equalize...

-
Light Streaks — generative photography
A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems), a family of very oldskool primitive/trivial fractal functions, but which can produce a fairly wide variety of outcomes. Each image is the result of billions of iterations of a single particle being iteratively transformed (meaning the particle's current position is used as the input for computing its next position etc.) For each iteration & position a tiny amount of light is being captured, slowly revealing an image, just like a negative does in analog film photography.
Some of these images have been "exposed" (aka computed) for up to 30 mins. The smaller the amount of light captured per iteration, the smoother (less grainy) the outcome...
(For the more technical: This is one of these projects where a floating point pixel buffer _really_ makes all the difference! My exposure rate is only 0.001 per pixel per frame, some of the images use even weaker settings... That means for a pixel to become fully white is has to be visited at least 1000 times [or more])
Made with https://thi.ng/matrices (matrix transformations) and https://thi.ng/pixel ("film" capture)...
#MonochromeMonday #Photography #Light #Simulation #LongExposure #Fractal #IFS #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of "auroras"...
Each image is the result of around 2-4 billion iterations of light capture. Original resolution is 5120x5120 pixels. I will post a fullsize image later...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of "auroras"...
Each image is the result of around 2-4 billion iterations of light capture. Original resolution is 5120x5120 pixels. I will post a fullsize image later...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of textures & sparklers...
The sub-atomic fabric of space time?
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of textures & sparklers...
The sub-atomic fabric of space time?
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number.
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number.
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
@toxi these are beautiful
-
Light Streaks — generative photography
A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems), a family of very oldskool primitive/trivial fractal functions, but which can produce a fairly wide variety of outcomes. Each image is the result of billions of iterations of a single particle being iteratively transformed (meaning the particle's current position is used as the input for computing its next position etc.) For each iteration & position a tiny amount of light is being captured, slowly revealing an image, just like a negative does in analog film photography.
Some of these images have been "exposed" (aka computed) for up to 30 mins. The smaller the amount of light captured per iteration, the smoother (less grainy) the outcome...
(For the more technical: This is one of these projects where a floating point pixel buffer _really_ makes all the difference! My exposure rate is only 0.001 per pixel per frame, some of the images use even weaker settings... That means for a pixel to become fully white is has to be visited at least 1000 times [or more])
Made with https://thi.ng/matrices (matrix transformations) and https://thi.ng/pixel ("film" capture)...
#MonochromeMonday #Photography #Light #Simulation #LongExposure #Fractal #IFS #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
@toxi cool shi

-
R ActivityRelay shared this topic