Multiple ways to approach this.
I highly recommend the Ryan Brucks’ Shaderbits GDC pack. It shows techniques for rewriting/multipass render target textures(which will be useful if you want to achieve the same effect as windy.com.) It also has full blown fluid simulations.
Splines are not very efficient if you want to achieve high onscreen vector density.
Here’s a multipass shader that implements a wind flow map. To get it to work in Unreal, you’ll need to translate it from GLSL to HLSL. It’s pretty much just replacing data types and function names. Don’t worry about Buffer A, it procedurally draws the world map outline, and that slows down the shader a lot.
You can easily recreate the shader with nodes, except where there are functions with loops. You can either add the code to a few external shader files, and reference their functions in a custom node. Or you can use one custom node per function with loop, per each buffer and reference the CustomExpressions produced by the HLSL compiler.Example Here: CustomExpressions are numbered, based on the order they are plugged into the Main custom node that references them. In the example EvaluateLight is CustomExpression0, ParticipatingMedia is CustomExpression1 etc.
Make a render target and a material for each buffer in the shadertoy example(Common, is not a buffer). In each material, reference the render targets corresponding to the different buffers on the shadertoy example.
Create dynamic material instances. On a fixed timestep, set their texture parameters to the appropriate render targets and draw them to their own render target.
You’ll need to use Render Target Lookup, by adding a C++ component, to read the value of the velocity buffer, in order to accurately tell your boat where to travel in response to the wind.
You can also use flow maps, with render target lookup, but it won’t look nearly as pretty unless you sample the vector field texture at multiple offsets, and blend appropriately, to create the trail effect. Though you could even paint the flowmaps at runtime, using some of the techniques in the Shaderbits GDC pack.
I’d suggest, if you were gonna make something based on splines, that was only approximating the the vector field, to base the splines on the pressure isolines(go to windy and enable the pressure overlay, and the pressure isolines) rather than attempting to replicate their paths. Then an object can be moved roughly parallel to the average of the tangents, on the two closest points, on the two closest isolines. Depending on whether or not the higher pressure region is to the left or the right, and which hemisphere it is in.