Функция D3DXSHEvalDirectionalLight (D3dx9math.h)

Примечание

Библиотека служебных программ D3DX (D3DX 9, D3DX 10 и D3DX 11) устарела и не поддерживается для приложений Магазина Windows.

Примечание

Вместо этой функции рекомендуется использовать функцию библиотеки "Математика сферических гармоник " XMSHEvalDirectionalLight.

Оценивает направленный свет и возвращает спектральные данные сферической гармонии (SH).

Синтаксис

HRESULT D3DXSHEvalDirectionalLight(
  _In_        UINT        Order,
  _In_  const D3DXVECTOR3 *pDir,
  _In_        FLOAT       RIntensity,
  _In_        FLOAT       GIntensity,
  _In_        FLOAT       BIntensity,
  _Out_       FLOAT       *pROut,
  _Out_       FLOAT       *pGOut,
  _Out_       FLOAT       *pBOut
);

Параметры

Порядок [в]

Тип: UINT

Порядок оценки SH. Должен находиться в диапазоне D3DXSH_MINORDER для D3DXSH_MAXORDER включительно. При вычислении создаются коэффициенты Order². Степень оценки — Order - 1.

pDir [in]

Тип: const D3DXVECTOR3*

Указатель на вектор направления оси полушария (x, y, z), в котором вычисляются базовые функции SH. См. заметки.

RIntensity [in]

Тип: FLOAT

Красная интенсивность света.

GIntensity [in]

Тип: FLOAT

Зеленая интенсивность света.

BIntensity [in]

Тип: FLOAT

Синяя интенсивность света.

pROut [out]

Тип: FLOAT*

Указатель на выходной вектор SH для красного компонента.

pGOut [out]

Тип: FLOAT*

Необязательный указатель на выходной вектор SH для зеленого компонента.

pBOut [out]

Тип: FLOAT*

Необязательный указатель на выходной вектор SH для синего компонента.

Возвращаемое значение

Тип: HRESULT

Если функция выполняется успешно, возвращаемое значение будет D3D_OK. Если функция завершается сбоем, возвращаемое значение может быть следующим: D3DERR_INVALIDCALL.

Комментарии

Выходной вектор вычисляется таким образом, что если коэффициент интенсивности R/G/B равен 1, результирующее выходное сияние точки непосредственно под светом на диффузном объекте с альбедо 1 будет равно 1,0. Будет вычислено три спектральные выборки; PROut будет возвращен, в то время как pGOut и pBOut могут быть возвращены.

На шаре с радиусом единицы измерения, как показано на следующем рисунке, направление можно указать просто с помощью теты, угла относительно оси Z в правом направлении и phi, угла от z.

иллюстрация сферы с радиусом единицы измерения

В следующих уравнениях показана связь между декартовыми (x, y, z) и сферическими координатами (theta, phi) на сфере единиц измерения. Угол тета меняется в диапазоне от 0 до 2 пи, а phi — от 0 до пи.

уравнения связи между декартовой и сферической координатами

Требования

Требование Значение
Заголовок
D3dx9math.h
Библиотека
D3dx9.lib

См. также раздел

Математические функции

Предварительно вычисляемая передача radiance (Direct3D 9)