Ok, so here's my attempt at your shader. I did my best to recreate what I saw were the most standout features of the photo, namely a relatively calm water surface with a disturbance in the center with bubbles forming somewhat of a ring around the disturbance and some foam appearing in the center. This all accompanied by some slight ripples coming from the side.
This may be not exactly what you're looking for , but hopefully you'll be able adapt enough of the methods outlined to suit your needs.
The graph is mainly created from many different noise textures each with varying size and detail. I also used some gradient textures to get shapes such as the inner disruption circle, the ripples, and the area what the ripples are allowed to effect.
First off, I needed the center area, and it needed to not be a perfect circle, as water disturbances are much more random. I chose to get a circle by combining a spherical gradient with a greater than math node - Changing the threshold changes the size of the circle. To make the shape more random, I used the values from a noise texture to warp the vector if the input coordinate, so when I use the result of the "warp" as a vector input for the gradient texture(s), the result comes out appropriately warped. See below:
I then subtracted slightly smaller versions of the same texture from the original to leave me with two "warped rings" of different thicknesses. I used these to form the foam ring. I made the thicker ring slightly darker than the thin one before I mixed, because I plan on using this ring as height information for the "disruption outline" and the variance in brightness of the two rings helps give a more even falloff.
I admit, that I am not particularly happy with the way this "ring falloff" turned out, however, I predict it would take me several more hours to get it just right, and I feel like I've been messing with this graph forever. I don't like how harsh the transition is between the turbulent and calm areas - I just couldn't get it right in time. However, here are some of the steps I took to mitigate the "harshness" of the edge. The first thing I did was to multiply the pure white "ring "with a rather large noise texture to soften some of the edges, and remove some others.
I then multiplied it with a couple of different (highly scaled) noise textures that I clamped rather tightly with ColorRamps, to remove a good deal of small black areas to form the "spots" in the foam ring.
Speaking of foam, I used three different noise textures of varying sizes and positions, subtracted from each other to leave only a few white blotches. I then applied the same technique I used for the ring to soften the edges and add spots. Then I mixed them together. Keep in mind that I still have the original "disruption area" black and white cutout shapes. In any place where I need things to be contained by/excluded from this area, I can either accomplish this my mixing the values with one of these maps (or the inverse of it), or by using it as a mix factor. In most of the cases in this graph, I opted to add and subtract values to and from these maps, because doing it this way gave me better manual control over the mix factor. The result of the ring/foam mix looks like this:
While discussing isolating sections, I should mention that I made the most use of this while creating the height information. Outside the "disturbance" I wanted a water-like, but relatively smooth surface. I did this by multiplying a (brightened and softened) noise map with the inverse of one of the original "disturbance shapes" to make it only affect the outside area.
I did a similar thing to define the inner ripples, however I used a distorted noise texture mixed with a musgrave texture to give a more "turbulent look". I then mixed these two together.
To make the ripples, I used a wave texture set to circular, mixed with a diagonal gradient that I had warped using the method I mentioned at the beginning. I multiplied these together to give an area where the ripples are allowed to appear (in real life they would both transfer across the turbulence, but also be disrupted by it ).
I then mixed these ripples with the height information I made previously to make what would be the final height map. As per convention with procedural textures, I plugged in the height map to the height input of a bump node. I then used this as my normal input. Note that I reduced the strength substantially because the default of 1 is almost always too high (I used 0.1). I also connected this to a displacement node, but I did not use it in my final substance because to be honest I feel that it makes some things look better, while making other things look worse. Play with it if you want, just note that when I had the displacement connected, the graph seemed to take an inordinate amount of time to recalculate. I don't know if that's just my PC acting strange, or it's inherent to the graph. Either way, tread lightly.
To add some finishing touches, I used some of the whites from the "foam" that I had made to make a simple roughness map. I also mixed the basecolor image with a bit of blue increased the metallic value a little to make the water seem more of a "deep blue".
The final result looks like this:
I'll also include the .blend file, feel free to tinker with it as much as you like. I tried to label the graph in the most self-explanatory way, so hopefully you can figure out what everything does.
File is here -
Sorry for the wait. Hope this helps.