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이다.

Shadowing은 빛이 미세면에 도달하지 못하는 경우, masking은 반사된 빛이 시선까지 빠져나오지 못하는 경우다. 둘을 함께 다루는 항이 G다.
즉,
반사에 참여할 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
이 각각 무엇을 담당하는지 살펴본다.