Two new hacks this time, Marbling and Binary Horizon, plus a few minor updates.
Several of the old hacks have been re-enabled on Android, because it turns out that while they didn't work in the emulator, they do work on real Android hardware (of which I have none).
This release was built on macOS 11.6 instead of 10.14, so I think that means that it has native Apple M1 code in it -- though I doubt you'll notice any performance difference over the Rosetta2 emulation.
Also Apple completely changed how code signing works again, because hey, six more months have passed, it's clearly time for a redesign of the most incomprehensible part of their entire ecosystem, right? Is it better? No. No it is not, it's just differently awful. Again. Anyway, let me know if there are signing issues.
I also had to update Sparkle (the "Check for Updates" library), so hopefully auto-updates still work. Let me know.
About Marbling, the new one written by me. It started out fairly simple, but then it took the optimization train to crazytown. Here's the comment from the top of the source:
This generates a random field with Perlin Noise (Perlin's page, SIGGRAPH 2002 paper, Wikipedia entry), then permutes it with Fractal Brownian Motion (Wikipedia page, Book of Shaders, Shader Toy) to create images that somewhat resemble clouds, or the striations in marble, depending on the parameters selected and the colors chosen.
These algorithms lend themselves well to SIMD supercomputers, which is to say GPUs. Ideally, this program would be written in Shader Language, but XScreenSaver still targets OpenGL systems that don't support GLSL, so we are doing the crazy thing here of trying to run this highly parallelizable algorithm on the CPU instead of the GPU. This sort-of works out because modern CPUs have a fair amount of parallel-computation features on their side of the fence as well. (Generally speaking, your CPU is a Cray and your GPU is a Connection Machine, except that your phone does not typically require liquid nitrogen cooling and a dedicated power plant).
Update: Oh yeah, I forgot to mention. A while back someone requested an Apple TV version of XScreenSaver, so I took a crack at it. There's a tvOS target in the Xcode project, but when you launch it, it never instantiates SaverRunner. I imagine there's some xib or storyboard problem, but I couldn't figure it out so I gave up. If someone can get me past that, I'll take another look. BTW, it turns out that one of the hurdles of porting iOS to tvOS is that tvOS doesn't have newfangled UI elements like checkboxes and sliders.