Функция D3DXFresnelTerm (D3dx9math.h)
Вычислите термин Френеля.
Синтаксис
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)
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел