Por que transformar as normais com a transposição do inverso da matriz da modelagem?

Eu estou trabalhando em alguns shaders, e eu preciso transformar os normais.

Eu li em alguns tutoriais a maneira de transformar normais é vocêmultiplique-os com a transposição do inverso da matriz de modelagem. Mas não consigo encontrar explicações de por que isso acontece, e qual é a lógica por trás disso?