Phong에서 PBR까지 (3) - BRDF란 무엇인가?

Diffuse와 Specular를 단순한 조명 항이 아니라, 입사광을 반사하는 표면의 함수인 BRDF 관점에서 다시 살펴봅니다.

Series Phong에서 PBR까지 3 / 6

이전 편

Phong에서는 보통 조명을 다음과 같이 생각한다.

Ambient
+ Diffuse
+ Specular

그리고 각각 원하는 공식을 적용한다.

그런데 현대적인 렌더링 자료에서는 갑자기 BRDF라는 용어가 등장한다.

BRDF는

Bidirectional Reflectance Distribution Function

의 약자다.

직역하면 양방향 반사 분포 함수다.

이름만 보면 상당히 거창하지만 질문 자체는 단순하다.

어떤 방향에서 빛이 들어왔을 때, 표면이 그 빛을 특정 방향으로 얼마나 반사하는가?


빛에는 두 방향이 존재한다

표면의 한 점을 생각해보자.

       카메라
          ↑
          V
         /
        ●
       /
      L
   광원

두 방향이 존재한다.

  • $L$: 빛이 들어오는 방향
  • $V$: 빛을 관찰하는 방향

따라서 표면의 반사 특성은

$$ f(L,V) $$

처럼 두 방향에 의해 결정된다.

이것이 Bidirectional이라는 이름이 붙는 이유다.

보통 렌더링에서는

$$ \omega_i $$

를 입사 방향,

$$ \omega_o $$

를 출사 방향이라고 표기한다.

그래서 BRDF는 일반적으로

$$ f_r(\omega_i,\omega_o) $$

라고 적는다.


BRDF는 빛 그 자체가 아니다

여기서 중요한 점이 있다.

BRDF는 최종 밝기가 아니다.

표면이 들어온 빛을 특정 방향으로 얼마나 반사하는지를 나타내는 비율이다.

개념적으로는 한 방향에서 빛이 들어왔을 때

$$ L_o \propto f_r(\omega_i,\omega_o) L_i (N\cdot L) $$

와 같이 사용된다.

즉,

들어온 빛
    ↓
표면의 BRDF
    ↓
방향에 따른 반사
    ↓
카메라로 나가는 빛

의 구조다.


사실 Lambert Diffuse도 BRDF다

우리가 너무 익숙하게 사용하던 Lambert Diffuse도 BRDF로 표현할 수 있다.

$$ f_d = \frac{\rho}{\pi} $$

여기서 $\rho$는 표면의 diffuse color, 즉 albedo다.

왜 갑자기 $\pi$가 들어가는지는 에너지 보존과 관련이 있다.

Lambert 표면은 들어온 빛을 반구 전체로 균일하게 분산시킨다고 가정한다.

따라서 반구 전체에 분배했을 때 총 반사 에너지가 입력 에너지를 넘지 않도록 정규화할 필요가 있다.

그 결과가

$$ \frac{1}{\pi} $$

다.

이것만 보더라도 단순히

diffuse = color * NdotL;

이라고 구현하던 것보다 좀 더 물리적인 의미가 생긴다.


BRDF의 중요한 조건: 에너지 보존

현실의 일반적인 표면은 받은 빛보다 많은 빛을 반사할 수 없다.

즉,

들어온 에너지 >= 반사된 에너지

여야 한다.

이를 Energy Conservation이라고 한다.

Phong에서는 Diffuse와 Specular를 독립적으로 크게 설정할 수도 있다.

diffuse  = 1.0;
specular = 1.0;

이 경우 물리적으로 해석하기 어려운 결과가 나올 수 있다.

PBR에서는 반대로

Specular로 반사된 만큼 Diffuse로 들어갈 에너지가 줄어야 한다.

와 같은 관계를 고려한다.

현대 PBR에서 Diffuse와 Specular가 단순히 서로 독립적인 두 색상이 아닌 이유다.


BRDF는 하나의 공식 이름이 아니다

이 부분은 처음에 특히 헷갈리기 쉽다.

BRDF 자체가 특정한 렌더링 공식의 이름은 아니다.

BRDF는 하나의 개념 또는 함수의 형태다.

다양한 BRDF를 만들 수 있다.

예를 들면,

Lambert
Blinn-Phong
Cook-Torrance
Disney BRDF
...

와 같은 서로 다른 반사 모델들이 존재할 수 있다.

우리가 앞으로 볼 Microfacet BRDF 역시 그중 하나다.


지금까지의 관점 변화

Phong에서는 이렇게 생각했다.

반짝임을 어떻게 그럴듯하게 만들까?

그래서

$$ (R\cdot V)^s $$

라는 함수를 사용했다.

BRDF 관점에서는 질문을 조금 다르게 한다.

실제로 이 표면은 특정 방향의 빛을 특정 방향으로 얼마나 반사해야 하는가?

즉,

결과의 모양을 직접 설계
        ↓
표면의 반사 특성을 모델링

으로 관점이 바뀐다.

이제 그 표면을 어떻게 모델링할 것인가가 남는다.

현대 실시간 렌더링에서 널리 사용하는 방법 중 하나가

표면을 수많은 작은 거울의 집합으로 보는 것이다.

다음 글에서는 Microfacet Model을 살펴본다.



다음 편