Here’s my first new live wallpaper in over a year! Hopefully I’ll have a few more new ones coming out in the near future.
The neat thing about this one is that it has a customized shader for sub-surface scattering. This simulates a translucent, glassy sort of material in which light bounces around before it exits the surface toward the camera. Traditional methods of simulating sub-surface scattering would be too heavy for a modern phone. They involve calculating the thickness of the material relative to the light direction for each pixel on the surface. But I found a GDC talk from DICE about the fast alternative used in their Frostbite engine, and adapted that.
Their method involves baking local thickness into the model, which is an adequate approximation in most cases. However, the helix shape consists of a lot of long cylinders (some twisted), so the effect is broken as you look down the length of a cylinder and the light still acts like it’s passing through a thin section.
To get around this, I made sure my textures on the model are all oriented the same way in relation to the axis of the nearest cylinder. Then the shader can use the tangent vector as an axis vector to calculate how much to scale up the perceived material thickness relative to the light.