3D跑酷游戏,远处地表是弯曲的,形成视觉差,其实是通过shader来实现。
_QOffset("Offset",Vector)=(0,0,0,0)
_Dist("Distance",float)=100
下面是无光照的shader
float4 vPos = mul (UNITY_MATRIX_MV, v.vertex);
float zOff = vPos.z/_Dist;
vPos += _QOffset*zOff*zOff;
o.pos = mul (UNITY_MATRIX_P, vPos);
如果是surface shader,则把最后一行的
o.pos = mul (UNITY_MATRIX_P, vPos);
换成 v.vertex = mul(vPos,UNITY_MATRIX_IT_MV);