Типы света
Свойство типа света определяет тип используемого источника света. Существует три типа освещения в Direct3D - точечное освещение, прожекторы и направление света. Каждый тип освещает объекты в сцене по-разному, с разными уровнями вычислительных затрат.
Точка света
Индикаторы точек имеют цвет и положение в сцене, но ни одного направления. Они дают свет одинаково во всех направлениях, как показано на следующем рисунке.
Лампочка является хорошим примером точечных света. Индикаторы точек влияют на затухание и диапазон, а также освещают сетку на вершине по вершине. Во время освещения Direct3D использует положение света точки в мировом пространстве и координаты вершины, освещенные для получения вектора для направления света, а также расстояние, которое двигалось светом. Оба используются вместе с нормальной вершиной, чтобы вычислить вклад света в освещение поверхности.
Направление света
Направление света имеет только цвет и направление, а не положение. Они выдают параллельный свет. Это означает, что все свет, созданные направленным светом, перемещается через сцену в одном направлении. Представьте себе направление света как источник света на почти бесконечном расстоянии, например солнце. Направление освещения не влияет на затухание или диапазон, поэтому направление и цвет, которые вы указали, являются единственными факторами, которые учитываются, когда Direct3D вычисляет цвета вершин. Из-за небольшого количества факторов освещения они являются наименее вычислительным интенсивным светом для использования.
Прожектор
В центре внимания есть цвет, положение и направление, в котором они выдают свет. Свет, генерируемый из внимания, состоит из яркого внутреннего конуса и более крупного внешнего конуса, при этом интенсивность света уменьшается между двумя, как показано на следующем рисунке.
В центре внимания влияет падение, затухание и диапазон. Эти факторы, а также расстояние света перемещаются к каждой вершине, фигурируются при вычислении эффектов освещения для объектов в сцене. Вычисление этих эффектов для каждой вершины делает в центре внимания наиболее вычислительные затраты на все свет в Direct3D.
Значения Falloff, Theta и Phi используются только в центре внимания. Эти значения определяют, насколько большой или маленький внутренний и внешний конусы объекта в центре внимания и как свет уменьшается между ними.
Тета — это радианский угол внутреннего конуса в центре внимания, а значение Phi — угол внешнего конуса света. Падение определяет, как интенсивность света уменьшается между внешним краем внутреннего конуса и внутренним краем внешнего конуса. Большинство приложений устанавливают значение Falloff равным 1.0, чтобы создать откат, который происходит равномерно между двумя конусами, но при необходимости можно задать другие значения.
На следующем рисунке показана связь между этими значениями и тем, как они могут повлиять на внутренние и внешние конусы света в центре внимания.
В центре внимания выделяется конус света, имеющий две части: яркий внутренний конус и внешний конус. Свет является самым ярким в внутреннем конусе и не присутствует за пределами внешнего конуса, с интенсивностью света, затеняющей между двумя областями. Этот тип аттенуации обычно называется резервным.
Объем света, получаемый вершиной, основан на расположении вершины во внутреннем или внешнем конусе. Direct3D вычисляет точечный продукт вектора направления в центре внимания (L) и вектора от света до вершины (D). Это значение равно косине угла между двумя векторами и служит индикатором положения вершины, которое можно сравнить с углами конуса света, чтобы определить, где вершина может лежать во внутреннем или внешнем конусе. На следующем рисунке представлено графическое представление связи между этими двумя векторами.
Система сравнивает это значение с косином внутреннего и внешнего конусов в центре внимания. Значения Theta и Phi света представляют общий угол конуса для внутренних и внешних конусов. Поскольку аттенуация происходит, так как вершина становится более далекой от центра освещения (а не через общий угол конуса), среда выполнения разделяет эти конусные угла в половину перед вычислением их косинусов.
Если точечный продукт векторов L и D меньше или равен косине внешнего конуса угла, вершина находится за пределами внешнего конуса и не получает света. Если точка продукта L и D больше, чем косинус внутреннего конуса угла, то вершина находится в внутреннем конусе и получает максимальное количество света, по-прежнему учитывая затухание на расстоянии. Если вершина находится где-то между двумя регионами, то откат вычисляется с помощью следующего уравнения.
где:
- Яе - светлая интенсивность после падения
- Альфа — это угол между векторами L и D
- Тета является внутренним конусом угла
- Phi является внешним конусом угла
- p — это падение
Эта формула создает значение от 0,0 до 1.0, которое масштабирует интенсивность света в вершине, чтобы учитывать падение. Также применяется аттенуация в качестве фактора расстояния вершины от света. На следующем графике показано, как различные значения отката могут повлиять на кривую отката.
Эффект различных значений падения на фактическое освещение является тонким, и небольшая штрафная производительность взимается путем формирования выпадающей кривой с значениями выпадания, отличных от 1,0. По этим причинам это значение обычно имеет значение 1.0.
Связанные темы