Unity中常见的水面渲染

                                                毛神 @浅墨_毛星云 整理的图

一,波形

1.正弦波

波形出来了,但着色不对,法线没有随着顶点一起变化,需要重新计算法线。

2.Gerstner波

正弦波在竖直方向上运动,Gerstner波在正弦波的基础上增加了水平方向上的运动。

X轴

Z轴

单层波效果太单一,再叠加一层看看

叠加多次可以增加更多细节,模拟水面一般需要64或128层,性能方面存在一定压力。

3.FFT

https://zhuanlan.zhihu.com/p/211268502

可以参考这篇文章,写的比较详细。

二,着色

1.利用视空间下的深度值计算深水区和浅水区颜色

做个lerp

2.扰动

采样深度图和不透明图时在UV上加入偏移量

3.法线

不同UV采样同一张法线

4.边缘透明

算出边缘mask

取反

和不透明颜色做个lerp

5.泡沫

利用上面算出的边缘Mask,叠加一张泡沫贴图

6.焦散

7.反射

参考之前的文章https://blog.youkuaiyun.com/m0_58594062/article/details/139772759?spm=1001.2014.3001.5501

三,最后效果

https://www.zhihu.com/question/57706850/answer/2912047969

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值