有倒影的流动水面
若仅想实现动态水面效果,利用cesium的相关接口配置material的uniforms就可以实现了。但这种方式调配出的水面相对失真,无法实现现实水面具反射周围地物效果。为了更逼真的模拟客观世界真实水面,需要对cesium固有的water.js文件进行修改,即修改cesium固有shader来完善基于cesium的真实水面模拟。
1.实现原理剖析
首先是有参考价值的文章:
GLSL实现水面倒影
倒影(reflections)效果的实现
ShaderForge-水中倒影效果
untiy shader 水的模拟
以上文章很好的总结了水面反射效果,即:
倒影:就是将uv的v值翻转一下,
倒影在水的扭曲效果:就是让图片不同部位uv值的增量不同,如果不太熟悉扭曲效果的,可以参见unity shader 贴图流动
最后利用透明度用Lerp操作将原图和倒影图合成到一起
将此原理应用在cesium里同样适用。