WPO shadows are very bad

On the left I have a mesh with waves, and on the right is a flat plane with 100x100 subdivisions:

The material on these two are identical, a standard material with a grey color, except on the right I have added a wavy noise map with World Position Offset (WPO). Above is a simple point light.

As you can see, using WPO displacement instead of an actual displaced mesh here makes a huge difference, the WPO version basically looks like garbage.

The question is, is it possible to improve the WPO shadows to make it look more realistic?

Another screenshot:

World postion offers need very high amount of polygons in mesh
I think 100Ă—100 is very low for this

If u want displacement with performance friendly you can fake it
You can use parallax occlusion node or bump offset ( suggested it cheap with good results)
With normal maps
Here’s a tutorial

Thank you,

I have denser meshes with higher subdivisions for production purpose, but for experimenting I just use 100x100, and although it is low, I still should see more smoother shadows here (I would if it was a mesh).

And yes, normal maps will quickly improve the visuals here, but I wish there was a way to get these smooth shadows from the actual light together with WPO.

[Edit]
Here is a version with a 1000x1000 subdivded plane instead, it does not make any difference:

I think you’ll find that the shadow from WPO are garbage, because the mesh is not actually offset.

For instance, it doesn’t affect the collision, so it’s probably the same reason it doesn’t work with shadows.

WPO does not alter the surface normals of the mesh, which is what is used to determine the shading of the mesh. The mesh was flat so when you displace it, it is still shading as if it was flat because all the surface normals are still pointing straight up.

In order to fix this you need to either recalculate the normals in your shader, or much more conveniently: Just use a normal map…

1 Like

Aha, it is slowly dawning on me now, the mesh surface normals…

Thank you!

2 Likes