SceneTexture World Normal Faceted Mesh Issue

It appears that sampling SceneTexture:WorldNormal for decal materials doesn’t include all mesh data, which leads to faceted normals when projecting decals on curved surfaces. According to Epic documentation here (Scroll down to the “Normal Reprojection” section) it mentions that faceting is a byproduct of the things being sampled too early in prepass depth, and suggests using the cvar r.Decal.NormalProjectionEnabled (Side note I believe that cvar is a typo on the documentation, and it should be r.Decal.NormalReprojectionEnabled as the one listed doesn’t seem to exist when I was testing.) I tried both r.Decal.NormalProjectionEnabled and r.Decal.NormalReprojectionEnabled cvars, but neither of them seemed to remove the faceting in my test project.

I found an older forum post referencing the issue that SceneTexture World Normal used to work as expected in UE4, but no longer in UE5:

https://forums.unrealengine.com/t/scene-texture-world-normals-are-not-shown-properly-on-ue-5/1171524

We ended up finding a decal normal setup as described in this youtube vid, as it includes an (imperfect) workaround to the faceting issues. (We haven’t implemented that solution yet, as we’re hoping to find a more concrete solution beforehand.)

Ultimately we’re looking for a way to get the SceneTexture World Normal to correctly sample mesh’s normal data, as we’re unsure if the cvars listed on the documentation are no longer working.

(I attached a 5.6 proj of the reproduced issue as I was testing internally with a ver. later than our project’s to rule out issues exclusive to us.)

Steps to Reproduce

  • Open attached project.
  • Open the level “DecalTestMap”. (This should be the default editor level)
  • Observe the faceted normals on the spheres that have decals projected on them in the level.

Hi,

By the information in your question it appears that you are already well informed on the issue. This is a consequence of the updates made to support the features of the Unreal 5 rendering pipeline and is considered as expected behavior.

It sounds like you may have a way forward via the youtube link that you have provided, there is also an option to explore ‘Custom Decal Responses’ to add additional control over the final result of the decal. Chris Murphey briefly touches on it here and is mentioned down the page in the forum post that you have linked.

Let me know if there is any more specific info I can provide.