Hi — following on from a previous thread from Oct25 (GLB Model with Tangent Data Loses Tangents After Conversion in Playcanvas Editor"), I think I’m hitting a related case. I have two large surfaces (a wall and a floor) where normal mapping shows zero bump detail at all — completely flat — whilst a smaller object in the same scene (e.g. a chrome door plate) show normal-map detail correctly.
Things I’ve ruled out on my end: the material’s own sRGB/bumpiness/UV settings all match a working setup exactly; UV tiling is 1×1 on both affected surfaces (not a repeat/wrap issue); both use the legacy Model component, same as the working object; there’s no custom shader chunk override involved — same result with any custom material scripts disabled entirely; console is completely clean, no warnings or errors.
Separately, I also found and fixed an unrelated missing-asset-tag issue affecting overall scene brightness — resolving that had no effect on this normal map issue, confirming they’re independent problems.
Given what’s said in the previous thread about the engine ignoring mesh tangent data and computing tangent space in-shader instead, is there a known limitation with that computed-tangent path specifically for large/high-poly static geometry, or anything else worth checking that wouldn’t show up in the console? Happy to share a project link if useful.
It was working well in V1 in Preview. But I hadn’t gotten it published before V2 took over.
Thanks
Thanks for looking in to this issue.
I realised the one object in my scene where normal mapping was working had a cubemap assigned, unlike the flat/broken wall object. So I added a cubemap to the broken wall’s material to test, and the bump detail came back, but only once Reflectivity was pushed to around 1.2 (above the normal 0–1 range). At Reflectivity 0 with the same cubemap still assigned, it stays flat, so it’s specifically the reflectivity value, not just having a cubemap reference present.
That points to normal mapping’s tangent-space computation being conditionally compiled behind something like a LIT_SPECULAR_OR_REFLECTION flag, which only activates with sufficient reflectivity/specular contribution, meaning a normal-map-only, non-reflective material may never get that code path compiled in at all.
Obviously not a usable fix (a wall at reflectivity 1.2 looks shiny/wet, not matte).
Repro project: contains a single wall entity, normal map assigned, cubemap already added with Reflectivity at 0 (matching the broken state). Just raise Reflectivity to ~1.2 to see it change.
Sure. You don’t have a sky box set. When no sky box is set, the scene’s Ambient Light (in Settings → Rendering) takes effect. Your Ambient Light is set to white. Try dialing this down to black. Also, your Directional Light’s intensity is only 0.15. Try dialing that up to, say, 1.
Then you will be able to see the normal map take effect.