找回密码
 立即注册
查看: 443|回复: 0

《Babel》项目技术整理:水

[复制链接]
发表于 2021-1-6 10:17 | 显示全部楼层 |阅读模式
一开始着手水的效果, 并不是从池塘海面这种水面, 而是从雨水切入的
雨滴本来还想参考RiME的实现, 后来想想就是个横版表现, 挂镜头上个粒子系统就搞定了
第一段室外场景就是一个下雨的场景, 所以参考了
的实现稍微做了一下修改, 让其在颜色上更贴近卡通风格的表现:
对于亭子和房屋的雨水遮挡, 是使用SceneCapture按照雨水的方向Capture一个Depth RT来实现的, 原理跟ShadowMap类似. 因为这里的雨点受风力的影响是斜着下的, 所以SceneCapture的方向也做了相应的倾斜
DepthRT的分辨率其实并不高, 每个像素覆盖1米的样子, 这样必然会带来锯齿感. 那怎么消除这个感觉呢? 这里使用了一个噪声抖动的方法来采样:
Noise抖动消除锯齿
为了减少深度比较带来的走样问题, 在Capture的时候渲染的是模型的背面.
除了雨滴之外, 配合风还需要表现镜头前面风雨飘摇的感觉. 传统的做法就是做大片的粒子特效进行叠加移动, 但是这样做的Overdraw非常高:
性价比比较高的做法是做个透明罩子套镜头上, 上面播放材质动画:
对于地面的积水, 直接在模型上刷顶点色mask就可以了, 前面的文章已经提过:
另外是大片的积水, 也就是类似池塘, 需要更复杂的效果, 本来想参考CartoonWaterShader:
但是风格差异太大, 只是参考了它的物体周围基于DistanceField的涟漪生成:
其中水面交互部分参考了UIWS, 反射使用了PlanarReflection, SSR还是缺少太多的细节
由于写实的波纹跟卡通风格不是很搭, 所以又做了波纹的风格化:
最终游戏中还是配合特效进行了表现, 纯材质表面实现还是没法达到预期的效果:
当然, 很多前文提到的已经被雾给挡住了, 所谓"细节不够靠雾来凑", 下一期就来讲讲雾效.
最后还有一些没有用上的失败尝试, 比如漂浮在空中的水泡:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 10:37 , Processed in 0.091300 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表