본문 바로가기
서적 정리/DirectX11을 이용한 3D 게임 프로그래밍 입문

67.점적광(Spot Light)

by 민돌이2 2022. 3. 3.

점적광의 대표적인 예는 손전등이다. 점적광은 광원 Q에서 d 방향으로 뻗어 나가는 원뿔 형태의 빛이다.

다른 빛들과 마찬가지로 점적광의 빛 벡터는 빛이 나아가는 방향의 반대이다

P는 빛을 받는 점이고 Q는 점적광원의 위치이다.

위 그림을 보면 P는 오직 -L과 d 사이의 각도 Φ가 원뿔 각도 Φmax보다 작을 때에만 원뿔 안에 있다. 또한 Φ가 증가함에 따라 빛의 세기가 감소한다(62장 참고). 빛의 감쇠를 의 함수로서 제어하려면 아래와 같은 함수를 사용하면 된다.

cos는 벡터 -L과 d는 단위 벡터일 때 내적으로서 변환이 가능하다는 점을 잊지 말자. 위 공식을 보면 Phi가 증가함에 따라 빛의 세기가 감소하고, 지수 s를 조정함으로써 Φmax를 간접적으로 제어할 수 있다. 지수 s가 클수록 Φmax가 증가한다.

점적광 방정식은 점광 방정식에 점적광 원뿔을 기준으로 한 점의 위치에 따른 빛의 감쇠를 표현하는 점적광 계수를 곱한 것이다. 다음은 점적광 항을 도입한 새로운 조명 방정식이다.

위 식을 보면 점적광 계산은 Kspot 계수를 구해서 곱해야 하기 때문에 점광 계산보다 비싸다. 마찬가지로 점광 계산은 거리 d를 구해야 하고 감쇠 공식으로 나눠야 하므로 지향광 계산보다 비싸다. 정리하자면, 계산 비용은 지향광원 < 점광 < 점적광 이다.

728x90

'서적 정리 > DirectX11을 이용한 3D 게임 프로그래밍 입문' 카테고리의 다른 글

71.조명 요약  (0) 2022.03.16
70.조명된 두개골 예제  (0) 2022.03.16
69.조명 예제  (0) 2022.03.07
68.조명 구현  (0) 2022.03.05
66.점광(Point Light)  (0) 2022.03.03
65.평행광(Parallel Light)  (0) 2022.03.03
64.재질의 설정  (0) 2022.03.03
63.조명 중간 정리  (0) 2022.03.03

댓글