Not the best way to do this I’m sure, but a very straightforward way is to use a lookup texture to define the seasons given your 0-1 float. Unreal has a built in way to do this using color curves, basically you create a linear color curve, then you create a color atlas and fill it with your curves and you sample from the atlas/curve from within your material.
Essentially each of the RGBA channels would represent a season and you would feed their respective channel outputs into a series of lerps.
Since it is essentially a layer stack you probably wouldn’t want to cross fade them at the same time like I’ve done above. The alpha channel also isn’t really necessary, but I didn’t think of these when I was making the curve and I’m too lazy to address it. You’ll understand when you go to implement it if it isn’t obvious already.
If you want to save a (very) small amount of memory you could generate the curves in an external program and then save them out as a single grayscale LUT with each of them stacked on each other (rather than in individual color channels). This requires a little additional setup though as you’ll have to write your own function to sample from the LUT (not that difficult, UV.x represents time and UV.y would represent the atlas)