개념
object에 빛을 투사하는 광원을 Light caster라고 부르는데, 해당 글에서는 3가지 종류의 Light caster에 대해서 알아본다.
Directional Light
햇빛을 생각하면 쉽게 연상할 수 있는 광원이다. 광원이 굉장히 멀리 떨어져 있으며 빛이 강한 힘을 가져서 멀리 나아간다. 이에 따라, 일정한 조도와 방향을 가지며, 이는 object와 viewer의 위치에 관계없이 발하게 된다. 빛의 위치 없이 방향만을 가지고 연산을 수행하면 구현할 수 있다.
Point Light
횃불이나 전구와 같이 위치를 가지고 모든 방향을 향해서 빛을 발하는 광원을 말한다. 빛은 한정된 거리를 비추며 가까울 수록 밝고, 멀수록 점점 밝기가 감소되는 특징을 가진다. 이걸 **Attenuation**이라고 부른다. Attenuation에서 빛은 Linear하게 밝기가 감소되지 않고, 멀수록 급격하게 밝기가 감소되는 특징을 가진다. 이를 식으로 표현하면 아래와 같다.
d는 fragment에서 빛까지의 거리를 나타낸다.
는 분모가 1보다 작은 값이 되는 것을 방지하기 위한 값이다. 1.0의 고정된 값을 가지게 된다. 해당 값이 없다면 점진적인 변화값을 가질 수 없게 된다.
은 빛의 강도가 linear하게 줄어들 수 있도록 곱하는 값이다.
는 거리를 제곱한 값에 곱해져서 값이 기하급수적으로 감소되도록 하는 값이다.