Введение в программирование трехмерных игр с DX9



         

Зональный свет



Рисунок 5.6. Зональный свет



Рисунок 5.6. Зональный свет


В коде источники света представляются структурой D3DLIGHT9.

typedef struct _D3DLIGHT9 { D3DLIGHTTYPE Type; D3DCOLORVALUE Diffuse; D3DCOLORVALUE Specular; D3DCOLORVALUE Ambient; D3DVECTOR Position; D3DVECTOR Direction; float Range; float Falloff; float Attenuation0; float Attenuation1; float Attenuation2; float Theta; float Phi; } D3DLIGHT9;

Type — Задает тип источника света и может принимать одно из трех значений: D3DLIGHT_POINT, D3DLIGHT_SPOT или D3DLIGHT_DIRECTIONAL.

Diffuse — Цвет рассеиваемой составляющей испускаемого источником света.

Specular — Цвет отражаемой составляющей испускаемого источником света.

Ambient — Цвет фоновой составляющей испускаемого источником света.

Position — Вектор, задающий местоположение источника света в пространстве. Для направленного света значение не используется.

Direction — Вектор, задающий направление, в котором распространяется свет. Для точечного света не используется.

Range — Максимальное расстояние, на которое может распространиться свет прежде чем окончательно потухнет. Значение не может быть больше чем √FLT_MAX и не оказывает влияния на направленный свет.

Falloff — Значение используется только для зонального света. Оно определяет как меняется интенсивность света в пространстве между внутренним и внешним конусами. Обычно этому параметру присваивают значение 1.0f.

Attenuation0, Attenuation1, Attenuation2 — Переменные затухания, определяющие как меняется интенсивность света с увеличением расстояния до источника света. Эти переменные используются только для точечного и зонального света. Переменная Attenuation0 задает постоянное затухание, Attenuation1 — линейное затухание и Attenuation2 — квадратичное затухание. Вычисления выполняются по формуле


формула 6

где D — это расстояние от источника света, а A0, A1, A2 соответственно Attenuation0, Attenuation1 и Attenuation2.




Содержание  Назад  Вперед