Прочитать на английском

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


Attenuation and Spotlight Factor (Direct3D 9)

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

Затухание

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

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

Где:

Параметр Значение по умолчанию Тип Описание Диапазон
att0i 0.0 ПЛАВАТЬ Коэффициент аттенуации констант От 0 до +бесконечности
Att1i 0.0 ПЛАВАТЬ Коэффициент линейного аттенуации От 0 до +бесконечности
Att2i 0.0 ПЛАВАТЬ Коэффициент аттенуации в квадратичном От 0 до +бесконечности
d N/A ПЛАВАТЬ Расстояние от положения вершины до светлой позиции N/A

 

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

Значения att0, att1, att2 задаются элементами Attenuation0, Attenuation1 и Attenuation2 D3DLIGHT9.

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

d = | Ldir |

Где:

Параметр Значение по умолчанию Тип Описание
Ldir N/A D3DVECTOR Вектор направления от позиции вершины до позиции света

 

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

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

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

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

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

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

Параметр Значение по умолчанию Тип Описание Диапазон
rhoi N/A ПЛАВАТЬ cosine(angle) для внимания i N/A
phii 0.0 ПЛАВАТЬ Угол пенумбра в центре внимания i в радианах [thetai, pi)
thetai 0.0 ПЛАВАТЬ Угол Umbra в центре внимания i в радианах [0, pi)
Спад 0.0 ПЛАВАТЬ Коэффициент падения (-бесконечность, +бесконечность)

 

Где:

rho = норм(Ldcs).норм(Ldir)

и:

Параметр Значение по умолчанию Тип Описание
контроллеров домена L N/A D3DVECTOR Отрицательное направление света в пространстве камеры
Ldir N/A D3DVECTOR Вектор направления от позиции вершины до позиции света

 

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

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