雾公式 (Direct3D 9)
C++应用程序可以通过更改 Microsoft Direct3D 如何计算距离上的雾效果来控制雾对场景中对象的颜色的影响。 D3DFOGMODE 枚举类型包含标识三个雾公式的成员。 所有公式将雾因子作为距离函数计算,给定应用程序设置的参数。
线性雾
这是使用以下D3DFOG_LINEAR公式设置的。
direct3d 线性雾公式
哪里
- start 是雾效果开始的距离。
- 结束是雾效应不再增加的距离。
- d 表示深度或距离视点的距离。 对于基于范围的雾,d 的值是相机位置和顶点之间的距离。 对于非基于范围的雾,d 的值是相机空间中 Z 坐标的绝对值。
指数雾
像素雾和顶点雾都支持线性公式和指数公式。
这是使用以下D3DFOG_EXP公式设置的。
direct3d 指数雾的
哪里
- e 是自然对数的基数(约 2.71828)。
- 密度是一种任意雾密度,范围为 0.0 到 1.0。
- d 表示深度或距离视点的距离,如前所述。
这是使用以下D3DFOG_EXP2公式设置的。
direct3d 指数 2 雾公式
哪里
- e 是上述自然对数的基数。
- 密度是一种任意雾密度,其范围为 0.0 到 1.0,如上所述。
- d 表示从视点的深度或距离,如上所述。
注意
系统将雾因子存储在顶点的反射颜色的 alpha 成分中。 如果应用程序执行自己的转换和照明,则可以手动插入雾因子值,供系统在呈现过程中应用。
下图显示了这些公式,这些公式使用常用值,如公式参数中所示。
雾公式在距离和颜色图
D3DFOG_LINEAR为 1.0,末尾为 0.0。 它不是相对于近平面或远平面测量的。
当 Direct3D 计算雾效应时,它会使用以下混合公式中上述公式之一的雾因子。
direct3d公式
此公式通过雾因子 f 有效地缩放当前多边形 C 的颜色,并将产品添加到雾色 C 中,按雾因子的按位逆比例缩放。 生成的颜色值是雾色与原始颜色的混合,作为距离因子。 该公式适用于 Microsoft DirectX 7.0 及更高版本支持的所有设备。 对于旧式渐变设备,雾因子会缩放漫射和反射颜色组件,并固定到范围为 0.0 和 1.0(含)。 雾因子通常从近平面的 1.0 开始,在远平面上下降到 0.0。
相关主题