D3DXFresnelTerm 函数 (D3DX10Math.h)

注意

D3DX 实用工具库已弃用。 建议改用 DirectXMath

计算弗雷斯内尔术语。

语法

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

参数

CosTheta [in]

类型: FLOAT

该值必须介于 0 和 1 之间。

RefractionIndex [in]

类型: FLOAT

材料的折射索引。 该值必须大于 1。

返回值

类型: FLOAT

此函数返回非极化光的弗雷斯内尔术语。 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

然后,使用三角标识进行扩展并简化,可以:

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

要求

要求 Value
标头
D3DX10Math.h

D3DX10.lib

另请参阅

数学函数