In the last jam, I used layers of Perlin noise to generate both terrain and water waves (which need to be generated every frame). For the hash, I used PCG3D, an improved hash which is also from Unreal Engine. This produces quite good output and is also quite fast, as it can be adapted to calculate 4 outputs for the cost of one using SIMD.
My shader code implementing this is in WGSL is available at the link if anyone wants to use or adapt it. I hope this helps. https://github.com/george-steel/bowfishing-blitz/blob/main/src/shaders/noise.wgsl
