nice!
Another tip for 100% correct directional light projection so you dont have any fudge factors… if you take WorldPosition and then use the material function “TransformToZVector”, then provide your light vector as the Z vector, it will returned a perfectly transformed worldspace facing into the lightvector, so then you can simply component mask R and G to get 2d coordinates facing the sun.
You could also do this inside of a light function material. You could conceivably mask out using the water Z height of the world to avoid projecting caustics above water level.