Lighting
- 빛과 Object간의 상호 작용
Direction Light Source
- 아주 멀리서 오는 Sun(해)라고 생각하면 됨.
- 이제부터 설명하는 모든 Light의 종류는 Direction Light Source라고 가정하고 설명할 것임
- 아주 멀리서 오는 빛이기 때문에 오브젝트의 모든 점에 들어오는 빛은 같은 방향과 입사각으로 들어온다고 가정
Phong Light Model
- 대표적 Lighting Model
- Phong Model은 4가지 Term으로 이루어짐
1. Diffuse(난반사, = Lambert)
- 온갖 방향으로 동일한 양의 빛을 반사.
- 온갖 방향으로 동일한 양으로 반사된다는 것은 우리가 카메라를 어디 두던간에 같은 색으로 보인다는 의미.
- 우리가 "어떤 물체를 보고 어떤 색이다" 라고 하는 것은 바로 이 Diffuse Light를 보고 말하는 것.
Diffuse Light가 한 점에 들어온다고 가정할 때 이 한 점(p)에 들어오는 빛의 강도(Intensity)를 계산 하는 것은
한 점(p)에서 Ligth Source까지의 벡터를 l 벡터라고 하고, 한 점(p)에서 수직으로 나오는 벡터를 n 벡터라고 할 때 max(n.Dot(l), 0) 이 한 점 p에서 받는 빛의 강도를 계산한 식.
즉 빛이 한 점 p를 수직으로 내리 쬘 때 점 p에서 가장 빛을 많이 받는다
Diffuse Light의 최종 결과는
$$ max(n \cdot l, 0)s_{d}\bigotimes m_{d} $$
(sd는 light source의 색상, md는 Material의 Diffuse Color)
2. Specular(정반사)
- Specular는 빛이 입사각과 반사각이 같도록 반사되는 빛 즉, 카메라가 어느 위치에 있는지에 따라 정반사된 결과를 볼 수도 있고 못 볼수도 있다.
- Specular의 Material Color는 보통 Gray-Scale Color다(gray-scale은 r,g,b가 모두 같은 경우를 말함. ( ex (r,g,b) = (0.3, 0.3, 0.3) )
- Diffuse에서 Material Color는 빛의 색상에서 필터링해서 특정 rgb값중 특정값만 난반사해서 물체의 색상을 표현하지만
Specular는 빛의 색상을 그대로 보여주되, 어디가 더 매끈하고 반짝거릴지, 어디가 덜 매끈하고 반짝거릴지 정도만 표현하는것 뿐이므로 rgb값이 gray-scale이다
$$ (max(r\cdot v, 0))^{sh}s_{s}\bigotimes m_{s} $$
3. Ambient(환경광)
- 어디서 반사돼서 들어오는지는 모르지만 주변에서 온갖 방향에서부터 들어오는 빛이 있다고 대략적으로 가정해서 있다고 생각하는 Light
- 점 p로 온갖 방향으로 빛이 들어와서 반사도 마찬가지로 p에서 온갖 방향으로 반사됨
- 온갖 방향으로 들어오니 빛의 방향 벡터(l)이 필요없음, 빛의 반사 벡터도 Normal vector 기준으로 계산했는데 온갖 방향으로 반사되니 Normal vector도 의미 없음. 계산 공식은
$$ s_{a}\bigotimes m_{a} $$
-> Ambient 빛의 rgb(sa) x Material의 rgb 성분곱(ma)
4. Emissive
-> 스스로 빛을 내는 물체에 주는 값. 즉 위의 3개와 달리 반사가 아니므로 성분별 곱이 아니라 그냥 Material의 개별적인 Emmisive값만 독립적으로 존재
따라서 Phong Model은 위의 Diffuse + Specular + Ambient + Emmisive를 모두 더하는 것
Reference
https://www.youtube.com/watch?v=_uIjVpAM9l8&list=WL&index=1&t=1877s
'공부 > Graphics, DirectX, 포트폴리오 구조' 카테고리의 다른 글
3D OBB 충돌 코드 및 설명 (0) | 2022.09.22 |
---|---|
그림자 매핑(Shadow Mapping) (0) | 2022.09.17 |
ID3D11DeviceContext::Map 상황별 사용 (0) | 2022.05.29 |
디퍼드 렌더링(Deferred Rendering)에서 반투명한 물체를 위한 블렌딩처리가 안되는 이유 (0) | 2022.05.24 |
렌더링 파이프라인(Rendering Pipeline) (0) | 2022.04.10 |