Функция D3DXFresnelTerm (D3DX10Math.h)

Примечание

Служебная библиотека D3DX является устаревшей. Вместо этого рекомендуется использовать DirectXMath .

Вычислите термин Френеля.

Синтаксис

FLOAT D3DXFresnelTerm(
  _In_ FLOAT CosTheta,
  _In_ FLOAT RefractionIndex
);

Параметры

CosTheta [in]

Тип: FLOAT

Оно должно находиться в диапазоне от 0 до 1.

RefractionIndex [in]

Тип: FLOAT

Индекс преломления материала. Значение должно быть больше 1.

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

Тип: FLOAT

Эта функция возвращает термин Fresnel для неполяризованного света. CosTheta — косинус угла инцидента.

Комментарии

Чтобы найти термин Френеля (F), необходимо выполнить следующие действия:

Если A — это угол частоты, а B — угол преломления, то

F = 0.5 * [tan2(A - B) / tan2(A + B) + sin2(A - B) / sin2(A + B)]
  = 0.5 * sin2(A - B) / sin2(A + B) * [cos2(A + B) / cos2(A - B) + 1]

Let r   = sina(A) / sin(B)      (the relative refractive index)
Let c   = cos(A)
Let g   = (r2 + c2 - 1)1/2

Затем, расширив с помощью удостоверений trig и упрощая, вы получите следующее:

F = 0.5 * (g + c)2 / (g - c)2 * ([c(g + c) - 1]2 / [c(g - c) + 1]2 + 1)

Требования

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

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

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