Fractal Renderer
💡 Motivation
I'm sure most of us entertained the thought of magic powers at some point. For me, I'm content living out these fantasies watching movies with magic-wielding protagonists saving the world. Yet as I grew older, I started to ponder: how were these VFX created, these bright bursts and glittering ribbons of color? This led me straight down the rabbit hole and into a wonderland of fractals.
Role
Independent Researcher
Timeline
Winter 2021 - Spring 2022
Tools
Javascript
Java / Processing
Rust
🔍 Methodology
I employed an interative fractal system, tracing the paths of "magic" particles and collecting the light samples into the final render. I also investigated the cause of singularities in my system and removed them to the best of my abilities. Initially, I used Javascript/Java for my prototypes but soon discovered the performance wasn't enough for 4K resolution. This started my first dabblings in learning Rust and multithreading my programs—over a 100x speed-up made the effort worth the while. For the (lower resolution) browser port of my fractal generator, I compressed the fractal parameters into "keys" users can share. Take a look at what c1b46ac2b52ac2b66ac2b25ac1b25a2b89a0b87a1b41a1b16a1a0b47ac0b31 looks like here (bottom left, you may need to scroll down).
🌌 Retrospective
In this project, I learned to adapt and learn new tools quickly when the situation calls for it. I also learned that wise design choices in the beginning (i.e. making the particle tracing code a pure function) leads to saving big later in a large research project (i.e. multithreading is now trivial because there's no state mutation!). Overall, I'm very happy with the visuals my fractal system is able to render as well as how performant it runs! When I revisit this project, I have the following plans: A) bring the fractal system to 3D space, B) have custom anchors so irregular shapes are possible, and C) use raytracing to add PBR light effects like depth-of-field and bloom.
I wonder if there's more to explore with the custom "keys" users can create and share with others. I imagine with some hashing magic and public/private keys, users can effectively "own" a fractal. Sounds like a promising place to investigate HCI interactions in digital property and non-fungibles...