Computer Graphics/OpenGL

OpenGL 정리 - 16. Light Casters

surkim 2024. 9. 23. 16:02

이번에는 다양한 Light Casters에 대해 알아보겠다. Light Caster는 물체에 빛을 쏘는 광원의 유형을 의미하며, 주로 Directional Light, Point Light, Spot Light 세 가지가 많이 사용된다.


1. Directional Light

Directional Light는 광원이 매우 멀리 떨어져 있어서 모든 지점에 동일한 방향으로 평행하게 빛이 발사되는 형태다. 태양과 같은 광원을 예로 들 수 있다. 태양처럼 광원이 무한히 멀리 있다고 가정하면, 지구 상의 모든 지점에 태양광이 같은 방향에서 들어오기 때문에 평행한 빛으로 처리하게 된다.


2. Point Light

Point Light는 한 점에서 시작해서 모든 방향으로 빛이 퍼지는 광원이다. 흔히 볼 수 있는 전구가 대표적인 예다. 이전에 다뤘던 대부분의 광원 예제들이 Point Light를 사용했었다.

하지만 Point Light는 거리와 함께 빛이 감쇠(Attenuation)되며, 이것이 중요한 포인트다. 빛은 거리의 제곱에 반비례하여 감쇠하지만, 실제로 그렇게 설정하면 급격히 어두워지기 때문에, 보정된 감쇠 모델을 사용한다.

Attenuation (감쇠)

Attenuation은 광원이 멀어질수록 빛의 세기가 약해지는 현상을 말한다. 일반적으로 광원과의 거리가 멀어질수록 빛의 강도는 거리의 제곱에 반비례하게 줄어들지만, Local Illumination Model에서는 이렇게 처리할 경우 빛이 너무 빠르게 줄어든다. 이를 보정하기 위해 Kc, Kl, Kq라는 세 개의 파라미터를 사용해 감쇠를 제어한다.

  • Kc: 상수 감쇠 (Constant attenuation)
  • Kl: 선형 감쇠 (Linear attenuation)
  • Kq: 제곱 감쇠 (Quadratic attenuation)

3. Spot Light

Spot Light는 특정 방향으로만 빛을 쏘는 광원이다. 손전등이나 무대 조명에서 자주 볼 수 있다. Spot Light는 광원의 위치뿐만 아니라 광원의 방향도 가지고 있어, 특정 각도 내에서만 빛을 쏘는 것이 특징이다.

부드러운 경계선 처리

Spot Light에서는 경계선이 날카로울 수 있기 때문에, 경계선을 부드럽게 처리하기 위해 안쪽 각도와 바깥쪽 각도를 설정한다. 안쪽 각도 내에서는 빛이 100%로 적용되지만, 안쪽과 바깥쪽 각도 사이에서는 빛의 세기가 점차적으로 감소한다. 이로 인해 자연스럽게 빛이 퍼지는 효과를 줄 수 있다.