Обзор освещения
При использовании освещения Direct3D можно разрешить Direct3D обрабатывать детали освещения. При желании расширенные пользователи могут самостоятельно выполнять освещение.
Если освещение включено, Direct3D вычисляет цвет каждой вершины объекта на основе сочетания следующих значений:
- Тексели в связанной карте текстур.
- Диффузные и спекулярные цвета вершины, если они указаны.
- Цвет и интенсивность света, производимого источниками света в сцене или на уровне окружающего света сцены.
Как вы работаете с освещением и материалами, существенно отличается от внешнего вида отрисованной сцены. Материалы определяют, как свет отражается от поверхности. Прямые световые и внешние уровни света определяют свет, отражаемый. При включении освещения необходимо использовать материалы для отрисовки сцены.
Свет не требуется для отрисовки сцены, но подробности в сцене, отрисоченной без света, не видны. В лучшем случае отрисовка незалитой сцены приводит к силуэту объектов в сцене. Это недостаточно подробно для большинства целей.
Прямой свет и внешний свет
Хотя как прямой, так и внешний свет освещают объекты в сцене, они не зависят друг от друга, они имеют очень разные эффекты, и они требуют, чтобы вы работали с ними совершенно разными способами.
Прямое освещение ударяет объект напрямую. Прямой свет всегда имеет направление и цвет, и это фактор для затенения алгоритмов, таких как Гурауд заливка. Различные типы огней выдают прямой свет различными способами, создавая специальные эффекты аттенуации.
Внешний свет эффективно везде в сцене. Внешний свет — это общий уровень света, который заполняет всю сцену независимо от объектов и их расположений в этой сцене. Внешний свет не имеет положения или направления, только цвета и интенсивности. Каждый свет добавляется к общему внешнему свету в сцене.
Цвет внешнего света принимает форму значения RGBA, где каждый компонент является целым числом от 0 до 255. Это в отличие от большинства значений цветов в Direct3D.
Красные, зеленые и синие компоненты объединяются, чтобы сделать окончательный цвет внешнего света. Альфа-компонент управляет прозрачностью цвета. При использовании аппаратного ускорения или эмуляции RGB альфа-компонент игнорируется.
Модель direct3D light и природа
В природе, когда свет создается из источника, он отражается от сотен, если не тысячи или миллионы объектов, прежде чем достичь глаза пользователя. Каждый раз, когда он отражается, некоторые свет поглощаются поверхностью, некоторые разбросаны в случайных направлениях, а остальные идут на другую поверхность или глаз пользователя. Этот процесс продолжается до тех пор, пока свет не уменьшается до ничего или пользователь воспринимает свет.
Очевидно, что вычисления, необходимые для идеальной имитации естественного поведения света, слишком много времени используются для графики Direct3D в режиме реального времени. Таким образом, с скоростью, модель света Direct3D приблизит способ работы света в естественном мире. Direct3D описывает свет с точки зрения красного, зеленого и синего компонентов, которые объединяются для создания окончательного цвета.
В Direct3D, когда свет отражается от поверхности, светлый цвет взаимодействует математически с самой поверхностью, чтобы создать цвет, который в конечном итоге отображается на экране. Конкретные сведения об использовании Direct3D алгоритмов см. в разделе "Математика освещения".
Модель света Direct3D обобщает свет на два типа: внешний свет и прямой свет. Каждый из них имеет разные атрибуты, и каждый взаимодействует с материалом поверхности разными способами. Внешний свет является светом, который был разбросан так много, что его направление и источник неопределенны: он поддерживает низкий уровень интенсивности везде. Косвенное освещение, используемое фотографами, является хорошим примером внешнего света.
Внешний свет в Direct3D, как и в природе, не имеет реального направления или источника, только цвета и интенсивности. На самом деле, уровень внешнего света полностью не зависит от любых объектов в сцене, которая создает свет. Внешний свет не способствует зеркальному отражению.
Прямой свет — это свет, созданный источником в сцене; он всегда имеет цвет и интенсивность, и он перемещается в указанном направлении. Прямой свет взаимодействует с материалом поверхности для создания зрительских выделений, а его направление используется в качестве фактора в алгоритмах заливки, включая заливку Гуруд. При отражении прямого света он не способствует уровню внешнего света в сцене. Источники в сцене, создающие прямой свет, имеют различные характеристики, влияющие на то, как они освещают сцену.
Кроме того, материал многоугольника имеет свойства, влияющие на то, как этот многоугольник отражает свет, который он получает. Вы задаете один признак отражения, описывающий, как материал отражает внешний свет, и вы устанавливаете отдельные признаки для определения спектрулярного и диффузного отражения материала.
Значения цветов для освещения и материалов
Direct3D описывает цвет с точки зрения четырех компонентов (красный, зеленый, синий и альфа),которые объединяются для создания окончательного цвета. Каждый компонент варьируется от 0.0 до 1.0. Хотя как свет, так и материалы используют одну и ту же структуру для описания цвета, значения используются немного по-разному светом и материалами.
Значения цвета для источников света представляют объем определенного компонента света, который он выдает. Так как свет не использует альфа-компонент, актуальны только красные, зеленые и синие компоненты цвета. Вы можете визуализировать три компонента как красные, зеленые и голубые линзы на проекционной телевизоре. Каждая объектива может быть отключена (значение 0,0 в соответствующем элементе), оно может быть как можно более ярким (значение 1.0), или это может быть какой-то уровень между.
Цвета, поступающие через линзы, объединяются, чтобы сделать последний цвет света. Сочетание, например R(1.0), G(1.0), B(1.0) создает белый свет, где R(0.0), G(0,0), B(0.0) не выдает света вообще. Вы можете сделать свет, который выдает только один компонент, что приводит к чистому красному, зеленому или синему свету; или, свет может использовать сочетания для выдачи цветов, таких как желтый или фиолетовый. Вы даже можете задать отрицательные значения компонентов цвета, чтобы создать "темный свет", который фактически удаляет свет из сцены. Кроме того, можно задать для компонентов значение, превышающее 1.0, чтобы создать очень яркий свет.
С помощью материалов, с другой стороны, значения цвета представляют, сколько из светлого компонента отражается поверхностью, отображаемой с помощью этого материала. Материал с компонентами цвета R(1.0), G(1.0), B(1.0), A(1.0) отражает все свет, которое приходит на свой путь. Аналогичным образом, материал с R(0,0), G(1.0), B(0.0), A(1.0) отражает все зеленый свет, направленный на него. Материалы имеют несколько значений отражения для создания различных типов эффектов.
См . типы света и свойства Light.
Связанные темы