Fog (Direct3D 9)

向 3D 场景添加雾可以增强真实感、提供氛围或设置情绪,并且有时在远处几何图形进入视野时会导致模糊的伪像。 Direct3D 支持两种迷雾模型:像素雾和顶点雾,每个模型都有自己的功能和编程接口。

从本质上讲,雾是通过根据场景中对象的深度或其与视点的距离,将场景中对象的颜色与所选雾色混合来实现的。 随着对象越来越远,其原始颜色越来越多地与所选的雾色混合,从而产生物体被漂浮在场景中的微小粒子日益遮盖的错觉。 下图显示了一个没有雾渲染的场景,以及一个在启用迷雾的情况下呈现的类似场景。

有雾和没有雾的同一场景的插图

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

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

注意

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

 

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

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

Direct3D 渲染