This is called affine texture mapping and was a thing on the psx, I have possibly implemented it wrong as it's very strong in some places.