Во многих туториалах по шейдерам Unity есть примеры в которых в vertex function делается следующее:
Код
struct vertexInput {
  float4 vertex : POSITION;
  float3 normal : NORMAL;
};
struct vertexOutput {
  float4 pos : SV_POSITION;
  float4 col : COLOR;
};
vertexOutput vert(vertexInput input) 
{
  ...
  float4x4 modelMatrixInverse = _World2Object;
  float3 normalDirection = normalize(mul(float4(input.normal, 0.0), modelMatrixInverse).xyz); // <- ?
  ...
}
Никак не могу понять, зачем умножать input.normal на _World2Object? Разве нормали не в локальных координатах объекта изначально?