VideoCommon: Add comment explaining why only the first normal gets normalized

Co-authored-by: Scott Mansell <phiren@gmail.com>
This commit is contained in:
Pokechu22
2022-04-19 17:46:20 -07:00
parent 2a5c77f43f
commit 784079853d
3 changed files with 15 additions and 2 deletions

View File

@ -97,6 +97,11 @@ void TransformNormal(const InputVertexData* src, OutputVertexData* dst)
MultiplyVec3Mat33(src->normal[0], mat, dst->normal[0]);
MultiplyVec3Mat33(src->normal[1], mat, dst->normal[1]);
MultiplyVec3Mat33(src->normal[2], mat, dst->normal[2]);
// The scale of the transform matrix is used to control the size of the emboss map effect, by
// changing the scale of the transformed binormals (which only get used by emboss map texgens).
// By normalising the first transformed normal (which is used by lighting calculations and needs
// to be unit length), the same transform matrix can do double duty, scaling for emboss mapping,
// and not scaling for lighting.
dst->normal[0].Normalize();
}