Decal displacement doesn't work

Hello,

I’m not aware if this is known issue, or a bug.
As you see, displacement is still being read from the landscape layer and decal displacement has no effect.

Hello ,

This is expected as World Position Offset input allows for the vertices of a mesh to be manipulated in world space by the material. Since the decal actor itself is not a mesh and contains no real vertices aside from the preview bounds displayed for placement, there is nothing for VertexNormalWS to manipulate using WPO.

Thanks,

Hi Andrew,

Decals don’t have a mesh of course as they are projected materials only, but decal WPO is expected to overwrite the landscape WPO the same way as it overwrites BaseColor, Normal and other attributes. Take a look at this picture, notice how decal creates a hole when placed on the landscape:

http://uupload.ir/files/8kf4_6511.jpg

Picture from Frostbite 3.

Another issue is besides decal not overwriting the WPO of landscape, “World Displacement” can’t be enabled either. As you see it’s greyed out. In other engines deferred decal displacement does overwrite the landscape displacement if/when landscape is using tessellation + displacement.

http://uupload.ir/files/12h6_62.jpg

World Position Offset and Displacement both rely on manipulating the vertices of the mesh utilizing that specific material. Despite how it may work in other engines, Unreal handles decals differently by writing to the Gbuffer and storing those properties to be manipulated by the decals themselves. It does not manipulate the underlying vertices of the mesh it is applied. This would more than likely require a refactor of how we handle decals in the engine, which might also make them more costly to use.

We did implement the use of Mesh Decals which have more flexibility and might give you the functionality you are attempting with regular decals. I could look into entering a feature request, but I cannot say for sure it would make it through triage as the intended functionality of the decal actor is not to manipulate the vertices of the underlying geometry, but rather use the Gbuffer to blend with the mesh being applied based on the various blend modes and properties applied within the decal’s material.

Thanks,

H.

I frankly doubt it is implementable the way you request it. There is no way to manipulate terrain’s vertices at the stage when decals are applied… But I totally agree for the need of such feature(and other terrain-related requests). I just want to say that this feature should be a part of virtual texturing for landscape.

I think the engine, you are referencing to, renders terrain decals into some sort of indirection texture, which is then used to sample actual decal data in terrain shader

I plus one the need to have decals physically displacing the vertices of the mesh underneath in UE. I just tried adding a speed breaker decal to my road and it is completely flat which you know, defeats the purpose of a speed breaker!
Please tell me this is in the works by Quixel as seeing the sheer complex computation the future release of UE5 can do (from the UE5 demo being able to handle billions of poly), modifying a surface’s vertex using decal shouldn’t be that heavy.

PLUS, people like me are using UE for cinematics and not games as I come from visual effects background which epic is heavily investing in.