Anyway, I'm computing the standard dpdu/dpdv vectors on triangles analytically but I get the following crytek sponza scene (normals rendered as (normal + [1,1,1]) / 2)

Now on the back wall, above the arch it is super obvious that the bump map is being inverted on one half. I can't work out why this is occurring, and wanted to know if my attempt to compute normal derivatives directly is flawed, and this is a symptom, or whether I've just got a bug in how I'm translating wavefront material/texture coord into the actual mapping of uv to bump map.