上面是雾的浓度由低到高的两张截图,
由于是初步尝试所以以下的描述可能存在问题
----------------------------
这里的体积雾是一种后期效果,是对体渲染的一个初步尝试,主要步骤包括视线测交和积分。
视线测交在这里就是测试视线与一个虚拟box的交点,这个有简洁的实现方法;
但沿路径积分部分就纯粹是试验性质的,尽管就结果而言还是比较理想的,看来微积分要好好复习了...
----------------------------
这里面的体积雾与传统的硬件雾效是有区别的,
传统的做法是使用与点相关的某项参数的二次表达式(即 ax^2 + bx + c )的值
来产生混合参数衰减场景的颜色,
常见的参数比如点与视点的距离, 点与某个平面的距离,这些是与点的位置有关的,
或是更直接的单独赋予点的雾坐标等等
----------------------------
而体积雾是将雾空间作为一种场,
然后沿着视线逐步混合衰减的(即模拟积分的过程)
体积雾只是一种特殊的应用而已,在这里它是一种线性场,
我们还可以赋予其他的场特性(其实就是函数关系)来产生不同的效果,
现在常用的方式是使用三维纹理记录空间中的各种场数据(譬如速度,密度)模拟流体,云彩等等
也可以用来显示三维点阵数据,譬如医学上的一些应用,比如显示器官的立体图像,
因为通常数据是由层片的形式采集的而不是网格形式的,所以这种方法更适合。
----------------------------
总而言之,体渲染就是用来模拟用三角形网格不易于模拟的事物,
按照Nvidia Gems里面某一章的标题就是
“超越三角形”