Phong에서는 보통 조명을 다음과 같이 생각한다.
Ambient
+ Diffuse
+ Specular
그리고 각각 원하는 공식을 적용한다.
그런데 현대적인 렌더링 자료에서는 갑자기 BRDF라는 용어가 등장한다.
BRDF는
Bidirectional Reflectance Distribution Function
의 약자다.
직역하면 양방향 반사 분포 함수다.
이름만 보면 상당히 거창하지만 질문 자체는 단순하다.
어떤 방향에서 빛이 들어왔을 때, 표면이 그 빛을 특정 방향으로 얼마나 반사하는가?
빛에는 두 방향이 존재한다
표면의 한 점을 생각해보자.
카메라
↑
V
/
●
/
L
광원
두 방향이 존재한다.
- $L$: 빛이 들어오는 방향
- $V$: 빛을 관찰하는 방향
따라서 표면의 반사 특성은
처럼 두 방향에 의해 결정된다.
이것이 Bidirectional이라는 이름이 붙는 이유다.
보통 렌더링에서는
를 입사 방향,
를 출사 방향이라고 표기한다.
그래서 BRDF는 일반적으로
라고 적는다.
BRDF는 빛 그 자체가 아니다
여기서 중요한 점이 있다.
BRDF는 최종 밝기가 아니다.
표면이 들어온 빛을 특정 방향으로 얼마나 반사하는지를 나타내는 비율이다.
개념적으로는 한 방향에서 빛이 들어왔을 때
와 같이 사용된다.
즉,
들어온 빛
↓
표면의 BRDF
↓
방향에 따른 반사
↓
카메라로 나가는 빛
의 구조다.
사실 Lambert Diffuse도 BRDF다
우리가 너무 익숙하게 사용하던 Lambert Diffuse도 BRDF로 표현할 수 있다.
여기서 $\rho$는 표면의 diffuse color, 즉 albedo다.
왜 갑자기 $\pi$가 들어가는지는 에너지 보존과 관련이 있다.
Lambert 표면은 들어온 빛을 반구 전체로 균일하게 분산시킨다고 가정한다.
따라서 반구 전체에 분배했을 때 총 반사 에너지가 입력 에너지를 넘지 않도록 정규화할 필요가 있다.
그 결과가
다.
이것만 보더라도 단순히
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에서는 이렇게 생각했다.
반짝임을 어떻게 그럴듯하게 만들까?
그래서
라는 함수를 사용했다.
BRDF 관점에서는 질문을 조금 다르게 한다.
실제로 이 표면은 특정 방향의 빛을 특정 방향으로 얼마나 반사해야 하는가?
즉,
결과의 모양을 직접 설계
↓
표면의 반사 특성을 모델링
으로 관점이 바뀐다.
이제 그 표면을 어떻게 모델링할 것인가가 남는다.
현대 실시간 렌더링에서 널리 사용하는 방법 중 하나가
표면을 수많은 작은 거울의 집합으로 보는 것이다.
다음 글에서는 Microfacet Model을 살펴본다.