Improved Water Rendering

Hello! I’ve used UDK in college and for some projects, and while I am much, much, much happier with UE4, there is one thing that really irks me in it: water. UDK had fluid surface actors, screen capture reflect actors, and some very nice water rendering to get good reflections, lighting, interactivity, etc, and UE4 just doesn’t have any of that. Reflections aren’t great for large bodies of water, specular reflections are completely missing for all translucent objects, and there’s no interactivity, which is quite mind-boggling because just about everything else in UE4 got a massive upgrade.

So to bring back some of what UDK did right with water, I’m just wondering if it’s possible to bring back the phong specular model in a separate forward rendering path. I’m not sure if this is even possible, but a lot of what makes water in UDK look so good is that Phong specular model. Combined with perfect reflections and interactivity, it was absolutely brilliant. If there is any way to bring back these features, I’d love it!

For UE4 I created my own light vector blueprint and my own Phong specularity, and the water I managed to make looks gorgeous. It really makes me wish there was a forward shading path with phong specularity and some better tools for this.


? Phong shading has nothing to do with forward rendering, and is incorrect for absolutely every material. I mean, if you somehow like it as an art directed look then ok. But it has nothing to do with why water doesn’t work well right now.

First off, specular highlights are only possible in forward rendering. Translucency does not accept specular highlights because the deferred renderer would require multiple passes to properly model specular lighting on top of translucent objects, and at that point the entire game performance would slow to a crawl. Second, I’m not talking about the possibility of using Phong for anything else but direct specular in certain situations where it may be put to good use, like the direct specular on ocean waves, just to have the option should performance ever become an issue. Since water normals are typically very strong, the benefits of modeling a long tail with GGX specular are kind of lost, and the performance gained from using Phong specular (or a derivative that includes light source sizes) could improve the performance impact of rendering a translucent ocean.

Third, yes, Phong can be an artistic choice. I just like the way it looks on water. I even tried this water shader with a GGX model, and it looked terrible. I didn’t have the light source size implemented, but still, it looked terrible.

Hi mariomguy,

There is limited forward rendering already in the engine, since 4.8 in fact, that allows for specular highlights on translucent materials.

You can enable this by setting the Lighting Model to use Surface PerPixel. Once this is set, you can then use the console command for r.FowardLighting 1 to enable it. This mode is experimental so it does have it’s own limitations which are available in the tooltip.

Give that a shot to see the results!


Hey, yeah, that actually works! But the GGX model just seems to dim the specularity by a lot. This is with a roughness setting of 0.2. Any lower and the specularity just completely diminishes.


You don’t seem to have much of a directional lighting in the scene anyway. The grass, land and trees all look flat. Or is the light pointing straight down?

The light is pointing down. The shadows just have a limited distance for framerate issues. I also didn’t bake static shadows because it would kill Lightmass build times and look terrible when the grass is culled out. Here is a better angle. The depth obviously looks much better in motion.


Anyway… I dont know nothing about technical details about the implementation of Water. But I see in this post a way to make a request.
Its mutch harder to EPIC release a completely setup for water? Iḿ talking about, water volumes (physics and cosmetic ones), with customizable materials, (everything easy for noobs), and IF you want you can go more deep and chage everything. But if the user dont know, its there. Just to use it. Setup a good water can be a PAIN ON *** for novices. Think about it.