WebGL地球:如何制作云

Atr*_*sis 6 shader image-manipulation image-processing glsl webgl

问题

我想用WebGL从低轨道(这里约300公里)建立一个逼真的地球视图.也就是说,在网络上,它具有所暗示的一切,而且在移动设备上.不要在这里停止阅读:为了减少这一点,用户可以到处看,但不能平移,所以视图只涉及3000km宽的小区域.但是这个视图跟随一颗卫星几分钟后,用户回到原来的状态,地球的旋转稍微移动等等.所以云不能一直在同一个地方.

我实际上已经能够包括城市的灯光,极光,闪电......除了云.我已经看到很多实时渲染热情和研究人员的演示,但他们都没有一个漂亮,逼真的云层.但是我确信我是第100个想到这样做的人,所以请高兴我.

提出的问题很少:

  • 什么输入用于云?气象现场数据?
  • 什么渲染可能性?带有云图的透明图层,使用着色器修改?几乎没有透明层来获得体积渲染的感觉?但是如何将阴影相互投射:唯一的解决方案是使用网格?或者阴影可以在程序上计算并每x分钟在服务器上映射一次?

几个规格

以下是总结我尚未看到的一些想法,按重要性排序:

  1. 云隐藏了60%的地球.

  2. 云散射城市和闪电的灯光,晚上有瑞利散射.

  3. 在这个距离处,视差效果是可见的,甚至在最小的云层中也非常棒.

在此输入图像描述

据我所见,即使是昂贵的实时气象在线资源也没用:它们在紫外线和红外线光波的帮助下瞄准下雨或暴风雨的云层,因此它们不会100%捕获它们并且不会给出正常的"我们都知道.此外,在可见光下拍摄的罕见的良好云纹理几乎不能将地面与云层区分开来:有时长达5000公里的海岸无处不在.服务器可能能够使用这些图像来创建更好的纹理.

当我看到那些图片时,我想最好的方法是从包含不同模型的数据库中合并几个漂亮的云网格,然后在用户经过时稍微转换着色器内的网格.如果他回来后90分钟仍然在这里,无论模特是否再次相同.然而,飓风不能消失.

你怎么看待这件事 ?

Spe*_*tre 2

对于这种效果,可能只有一种方法可以正确实现,那就是:

  1. 体素贴图 + 体积渲染可能使用反向光线跟踪器渲染

    由于你的位置是固定的,所以对内存的要求应该不会太高。您需要同时实现MIE 和瑞利散射。散射可以简化很多并且看起来仍然不错

    体素贴图处理光隙、阴影和散射相对容易,但需要大量内存和计算能力。所有其他2D技术通常都痛苦地围绕着3D 体素贴图本身的工作而毫不费力地工作。例如:

  2. 程序云图生成器

    每种类型的云都需要这个,这样你就有了可以渲染的东西。有库/演示/示例,请参阅: