Lighting
rendering pipeline의 a to z
Created Jul 8, 2024 - Last updated: Jul 8, 2024
Lighting
pixel들에 texture까지 입힌 상황에서 마지막으로 남은 것은 빛을 입히는 것입니다. 실제로 빛이 있고 없고는 엄청나게 큰 퀄리티 차이를 만드는데요, 이 글에서는 phong lighting model을 이용하여 빛을 적용하는 것에 대해 다뤄볼 예정입니다.
Phong Lighting Model
퐁 조명 모델은 3가지 항을 통해 빛을 모델링합니다.
- Diffuse Term
- Specular Term
- 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가 포함되어 그려지게 됩니다.