雾 (Direct3D 9)

向 3D 场景添加雾可以增强现实主义、提供氛围或设置情绪,以及有时在遥远几何图形进入视线时造成的模糊项目。 Direct3D 支持两个雾模型,像素雾和顶点雾,每个模型都有自己的功能和编程接口。

从本质上讲,雾是通过将场景中对象的颜色与所选雾色混合在一起来实现的,该颜色基于场景中对象的深度或其与视点的距离。 随着物体越来越遥远,其原始颜色与所选的雾色混合得越来越远,这制造了对象被漂浮在场景中的小颗粒所掩盖的错觉。 下图显示了在不雾的情况下呈现的场景,以及启用了雾的类似场景。

illustration of the same scene with and without fog

在此图中,左侧的场景有一个清晰的地平线,除此之外没有可见的风景,即使它在现实世界中可见。 右侧的场景通过使用与背景色相同的雾色来遮盖地平线,使多边形似乎淡入距离。 通过将离散雾效果与创造性的场景设计相结合,可以添加情绪,并软化场景中对象的颜色。

Direct3D 提供了两种方法,用于向场景添加雾:像素雾和顶点雾,命名为如何应用雾效果。 有关详细信息,请参阅 像素雾 (Direct3D 9) 顶点雾 (Direct3D 9) 。 简言之,像素雾(也称为表雾)在设备驱动程序中实现,顶点雾在 Direct3D 照明引擎中实现。 应用程序可以使用顶点着色器实现雾,并根据需要同时实现像素雾。

注意

无论使用像素还是顶点雾,应用程序都必须提供合规的投影矩阵,以确保正确应用雾效果。 此限制甚至适用于不使用 Direct3D 转换和照明引擎的应用程序。 有关如何提供适当矩阵的其他详细信息,请参阅 投影转换 (Direct3D 9)

 

以下主题介绍雾,并提供有关在 Direct3D 应用程序中使用各种雾功能的信息。

雾混合由呈现状态控制;它不是可编程像素管道的一部分。

Direct3D 渲染