Using tangent-space normal maps baked with substance (designer) in PlayCanvas

Having baked a tangent-space normal map in substance designer (Open GL orientation), I would now like to use it to set up a normal mapped material in playcanvas. When I do this, however, I get very noticeable artefacts:

https://playcanvas.com/project/771818/overview/normal-mapping-test


left: high poly; right: low poly (normal mapped)

The low poly was triangulated before baking. The low poly mesh in playcanvas is the same one that was used for baking.

Using the same assets in Unity (2019.4, URP 7.31), I get no issues. Unfortunalely, I can’t include more than one screenshot in this post, as I am a new user.

So, my main questions are:

  • What is the recommended workflow for baking normal maps for playcanvas?
  • What is the correct way/Is there a way to use tangent-space normal maps created with the substance baker in playcanvas?

Apparently, substance designer encodes the normals in MikkTSpace when creating tangent space normal maps.
My theory is that if playcanvas uses a different algorithm for calculating the tangent frames, this is what could be causing the issues. As Unity URP uses MikkTSpace as well, there are no issues.
If this is the case, is there any tool, e.g. a xNormal plugin, which can be used to convert the normal map to a version which works in playcanvas?

It could be related to this … please add your details to that issue if possible.

1 Like