그래픽스/DX11

퐁라이팅

게임 개발 2024. 9. 30. 19:27

lighting은 물체와 빛 사이의 상호작용을 말한다.
사실적인 그래픽을 위해서 lighting이 매우 중요하다.
이러한 linghting 기법 중 하나인 퐁라이팅은
빛을 반사하는 것을
ambient, diffuse, specular, emissive 4가지로 나누어서 표현한다.

<diffuse>

diffuse는 난반사를 의미하며,
광원으로부터, 광원으로부터 점P까지의 벡터를 l,
(normal vector 법선 벡터는 해당 직선이나 평면에서 수직인 벡터를 말한다)
점 P의 normal을 n으로 표현한다.
두 벡터 사이의 각이 작으면 작을수록 점 P는 더 많은 조명을 받게 될 것이다.
점 P로 들어오는 빛의 양은 두 벡터의 내적 값이라고 정의할 수 있다.
즉, 조명의 위치에 따라서 표면이 얼마나 밝아질 지를 정할 수 있다.
이를 식으로 나타내면 다음과 같다.

s는 광원의 RGB색상, m은 물체 자체의 diffuse 계수라고 볼 수 있다.
별도로 구하는 식이 있는 건 아니고,
상수 값이라고 생각하면 된다.
 
<Specualr>

specular는 정반사를 의미한다.
specular로 인한 빛은 매끈한 표면으로 반사가 되어
하이라이트가 생성되는 방식이다.
specular term에는 사선벡터와 방향벡터가 필요하다.
정반사된 벡터와 카메라까지의 벡터의 각도가 얼마나 차이가 나느냐에 따라
하이라이트가 얼마나 들어올 지를 결정한다.