Поделиться через


Формулы тумана (Direct3D 9)

Приложения C++ могут управлять тем, как туман влияет на цвет объектов в сцене, изменяя способ вычисления Microsoft Direct3D эффектов тумана на расстоянии. Перечислимый тип D3DFOGMODE содержит элементы, определяющие три формулы тумана. Все формулы вычисляют коэффициент тумана как функцию расстояния с учетом параметров, заданных приложением.

Линейный туман

Для этого используется следующее уравнение D3DFOG_LINEAR.

уравнение линейного тумана direct3d

where

  • start — это расстояние, с которого начинаются эффекты тумана.
  • end — это расстояние, с которого эффекты тумана больше не увеличиваются.
  • d представляет глубину или расстояние от точки зрения. Для тумана на основе диапазона значение d — это расстояние между положением камеры и вершиной. Для тумана, не основанного на диапазоне, значение d является абсолютным значением Z-координаты в пространстве камеры.

Экспоненциальный туман

Линейные и экспоненциальные формулы поддерживаются как для пиксельного тумана, так и для вершинного тумана.

Для этого используется следующее уравнение D3DFOG_EXP.

уравнение экспоненциального тумана direct3d

where

  • e является основой естественных логарифмов (приблизительно 2,71828).
  • плотность — это произвольная плотность тумана, которая может варьироваться от 0,0 до 1,0.
  • d представляет глубину или расстояние от точки зрения, как указано ранее.

Для этого используется следующее уравнение D3DFOG_EXP2.

уравнение экспоненциального 2 тумана direct3d

where

  • e является основой естественных логарифмов, как указано выше.
  • плотность — это произвольная плотность тумана, которая может варьироваться от 0,0 до 1,0, как указано выше.
  • d представляет глубину или расстояние от точки зрения, как указано выше.

Примечание

Система сохраняет коэффициент тумана в альфа-компоненте зеркального цвета для вершины. Если приложение выполняет собственное преобразование и освещение, можно вручную вставить значения коэффициентов тумана, которые будут применены системой во время отрисовки.

 

На следующем графике показаны эти формулы с использованием общих значений, как в параметрах формулы.

диаграмма формул тумана по расстоянию и количеству цвета

D3DFOG_LINEAR — 1,0 в начале и 0,0 в конце. Он не измеряется относительно ближней или дальней плоскости.

Когда Direct3D вычисляет эффекты тумана, он использует коэффициент тумана из одного из предыдущих уравнений в следующем уравнении смешения.

уравнение эффектов тумана для direct3d

Эта формула эффективно масштабирует цвет текущего многоугольника C по коэффициенту тумана f и добавляет произведение к цвету тумана C, масштабируемом на побитовом обратном коэффициенте тумана. Полученное значение цвета представляет собой смесь цвета тумана и исходного цвета в качестве фактора расстояния. Формула применяется ко всем устройствам, поддерживаемым в Microsoft DirectX 7.0 и более поздних версий. Для устаревшего устройства рампы коэффициент тумана масштабирует компоненты рассеянного и зеркального цвета, зажатые в диапазоне 0,0 и 1,0 включительно. Коэффициент тумана обычно начинается с 1,0 для ближней плоскости и уменьшается до 0,0 на дальней плоскости.

Типы тумана