`worldTransform` doesn't perform the perspective transformation, its bottom row is `0 0 0 1`, so there is no need to divide by `w` (hence the term 'perspective divide'). We also don't need the translation part of the matrix, since it would only distort our normals. This leaves us with the top-left 3x3 matrix. From what I read, In general case we indeed must inverse and transpose it to handle the scaling properly, but I'm only doing rotation here, and according to wikipedia "the inverse of a rotation matrix is its transpose, which is also a rotation matrix", so we might as well just use the original matrix.