次时代海水

本文介绍了在Unity中实现更接近PC端表现的海水效果的技术细节,包括目光射入海水方向的计算、海水法线获取、菲涅尔公式应用、海面高光模拟、海岸泡沫处理以及光照和深浅变化的控制。通过这些技术,实现了逼真的海水渲染效果。
摘要由CSDN通过智能技术生成

先上最终效果:

https://v.youku.com/v_show/id_XMzczNTYwNzAyMA==.html?spm=a2hzp.8244740.0.0

随着海岛奇兵海面的实现到上一个移动海面的改进,收到了不错的反响,这促使我开始思考,有没有可能在牺牲部分性能的情况下实现更加贴近pc端表现的海水。

话不多说,开始执行。

首先,我们要知道目光射入海水的方向:

float3 worldView = (IN.worldPos - _WorldSpaceCameraPos);

然后要获得海水的法线:

half4 nmap = (tex2D(_BumpTex, i.worldPos.xz + offset) + tex2D(_BumpTex, half2(-i.worldPos.z, i.worldPos.x) - offset)) * 0.5;

这里为了让海水有流动的效果,offset随着时间变化,而取法线贴图则是用了xz和z来出里扰动。

有了法线和眼睛视角,就可以根据菲涅尔公式计算点积:

half fresnel = sqrt(1.0 - dot(-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yxriyin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值