This setup generates dynamic fabric wrinkles by measuring surface tension. It combines a custom modifier that stores geometry tension as an attribute with a shader node group that converts this data into a procedural wrinkle height map. The resulting height map can be routed through a bump node to generate normal maps. It requires a rest position attribute on the target mesh and relies on UV map orientation to define the direction of the wrinkles.