개념

object에 빛을 투사하는 광원을 Light caster라고 부르는데, 해당 글에서는 3가지 종류의 Light caster에 대해서 알아보겠습니다.

Directional Light

햇빛을 생각하면 쉽게 연상할 수 있는 광원입니다. 광원이 굉장히 멀리 떨어져 있으며 빛이 강한 힘을 가져서 멀리 나아갑니다. 이에 따라, 일정한 조도와 방향을 가지며, 이는 object와 viewer의 위치에 관계없이 발하게됩니다. 빛의 위치 없이 방향만을 가지고 연산을 수행하면 구현할 수 있습니다.

Point Light

횃불이나 전구와 같이 위치를 가지고 모든 방향을 향해서 빛을 발하는 광원을 말합니다. 빛은 한정된 거리를 비추며 가까울 수록 밝고, 멀수록 점점 밝기가 감소되는 특징을 가집니다. 이걸 **Attenuation**이라고 부릅니다. Attenuation에서 빛은 Linear하게 밝기가 감소되지 않고, 멀수록 급격하게 밝기가 감소되는 특징을 가집니다. 이를 식으로 표현하면 아래와 같습니다.

d는 fragment에서 빛까지의 거리를 나타냅니다.

는 분모가 1보다 작은 값이 되는 것을 방지하기 위한 값입니다. 1.0의 고정된 값을 가지게 됩니다. 해당 값이 없다면 점진적인 변화값을 가질 수 없게 됩니다.

은 빛의 강도가 linear하게 줄어들 수 있도록 곱하는 값입니다.

는 거리를 제곱한 값에 곱해져서 값이 기하급수적으로 감소되도록 하는 값입니다.

참고자료

https://learnopengl.com/Lighting/Light-casters