雾 (Direct3D 9)

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

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

与没有雾 同一场景的插图

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

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

注意

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

 

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

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

Direct3D 渲染