Phong에서는 하나의 표면에 하나의 Normal이 존재한다고 생각했다.
N
↑
----------------
하지만 실제 표면을 충분히 확대하면 완벽하게 평평하지 않다.
/\ /\
/\/ \_/\_/ \__
미세한 수준에서는 수많은 작은 면이 서로 다른 방향을 향하고 있다.
Microfacet Model은 여기서 출발한다.
표면을 매우 작은 거울들의 집합으로 생각한다.
이 각각의 작은 면을 Microfacet이라고 한다.
모든 Microfacet은 완벽한 거울이다
Microfacet Model에서는 각각의 작은 면 자체는 완벽한 Specular Mirror라고 가정한다.
↖ ↑ ↗
↙ ↑ ↘
----------------
하지만 각 거울의 방향이 서로 다르다.
따라서 물체 전체를 보면 완벽한 거울처럼 보이지 않을 수 있다.
거친 표면은 Microfacet의 방향이 많이 흩어져 있고,
매끄러운 표면은 비슷한 방향을 향한다.
Smooth Surface
↑ ↑ ↑ ↑ ↑
----------------
Rough Surface
↖ ↑ ↗ ↘ ↙
----------------
바로 이 분포가 우리가 PBR에서 사용하는 Roughness와 연결된다.
어떤 Microfacet이 카메라에 보일까?
빛의 방향 $L$과 카메라 방향 $V$가 있다고 하자.
빛을 정확히 $V$ 방향으로 반사하려면 Microfacet의 Normal은 Half Vector와 같아야 한다.
즉,
인 작은 거울만이 현재 카메라 방향으로 빛을 보낼 수 있다.
그렇다면 첫 번째 질문은 이것이다.
Normal이 $H$에 가까운 Microfacet이 얼마나 존재하는가?
이것이 D다.
D — Normal Distribution Function
D는 Normal Distribution Function, 줄여서 NDF라고 부른다.
대략적으로
Microfacet Normal이 H 방향에 얼마나 많이 분포되어 있는가?
를 나타낸다.
Roughness가 낮으면 Microfacet들이 표면 Normal 주변에 집중된다.
↑
↑↑↑
↑↑↑↑
----------------
따라서 좁고 강한 하이라이트가 만들어진다.
Roughness가 높으면 방향이 넓게 퍼진다.
↖ ↑ ↗
↙ ↖ ↑ ↘ →
----------------
따라서 넓고 흐린 Specular가 나타난다.
현대 실시간 렌더링에서 이 D를 계산하기 위해 자주 사용하는 분포가 GGX다.
Google Filament의 PBR 문서도 GGX를 Specular NDF로 사용하며, 긴 꼬리를 가진 하이라이트 분포이고 Trowbridge-Reitz 분포와 동등한 모델이라고 설명한다. Filament의 PBR 문서
G — Geometry
그런데 Microfacet이 올바른 방향을 향하고 있다고 해서 반드시 카메라에 보이는 것은 아니다.
다른 Microfacet에 가려질 수 있기 때문이다.
Shadowing
광원으로부터 오는 빛이 다른 Microfacet에 막힌다.
빛 →
/\
/\ / \
__/ \/ \__
Masking
빛은 반사됐지만 카메라 방향으로 나가는 도중 다른 Microfacet에 가려진다.
Camera
↑
/\ /
/\ / \__/
_/ V_______
이 두 효과를 계산하는 항이 G, Geometry Function이다.
즉,
반사에 참여할 Microfacet이 실제로 빛과 카메라 양쪽에서 보이는가?
를 계산한다.
F — Fresnel
마지막은 Fresnel이다.
같은 재질이라도 보는 각도에 따라 반사율이 달라진다.
물 표면을 생각하면 이해하기 쉽다.
위에서 내려다보면 물속이 비교적 잘 보인다.
Eye
↓
~~~~~~~~~~~~
하지만 수평에 가까운 각도에서 바라보면 표면의 반사가 훨씬 강하게 보인다.
Eye → → →
~~~~~~~~~~~~~~~~
즉 표면에 스치는 각도로 바라볼수록 Specular Reflection이 강해진다.
이를 Fresnel Effect라고 한다.
이 효과를 나타내는 것이 F다.
D, G, F
Microfacet Specular Model의 핵심을 모두 모으면 다음 세 가지가 된다.
| 항 | 의미 |
|---|---|
| D | 올바른 방향의 Microfacet이 얼마나 존재하는가 |
| G | 그 Microfacet이 다른 Microfacet에 가려지는가 |
| F | 현재 각도에서 빛이 얼마나 반사되는가 |
그리고 이를 조합한 대표적인 형태가 Cook-Torrance Microfacet BRDF다.
처음 보면 복잡해 보이지만 핵심은 간단하다.
Specular
│
├─ D : 작은 거울들의 방향
├─ G : 작은 거울들 사이의 가림
└─ F : 각도에 따른 반사율
즉 Phong의
pow(RdotV, shininess)
하나가 담당하던 Specular를 현실의 현상 몇 가지로 나누어 모델링한 것이다.
그리고 GGX가 등장한다
여기까지 오면 흔히 보던 다음 문장을 이해할 준비가 되었다.
GGX 기반 Specular BRDF
GGX는 PBR 전체의 이름도 아니고, Cook-Torrance 전체의 이름도 아니다.
정확히는 방금 살펴본 세 항 중
D, 즉 Normal Distribution Function을 계산하는 방법 중 하나다.
다음 글에서는
- GGX
- Smith
- Schlick
이 각각 무엇을 담당하는지 살펴본다.