// Normalize the light and view vectors and transform it to the tangent space:
float3x3 mWorldToTangent = float3x3( vTangentWS, vBinormalWS, vNormalWS );
// Propagate the view and the light vectors (in tangent space):
Out.vViewTS = mul( mWorldToTangent, vViewWS );
Out.vLightTS = mul( vLightWS, mWorldToTangent );
vLightWS, vViewWS is the lgith vector and view vector in world space.
My question is that the last two line codes are doing the same operation but with inverse order to multiply matrix. I think the last is wrong, but the program runs well. Why?