您的位置:首页 > 移动开发 > Unity3D

Unity3D之跑酷地图弯曲效果

2015-11-24 09:41 696 查看
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);

上面是在顶点着色器中的主要代码,颜色第一行把模型坐标转到相机空间坐标,下面两行用来控制离相机越远,弯曲越大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shader unity3d