Поделиться через


Аттенуация и фактор внимания

Диффузные и спекулярные компоненты освещения в уравнении глобального освещения содержат термины, описывающие освещение и конус в центре внимания. Эти термины описаны ниже.

Затухание

Аттенуация света зависит от типа света и расстояния между светом и положением вершины. Чтобы вычислить аттенуацию, используйте одно из следующих уравнений.

Atten = 1/( att0i + att1i * d + att2i * d]

Где:

Параметр Default value Тип Описание Диапазон
att0i 0,0 С плавающей запятой Коэффициент аттенуации констант От 0 до +бесконечности
att1i 0,0 С плавающей запятой Коэффициент линейного аттенуации От 0 до +бесконечности
att2i 0,0 С плавающей запятой Коэффициент аттенуации в квадратичном От 0 до +бесконечности
d Н/П С плавающей запятой Расстояние от положения вершины до светлой позиции Н/П

 

  • Atten = 1, если свет является направление света.
  • Atten = 0, если расстояние между светом и вершиной превышает диапазон света.

Расстояние между светом и вершиной всегда положительно.

d = | Ldir |

Где:

Параметр Default value Тип Описание
Ldir Н/П Трехмерный вектор с значениями x, y и z с плавающей запятой Вектор направления от позиции вершины до позиции света

 

Если d больше диапазона света, Direct3D не выполняет дальнейших вычислений аттенуации и не применяет никаких эффектов от света к вершине.

Константы аттенуации действуют как коэффициенты в формуле - вы можете создавать различные кривые аттенуации, делая простые корректировки к ним. Вы можете задать для attenuation1 значение 1.0, чтобы создать свет, который не затеняет, но по-прежнему ограничен диапазоном, или можно поэкспериментировать с различными значениями для достижения различных эффектов аттенуации.

Затенение в максимальном диапазоне света не равно 0,0. Чтобы предотвратить внезапное появление света, когда они находятся в светлом диапазоне, приложение может увеличить диапазон света. Кроме того, приложение может настроить константы аттенуации, чтобы коэффициент аттенуации был близок к 0,0 в диапазоне света. Значение аттенуации умножается на красные, зеленые и синие компоненты цвета света, чтобы масштабировать интенсивность света в качестве фактора расстояния свет перемещается в вершину.

Фактор внимания

Следующее уравнение указывает фактор внимания.

уравнение фактора внимания

Параметр Default value Тип Описание Диапазон
rhoi Н/П С плавающей запятой cosine(angle) для внимания i Н/П
phii 0,0 С плавающей запятой Угол пенумбра в центре внимания i в радианах [thetai, pi)
thetai 0,0 С плавающей запятой Угол Umbra в центре внимания i в радианах [0, pi)
Спад 0,0 С плавающей запятой Коэффициент падения (-бесконечность, +бесконечность)

 

Где:

rho = norm(Ldcs).norm(Ldir)

and:

Параметр Default value Тип Описание
Ldcs Н/П Трехмерный вектор с значениями x, y и z с плавающей запятой Отрицательное направление света в пространстве камеры
Ldir Н/П Трехмерный вектор с значениями x, y и z с плавающей запятой Вектор направления от позиции вершины до позиции света

 

Вычислив отенение света, чтобы вычислить диффузные и спекулярные компоненты вершины, Direct3D также рассматривает эффекты в центре внимания, если применимо, угол, который свет отражает от поверхности, и отражение текущего материала. В типах Light см. раздел "Внимания".

Математика освещения