내가 생각하는 조명벡터의 방향
빛의 벡터를 그리는 방법에는 사실 두 가지가 있다.
- 정점을 밑둥으로 하여 빛의 위치를 가리키는 벡터
- 빛의 위치를 밑둥으로 하여 정점을 가리키는 벡터
개인적으로는 빛의 위치를 밑둥으로 두는 방식을 선호한다. 그냥 더 상식적으로 맞아 보여서지, 특별한 이유가 있는 건 아니다.
정점을 밑둥으로 하면 난반사광(diffuse lighting) 계산 시 부호를 뒤집지 않아도 되기 때문에 속도가 조금 빨라질 수 있다는 주장도 있다.
하지만 셰이더에서는 거의 차이가 없고, CPU에서라 해도 미미한 수준일 것이다.
이런 사소한 최적화 때문에 상식적인 구조를 포기하는 걸 별로 좋아하지 않기에
나는 앞으로도 계속 빛을 기준점으로 하는 방식을 사용할 예정이다.
그림으로 표현하면?
(아래 그림은 벡터 반사 예시지만 개념적으로 비슷하다 — 출처: 위키피디아)

OOP 언어만 배우면 잘못 | 설계까지 함께 배운다 | 진짜 객체지향
코드만 알면 반쪽짜리 개발자. 언어와 설계를 함께 배우려면 POCU 아카데미에서 객체지향을 들으세요!