I figured Wayfire couldn’t have enough animations, so I wrote two more: Magic Carpet and Burn. The first interesting animation in Wayfire was affectionately named ‘fire’. It is resource intensive and isn’t very realistic looking, but it does resemble the original compiz fire effect quite well. However I wanted something a bit better, and wanted to try my hand at writing a GLSL shader that could fit the bill. After reading some about how to create flame effects with a random noise generating algorithm, I stumbled onto a shadertoy that looked like it might suit the occasion. Here is the original shadertoy from which ‘burn’ was adapted. It has 5 flames with varying degrees of detail. At first I installed the code and got it rendering something, but it wasn’t that great. Eventually I whipped it into shape, and now it burns windows nicely, as can be seen in the video below. It burns a little beyond the edges of windows, has configurable flame speed, width, height and smoothness and, after a suggestion in IRC from a user that saw it, configurable flame color. Go WayFIRE!
Since this was apparently not enough, another user had been actively working on a roll-up style animation and called it the magic carpet effect. They offered me the code to improve upon, and while it did work, I decided not to use it because it used a mesh, and I wanted to use a fragment shader with 4 vertices rather than a mesh, which is arguably not as fine grained as using a pixel shader. So, with the idea in mind, I begin hacking together a mind bending, magic carpet rolling GLSL shader that faked everything from perspective projection to lighting, all while using a progress uniform for animation. There were some edge cases I ran into such as clamp-to-edge repeating edge pixels that are not fully transparent, and lining up the front part of the roll with the back part, just so the effect is largely seamless and complete. After I got it rolling from left to right, I decided to make it configurable so that it can roll any cardinal direction. Check out the video below to see it in action!