为什么要乘以unity_Scale.w?

 

// Computes object space view direction
inline float3 ObjSpaceViewDir( in float4 v )
{
float3 objSpaceCameraPos = mul(_World2Object, float4(_WorldSpaceCameraPos.xyz, 1)).xyz * unity_Scale.w;
return objSpaceCameraPos - v.xyz;

 

}

 

为什么要乘以unity_Scale.w?

首先我们要知道unity4.x对模型有统一缩放,如果模型的ScaleX,ScaleY,ScaleZ不一致,untiy会生成一个同等大小的新模型,该模型的ScaleX,ScaleY,ScaleZ保持一致。unity_Scale.w=1/uniform scale;

因为世界空间转模型空间得到的坐标是计算了uniform scale之后的值,所以需要乘以unity_Scale.w,再具体的原因要再确认了。

你可能感兴趣的:(client)