Perhaps you could try it and let me know if you find anything out.
I could randomly poke at it all day, and nothing would come of it.
I am calculating the vertex mapping axes as below. This worked on my CPU implementation that just set the vertex colors:
For t=0 To counttriangles()-1
a=trianglevertex(t,0)
b=trianglevertex(t,1)
c=trianglevertex(t,2)
'If vertexupdated[a]=0 Or vertexupdated[b]=0 Or vertexupdated[c]=0
v1x#=PeekFloat(vertexarray,a*12+0)
v1y#=PeekFloat(vertexarray,a*12+4)
v1z#=PeekFloat(vertexarray,a*12+8)
v2x#=PeekFloat(vertexarray,b*12+0)
v2y#=PeekFloat(vertexarray,b*12+4)
v2z#=PeekFloat(vertexarray,b*12+8)
v3x#=PeekFloat(vertexarray,c*12+0)
v3y#=PeekFloat(vertexarray,c*12+4)
v3z#=PeekFloat(vertexarray,c*12+8)
w1x#=PeekFloat(texcoordarray[0],a*8+0)
w1y#=PeekFloat(texcoordarray[0],a*8+4)
w2x#=PeekFloat(texcoordarray[0],b*8+0)
w2y#=PeekFloat(texcoordarray[0],b*8+4)
w3x#=PeekFloat(texcoordarray[0],c*8+0)
w3y#=PeekFloat(texcoordarray[0],c*8+4)
x1:Float=v2x-v1x
x2:Float=v3x-v1x
y1:Float=v2y-v1y
y2:Float=v3y-v1y
z1:Float=v2z-v1z
z2:Float=v3z-v1z
s1:Float=w2x-w1x
s2:Float=w3x-w1x
t1:Float=w2y-w1y
t2:Float=w3y-w1y
r:Float=1.0/(s1*t2-s2*t1)
sx:Float=(t2*x1-t1*x2)*r
sy:Float=(t2*y1-t1*y2)*r
sz:Float=(t2*z1-t1*z2)*r
tx:Float=(s1*x2-s2*x1)*r
ty:Float=(s1*y2-s2*y1)*r
tz:Float=(s1*z2-s2*z1)*r
Normalize(sx,sy,sz)
sx=VectorX()
sy=VectorY()
sz=VectorZ()
Normalize(tx,ty,tz)
tx=VectorX()
ty=VectorY()
tz=VectorZ()
'If vertexupdated[a]=0
vertexupdated[a]=1
PokeFloat mappingaxisarray[0],a*12+0,sx
PokeFloat mappingaxisarray[0],a*12+4,sy
PokeFloat mappingaxisarray[0],a*12+8,sz
PokeFloat mappingaxisarray[1],a*12+0,tx
PokeFloat mappingaxisarray[1],a*12+4,ty
PokeFloat mappingaxisarray[1],a*12+8,tz
'EndIf
'If vertexupdated[b]=0
vertexupdated[b]=1
PokeFloat mappingaxisarray[0],b*12+0,sx
PokeFloat mappingaxisarray[0],b*12+4,sy
PokeFloat mappingaxisarray[0],b*12+8,sz
PokeFloat mappingaxisarray[1],b*12+0,tx
PokeFloat mappingaxisarray[1],b*12+4,ty
PokeFloat mappingaxisarray[1],b*12+8,tz
'EndIf
'If vertexupdated[c]=0
vertexupdated[c]=1
PokeFloat mappingaxisarray[0],c*12+0,sx
PokeFloat mappingaxisarray[0],c*12+4,sy
PokeFloat mappingaxisarray[0],c*12+8,sz
PokeFloat mappingaxisarray[1],c*12+0,tx
PokeFloat mappingaxisarray[1],c*12+4,ty
PokeFloat mappingaxisarray[1],c*12+8,tz
'EndIf