Окружающее освещение
Внешнее освещение обеспечивает постоянное освещение для сцены. Он освещает все вершины объектов так же, поскольку он не зависит от других факторов освещения, таких как нормали вершины, направление света, положение света, диапазон или аттенуация. Внешнее освещение константно во всех направлениях, и он цветит все пиксели объекта одинаково. Это быстро вычислить, но оставляет объекты, выглядящие плоскими и нереалистичными.
Окружающее освещение является самым быстрым типом освещения, но он производит наименее реалистичные результаты. Direct3D содержит одно глобальное свойство внешнего освещения, которое можно использовать без создания света. Кроме того, можно задать любой объект света для обеспечения внешнего освещения.
Окружающее освещение сцены описывается следующим уравнением.
Внешнее освещение = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]
Где:
Параметр | Default value | Тип | Описание |
---|---|---|---|
Cₐ | (0,0,0,0) | D3DCOLORVALUE | Цвет окружающего материала |
Gₐ | (0,0,0,0) | D3DCOLORVALUE | Глобальный цвет окружающей среды |
Atteni | (0,0,0,0) | D3DCOLORVALUE | Свет затухания света. См . сведения о аттенуации и факторе внимания. |
Пятноi | (0,0,0,0) | D3DVECTOR | В центре внимания свет. См . сведения о аттенуации и факторе внимания. |
sum | Неприменимо | Неприменимо | Сумма окружающего света |
Lai | (0,0,0,0) | D3DVECTOR | Светлый цвет окружающего света |
Значение для Cₐ равно:
- цвет вершины1, если AMBIENTSOURCE = D3DMCS_COLOR1, а первый цвет вершины предоставляется в объявлении вершины.
- цвет вершины2, если AMBIENTMATERIALSOURCE = D3DMCS_COLOR2, а второй цвет вершины предоставляется в объявлении вершин.
- цвет окружающего материала.
Примечание. Если используется любой параметр AMBIENT MATERIALSOURCE, а цвет вершин не указан, используется цвет окружающей среды материала.
Чтобы использовать цвет окружающей среды материала, используйте Set Material, как показано в приведенном ниже примере кода.
Gₐ — это глобальный цвет окружающей среды. Он устанавливается с помощью SetRenderState(D3DRS_AMBIENT). Существует один глобальный цвет окружающей среды в сцене Direct3D. Этот параметр не связан с объектом света Direct3D.
Lai — это внешний цвет итеного света в сцене. Каждый свет Direct3D имеет набор свойств, один из которых является цветом окружающей среды. Термин sum(Lai) — это сумма всех цветов окружающей среды в сцене.
Пример
В этом примере объект цветируется с помощью внешнего света сцены и цвета окружающей среды.
#define GRAY_COLOR 0x00bfbfbf
Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;
В соответствии с уравнением результирующий цвет для вершин объекта является сочетанием цвета материала и светлого цвета.
На следующих двух иллюстрациях показан цвет материала, серый и светлый цвет, который является ярким красным.
Результирующая сцена показана на следующем рисунке. Единственным объектом в сцене является сфера. Внешний свет освещает все вершины объектов с одинаковым цветом. Он не зависит от нормальной вершины или направления света. В результате сфера выглядит как 2D-круг, так как нет разницы в заливке вокруг поверхности объекта.
Чтобы дать объектам более реалистичный вид, примените диффузное или зрительное освещение в дополнение к окружающему освещению.
Связанные темы