想要实现一个纪念碑谷中的海面效果,最初的设想是在vertex中,修改顶点坐标来实现,而且也实现出来了,代码:
v2f vert(a2v v) {
v2f o;
float4 offset;
offset.xyzw = float4(0,0,0,0);
float sinx = sin(_Frequency * _Time.y + v.vertex.x * _InvWaveLength + v.vertex.y * _InvWaveLength + v.vertex.z * _InvWaveLength);
offset.y = sinx * _Magnitude;
o.pos = UnityObjectToClipPos(v.vertex+offset);
o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
o.norm = sinx;
o.worldPos = mul(unity_ObjectToWorld,v.vertex).xyz;
o.sinx = sinx;
return o;
}
但是效果看上去总是怪怪的:
想了老半天哪里怪,为啥跟想象中的不一样呢....我们看一下纪念碑谷中的效果:
这差距也太大了吧...很明显,没有光效啊,那好,加上光效看看效果: