Lighting


pixel들에 texture까지 입힌 상황에서 마지막으로 남은 것은 빛을 입히는 것입니다. 실제로 빛이 있고 없고는 엄청나게 큰 퀄리티 차이를 만드는데요, 이 글에서는 phong lighting model을 이용하여 빛을 적용하는 것에 대해 다뤄볼 예정입니다.

Phong Lighting Model


퐁 조명 모델은 3가지 항을 통해 빛을 모델링합니다.

  1. Diffuse Term
  2. Specular Term
  3. Ambient and Emissive Term

사실이 각각의 항은 모두 상식적인 선에서 이해가 가는 항목들입니다. 하나씩 보시죠.

Diffuse Term

물체이 특정 지점에 빛이 쬐어지면 그 점의 normal vector와 광선의 방향 사이의 각도에 따라서 그 지점이 보일지 안 보일지 정해질 것이고, 그 물체가 가진 색이나 표면 특성에 따라서 어떻게 보일지 정해질 것입니다.

이런 당연한 사실을 나타낸 항이 Diffuse Term입니다. 그래서 다음과 같은 식으로 모델링하며, m_d는 물체의 특성 계수, l은 빛의 방향, n은 normal 벡터, s_d는 빛의 세기를 의미합니다.



Specular Term

Specular는 물체의 반짝이는 표면을 나타냅니다. 당구공같은 걸 보면 빛쪽에 있는 표면이 강하게 빛나서 거의 하얀색으로 보이는 걸 알 수 있습니다. Specular는 이러한 부분을 나타낸 것인데요.

당연히 물체의 normal 벡터와 빛의 방향이 일치할수록 강하게 빛을 받아 반짝일 것이기때문에 아래와 같이 나타내게됩니다.





Ambient & Emissive

마지막으로는 Ambient 항입니다. 아무리 어두운 환경이나 빛이 닿지않는 곳이라도 미세하게 그 물체가 보이는데요, 왜냐하면 다른 곳에서 무수한 반사를 통해 빛이 닿거나 자체적으로 발산하기때문입니다.

이걸 나타내기 위해 실제로 그 반사의 과정을 따라가는 것은 아니고 일정한 크기의 색을 물체에 표시해주게 됩니다.



Phong


이러한 전체적인 과정을 통해 phong lighting model은 완성되며 화면에 texture와 light가 포함되어 그려지게 됩니다.