Формулы тумана (Direct3D 9)
Приложения C++ могут управлять тем, как туман влияет на цвет объектов в сцене, изменяя способ вычисления Microsoft Direct3D эффектов тумана на расстоянии. Перечислимый тип D3DFOGMODE содержит элементы, определяющие три формулы тумана. Все формулы вычисляют коэффициент тумана как функцию расстояния с учетом параметров, заданных приложением.
Линейный туман
Для этого используется следующее уравнение D3DFOG_LINEAR.
where
- start — это расстояние, с которого начинаются эффекты тумана.
- end — это расстояние, с которого эффекты тумана больше не увеличиваются.
- d представляет глубину или расстояние от точки зрения. Для тумана на основе диапазона значение d — это расстояние между положением камеры и вершиной. Для тумана, не основанного на диапазоне, значение d является абсолютным значением Z-координаты в пространстве камеры.
Экспоненциальный туман
Линейные и экспоненциальные формулы поддерживаются как для пиксельного тумана, так и для вершинного тумана.
Для этого используется следующее уравнение D3DFOG_EXP.
where
- e является основой естественных логарифмов (приблизительно 2,71828).
- плотность — это произвольная плотность тумана, которая может варьироваться от 0,0 до 1,0.
- d представляет глубину или расстояние от точки зрения, как указано ранее.
Для этого используется следующее уравнение D3DFOG_EXP2.
where
- e является основой естественных логарифмов, как указано выше.
- плотность — это произвольная плотность тумана, которая может варьироваться от 0,0 до 1,0, как указано выше.
- d представляет глубину или расстояние от точки зрения, как указано выше.
Примечание
Система сохраняет коэффициент тумана в альфа-компоненте зеркального цвета для вершины. Если приложение выполняет собственное преобразование и освещение, можно вручную вставить значения коэффициентов тумана, которые будут применены системой во время отрисовки.
На следующем графике показаны эти формулы с использованием общих значений, как в параметрах формулы.
D3DFOG_LINEAR — 1,0 в начале и 0,0 в конце. Он не измеряется относительно ближней или дальней плоскости.
Когда Direct3D вычисляет эффекты тумана, он использует коэффициент тумана из одного из предыдущих уравнений в следующем уравнении смешения.
Эта формула эффективно масштабирует цвет текущего многоугольника C по коэффициенту тумана f и добавляет произведение к цвету тумана C, масштабируемом на побитовом обратном коэффициенте тумана. Полученное значение цвета представляет собой смесь цвета тумана и исходного цвета в качестве фактора расстояния. Формула применяется ко всем устройствам, поддерживаемым в Microsoft DirectX 7.0 и более поздних версий. Для устаревшего устройства рампы коэффициент тумана масштабирует компоненты рассеянного и зеркального цвета, зажатые в диапазоне 0,0 и 1,0 включительно. Коэффициент тумана обычно начинается с 1,0 для ближней плоскости и уменьшается до 0,0 на дальней плоскости.
Связанные темы