Phong에서 PBR까지 (4) - 표면은 수많은 작은 거울이다

현대 PBR의 핵심인 Microfacet Model의 아이디어와 Cook-Torrance BRDF의 D, G, F가 무엇을 의미하는지 살펴봅니다.

Series Phong에서 PBR까지 4 / 6

이전 편

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와 같아야 한다.

$$ H = \frac{L+V}{\|L+V\|} $$

즉,

$$ N_{microfacet}=H $$

인 작은 거울만이 현재 카메라 방향으로 빛을 보낼 수 있다.

그렇다면 첫 번째 질문은 이것이다.

Normal이 $H$에 가까운 Microfacet이 얼마나 존재하는가?

이것이 D다.


D — Normal Distribution Function

D는 Normal Distribution Function, 줄여서 NDF라고 부른다.

$$ D(N,H,\alpha) $$

대략적으로

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

$$ f_s = \frac {DGF} {4(N\cdot L)(N\cdot V)} $$

처음 보면 복잡해 보이지만 핵심은 간단하다.

Specular
   │
   ├─ D : 작은 거울들의 방향
   ├─ G : 작은 거울들 사이의 가림
   └─ F : 각도에 따른 반사율

즉 Phong의

pow(RdotV, shininess)

하나가 담당하던 Specular를 현실의 현상 몇 가지로 나누어 모델링한 것이다.


그리고 GGX가 등장한다

여기까지 오면 흔히 보던 다음 문장을 이해할 준비가 되었다.

GGX 기반 Specular BRDF

GGX는 PBR 전체의 이름도 아니고, Cook-Torrance 전체의 이름도 아니다.

정확히는 방금 살펴본 세 항 중

D, 즉 Normal Distribution Function을 계산하는 방법 중 하나다.

다음 글에서는

  • GGX
  • Smith
  • Schlick

이 각각 무엇을 담당하는지 살펴본다.


다음 편