netlib.narod.ru< Назад | Оглавление | Далее >

19.8. Пример приложения: туман

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

Хотя мы и не можем уделить этой теме то внимание, которого она заслуживает, здесь мы приведем краткий пример реализации тумана. Мы не будем вдаваться в детали, но покажем и исследуем код Direct3D, который является интуитивно понятным.

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

ПРИМЕЧАНИЕ
Direct3D также поддерживает пиксельный туман (также называемый табличным туманом), который является более точным, чем вершинный туман.

//
// Файл:     fog.txt
// Описание: Файл эффекта, устанавливающий режимы визуализации
//           для линейного вершинного тумана
//
technique Fog
{
     pass P0
     {
          //
          // Устанавливаем различные режимы визуализации
          //

          pixelshader      = null;
          vertexshader     = null;
          fvf              = XYZ | Normal;
          Lighting         = true;
          NormalizeNormals = true;
          SpecularEnable   = false;

          //
          // Режимы тумана
          //

          FogVertexMode = LINEAR; // Линейная функция тумана
          FogStart = 50.0f;       // Туман начинается в
                                  // 50 единицах от камеры.
          FogEnd = 300.0f;        // Туман заканчивается в
                                  // 300 единицах от камеры
          FogColor = 0x00CCCCCC;  // Туман серого цвета
          FogEnable = true;       // Разрешить вершинный туман
     }
}

Как видите, линейный вершинный туман управляется через пять простых режимов визуализации:

К любым объектам, которые визуализируются с использованием файла эффекта fog.txt будет применен эффект тумана. Благодаря этому мы можем контроллировать, какие объекты будут затуманены, а какие — нет. Это полезно для выборочного затенения областей. Например, обычно туман находится на улице, а внутри домов тумана нет. Также часто требуется скрывать в тумане только определенные части территории, а другие оставлять незатуманенными. На рис. 19.2 показано окно рассматриваемого в данном разделе примера Fog Effect.


Рис. 19.2. Окно программы Fog Effect

Рис. 19.2. Окно программы Fog Effect. В этом примере мы используем линейную функцию тумана и режимы визуализации тумана задаются в файле эффекта



netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz