实现过雨雪天气的同志们应该了解是通过在Cesium的后处理中写shader实现的,雷电效果也自然一样,都是站在shadertoy巨人的肩膀上,需要注意的是要注意在进行深度处理后,雷电的效果更为逼真,如图
下雪的效果很简单,但是倾斜模型的积雪效果需要更进一步的自定义后处理中的shader或者Cesium的某版本后添加的Customshader,实现的原理其实并不难,其实WebGL的学习离不开图形学,图形学的实现两大引擎Unity&UE的文章则需要好好研读,比如在UnityShader中有诸多实现积雪的文章,原理及计算方法很简单:
1.获取当前模型在EyeCoordinate下的法线方向向量NormalEC,其中需要提前判断自己的倾斜模型是否自带法线,在Cesiumlab或OSGBlab处理后的倾斜一般是不自带法线,因此需要进行法线计算,计算显示的结果如图
2.自定义或计算模型的normalizeVector,进行简单归一化即可
3.通过点积判断NormalEC与normalizeVector夹角,以此结果决定积雪的覆盖程度(参考UnityShader的文章)