How to Render Water Reflections in 360 Degrees in Unreal Engine

How to get the best Water Reflections effects in your 360 degree renders in Unreal Engine
Written by Off World Live
Updated 4 months ago
Large bodies of water and other large reflective surfaces can cause visible seams.
It’s not always possible to totally fix this, but we can remedy it in most cases with these techniques. 

If your seams are caused by moving water, then you may be able to use anti-aliasing to remove them.

Here’s how to make Reflections in a body of water work:

  1. Open the Environment Light Mixer and create a Sky Light, Atmospheric Light, Sky Atmospheric, Volumetric Cloud, and Height Fog:
  2. Add a water material to a ground plane or floor mesh. For this example we will use the M_Water that comes with the Engine Content:
  3. Edit the Water material so that when close to the camera it will have no reflection. This will result in a fade out rather than a harsh line in the reflections:
    1. Make a new folder in your Content folder and call it ‘Water': 
    2. Navigate to the Water material by clicking on it in the outliner or viewport then clicking the ‘browse to asset’ button:

    3. Copy and paste the Water material into your newly created folder:

    4. Rename this asset M_Water1:

    5. Double click this Material to open it. You will see a Material Function, we need to copy this as well.

    6. Click on the Material Function ’MFAttr_Water’. Then use the Browse to Asset button in the "Material Expression" Details Panel.

    7. Once you have this asset located, copy and paste this into your new Folder and rename this MFAttr_Water1:


    8. Now go into the M_Water1 Material and swap the new MFAttr_Water1 Material Function in:
    9. Double click the Material Function MFAttr_Water1:
    10. Add the Nodes in the image below and hook the Lerp B in to the Specular Output:
  4. Now you can create a Material Instance of your new Water Material:
  5. Add it to the Floor Plane (or wherever you need):
  6. You can change the MaxDistance and Offset so that you get a smooth fade from no specular to full specular reflections:

Here’s how to make Waves in a body of water work:

  1. We can use the same technique but for another material function within the new MFAttr_Water1 Material Function we created above
  2. Find the MF_Wave_3B_Normals Material Function in the MFAttr_Water1 Function and make a copy of it. Connect the new MF_Wave_3B_Normals2 to the left and right nodes (replacing the old one):
  3. Double click on MF_Wave_3B_Normals2 to open it, then add the below highlighted nodes and connect them into the 'A' Input of a Lerp, with the Original Output going to the 'B' Input of the Lerp. Copy the Wave Strength Parameter and Rename it to Wave Strength0, then copy the Nim and MF_normal Strength nodes to result in the image below:
  4. You will now be able to control the wave Max Distance and Wave Offset to make the appearance of the waves dependant on their distance from the camera:

Other general tips:

  • Sometimes reflection seams can be caused by global illumination. In your sky light, set Cast volumetric Shadow to off.
  • If the clouds are causing seams you can stop them moving. To do this select your volumetric cloud actor and scroll down to it’s material. Double click the m.simpleVolumetricCloud material and set the Wind Vector to 0,0,0,0
Did this answer your question?