diff --git a/02 Lighting/05 Light casters.md b/02 Lighting/05 Light casters.md index 39f0e3f..8ab07ee 100644 --- a/02 Lighting/05 Light casters.md +++ b/02 Lighting/05 Light casters.md @@ -91,52 +91,7 @@ else if(lightVector.w == 1.0) 随着光线穿越更远的距离相应地减少亮度,通常被称为衰减。一种随着距离减少亮度的方式是使用线性等式。这样的一个随着距离减少亮度的线性方程,可以使远处的物体更暗。然而,这样的线性方程效果会有点假。在真实世界,通常光在近处时非常亮,但是一个光源的亮度,开始的时候减少的非常快,之后随着距离的增加,减少的速度会慢下来。我们需要一种不同的方程来减少光的亮度。 幸运的是一些聪明人已经早就把它想到了。下面的方程把一个片段的光的亮度除以一个已经计算出来的衰减值,这个值根据光源的远近得到: - - - - - (1) - - - - F - - a - t - t - - - = - - I - - - K - c - - + - - K - l - - - d - + - - K - q - - - - d - 2 - - - - - - - +[math] 在这里I是当前片段的光的亮度,d代表片段到光源的距离。为了计算衰减值,我们定义3个项:常数项Kc,一次项Kl和二次项Kq。 常数项通常是1.0,它的作用是保证坟墓永远不会比1小,因为它可以利用一定的距离增加亮度,这个结果不会影响到我们所寻找的。 @@ -359,34 +314,8 @@ color = vec4(light.ambient*vec3(texture(material.diffuse,TexCoords)), 1.0f); 为创建外圆锥,我们简单定义另一个余弦值,它代表聚光灯的方向向量和外圆锥的向量(等于它的半径)的角度。然后,如果片段在内圆锥和外圆锥之间,就会给它计算出一个0.0到1.0之间的亮度。如果片段在内圆锥以内这个亮度就等于1.0,如果在外面就是0.0。 我们可以使用下面的公式计算这样的值: - - - - - (2) - - - I - = - - - θ - - γ - - ϵ - - - - - -这里ε是内部(φ)和外部圆锥 - ϵ - = - ϕ - - γ -的差。结果I的值是聚光灯在当前片段的亮度。 +[math] +这里ε是内部(φ)和外部圆锥[math]的差。结果I的值是聚光灯在当前片段的亮度。 很难用图画描述出这个公式是怎样工作的,所以我们尝试使用一个例子: