Cesium中实现体积云和大气美化效果

RayMarching

RayMarching 也就是光线步进,是 3D 图形学中的一种渲染方法,常常用来作为体渲染的主要渲染方式。

本次实现的体积云和大气效果都是基于 RayMarching 这种渲染方式进行渲染的。

基本实现原理是,在每个像素上计算一条光线,当光线进入体纹理范围内后,将光线细分成更小的光线片段进行步进迭代,每次步进时计算相应的强度信息。最终迭代结束后,将所有步进结果进行叠加计算,得到像素的颜色

请添加图片描述

体积云

体积云的实现原理之前的文章已经提到过了,这里就不再赘述。

值得注意的是,这次实现的体积云视觉效果会和之前实现的不太一样。

这是因为计算云的密度这一步使用的云层建模函数不同了,好的云层建模函数能够生成逼真的体积云,并且性能消耗更低。

请添加图片描述

请添加图片描述

大气散射

大气散射是对现实世界大气的一种模拟,其大致的效果体现在白天和傍晚天空天空颜色的不同。

现实生活中,大气散射根据大气散射现象可以大致分为三类:

  1. 瑞利散射:瑞利散射是晴空万里的时候主要发生的光学现象,光线穿梭在空气中遇到比光波长小得多(~1/10以下)的小分子之后会进行 “波长敏感”的散射,它是我们的天蓝色的天空与橙红色的落日晚霞的主要成因。
  2. 米氏散射:米氏散射是灰蒙蒙的天气时会发生的光学现象,是空气中粒子尺寸(大约)大于等于光波长的时候会发生的散射现象,例如丁达尔效应、各种水雾、烟、尘的散射等其实都可以归类为米氏散射。米氏散射吸收的光能量并 不是“波长敏感” 的,对于入射光颜色的“修改能力”较弱。实时渲染的时候一般会用米氏散射的近似模型。
  3. 拉曼散射:拉曼散射在粒子半径远远小于光的波长时发生,但是拉曼散射发生的是非弹性碰撞,意味着拉曼散射之后,光子的能量和频率都会发生改变,对于计算机来说处理十分复杂。而且拉曼散射对于颜色的贡献很小,因此在渲染领域一般不考虑这个散射。

大气散射渲染学习案例

大气散射已经有很多成熟的案例,这里给大家分享一个我个人比较推荐学习/移植的案例Atmospheric scattering

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值