衰减和聚焦因素

全局照明公式的漫射和反射光分量涉及介绍光线衰减和聚焦锥形的术语。 下面介绍了这些术语。

衰减

光线的衰减取决于光线的类型和光线与顶点位置之间的距离。 若要计算衰减,请使用以下公式之一。

Atten = 1/( att0i + att1i * d + att2i * d²)

其中:

参数 默认值 类型 说明 范围
att0i 0.0 浮点 恒定衰减系数 0 至正无穷
att1i 0.0 浮点 线性衰减因素 0 至正无穷
att2i 0.0 浮点 二次衰减因素 0 至正无穷
d 空值 浮点 顶点位置至光线位置的距离 空值

 

  • 如果光线是定向光,则 Atten = 1。
  • 如果光线与顶点之间的距离超出光线范围,则 Atten = 0。

光线与顶点位置之间的距离始终为正。

d = | Ldir |

其中:

参数 默认值 类型 说明
Ldir 空值 含 x、y 和 z 浮点值的 3D 矢量 从顶点位置到光线位置的方向矢量

 

如果 d 大于光线范围,Direct3D 不再进行衰减计算,也不再对从光线到顶点的区域应用效果。

衰减常量充当公式中的系数 - 你可以通过对其进行简单的调整生成各种衰减曲线。 你可以将 Attenuation1 设置为 1.0,以创建不会衰减但仍然受制于范围的光线,也可以测试不同的值以实现不同的衰减效果。

光线的最大范围处的衰减不是 0.0。 若要阻止光线范围内的光线突然出现,应用程序可以扩大光线范围。 或者,应用程序可以设置衰减常量,以便光线范围内的衰减因素接近 0.0。 将衰减值乘以光线颜色的红色、绿色和蓝色分量,以缩放作为光线到达顶点的距离因素的光线强度。

聚焦因素

以下公式指定了聚焦因素。

聚焦因素的公式

参数 默认值 类型 说明 范围
rhoi 空值 浮点 聚焦 i 的余弦(角度) 空值
phii 0.0 浮点 聚焦 i 的 Penumbra 角度(以弧度为单位) [thetai, pi)
thetai 0.0 浮点 聚焦 i 的 Umbra 角度(以弧度为单位) [0, pi)
衰减 0.0 浮点 衰减因素 (负无穷,正无穷)

 

其中:

rho = norm(Ldcs).norm(Ldir)

and:

参数 默认值 类型 说明
Ldcs 空值 含 x、y 和 z 浮点值的 3D 矢量 相机空间中光线方向的负数
Ldir 空值 含 x、y 和 z 浮点值的 3D 矢量 从顶点位置到光线位置的方向矢量

 

计算光线衰减后,为计算顶点的漫射和反射分量,Direct3D 还会考虑聚焦效果(如果适用)、光线从表面反射的角度和当前材料的反射率。 在光线类型中,请参阅“聚焦”。

照明的数学运算