Аттенуация и фактор внимания
Диффузные и спекулярные компоненты освещения в уравнении глобального освещения содержат термины, описывающие освещение и конус в центре внимания. Эти термины описаны ниже.
Затухание
Аттенуация света зависит от типа света и расстояния между светом и положением вершины. Чтобы вычислить аттенуацию, используйте одно из следующих уравнений.
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 см. раздел "Внимания".
Связанные темы