본문 바로가기

Physically Based Rendering

PBR Specular D 의 기하학적 의미

주의 : 공부하면서 정리한 것이기 때문에 오류가 있을 수 있습니다.


 

PBR Specular D 의 기하학적 의미

 

PBR( Physically Based Rendering )에서 대세가 된 Cook-Torrance 의 스펙큘러 BRDF [1] 는 다음과 같이 정의됩니다.

 

 

 

이 중에서 D 함수는 미세면( microfacet )의 기울기에 대한 분산( Distribution ) 함수입니다. 이 문서에서는 이것의 기하학적 의미에 대해서 다루고자 합니다.

 

하나의 서피스( surface )는 여러 개의 미세면( microfacet )으로 구성되어 있다는 것이 PBR 이론의 근간에 깔려 있습니다. 그리고 서피스를 구성하는 각 미세면들은 서로 다른 노멀( normal )을 가지게 됩니다. 또한 그 미세면들에서는 거울면 반사( mirror reflection, 정반사 )가 발생합니다.

 

많은 문서에서는 이러한 미세면의 노멀을 m 으로 표시하기도 하고 h 로 표시하기도 합니다. 아마도 microfacet normal 과 half vector 의 약자인 것 같습니다. 그림 1 에서는 서피스와 미세면의 관계를 보여 줍니다.

 

그림1 : 미세면으로 구성된 서피스[2].

 

미세면의 노멀을 m 이라 표기하는 것은 이해가 가는 부분이지만 h( half vector )라 표기할 수도 있다는 것은 이해가 안 갈 것입니다. Burley 와 Cook-Torrance [1, 3] 은 공통적으로 하프 벡터( half vector )가 미세면의 노멀을 표현한다고 기술하고 있습니다.

 

이것은 하프 벡터를 사용하는 문맥으로부터 그 의미를 이해하는 것이 좋습니다. 위에서 우리는 미세면이 거울면 반사를 보여 준다고 가정했습니다. 그러면 질문을 뒤집어 보죠. 

 

서피스 내에서, 우리에게 거울면 반사를 보여 줄 수 있는 기울기를 가진 미세면은 얼마나 많을까요?

 

이것이 바로 Specular D 함수를 통해 얻고자 하는 값의 본질입니다. 그림 2 의 가장 왼쪽에 있는 미세면이 나에게 거울면 반사라는 결과를 보여 주려면 어떤 기울기를 가지고 있어야 할까요? 여기에서 n 은 서피스 노멀이고 m 은 미세면 노멀입니다.

 

그림 2: 샘플 미세면.

 

거울면 반사는 "입사각과 반사각이 같은 반사" 입니다. 그러므로 아래 그림처럼 빛 벡터 l 과 뷰 벡터 v 의 절반인 하프 벡터( h )와 미세면 노멀( m )이 일치하는 경우에 거울면 반사가 발생합니다.

 

 

여기에서 추정할 수 있는 것은 뾰족한 미세면이 많다면 retroreflection 의 양이 많아진다는 것입니다. 그냥 대중없이 거칠다면 난반사가 심해질 것이고, 부드럽다면( 즉 mn 과 거의 비슷한 면이 많다면 ) 정반사가 커지겠죠.

 

결국 우리의 질문은 다음과 같이 바뀔 수 있습니다.

 

광원을 향하는 벡터 l 와 관찰자(뷰)를 향하는 벡터 v 를 가지고 있을 때, 그것의 하프 벡터 h 와 동일한 미세면 노멀 m 은 얼마나 존재하나요?

 

하프 벡터 h 와 미세면 노멀 m 의 각도가 0 이 되는 미세면의 분포를 찾는 것이 Specular D 함수의 목적입니다. 그러므로 어떤 문헌들에서는 이런 가정을 깔고 "하프 벡터가 미세면의 노멀이다" 라는 식의 표현을 하게 되는 것입니다.

 

[3] 에서 Burley 는 실측 데이터와 다른 Specular D 함수들을 비교했습니다.

 

그림 3: Burley 가 비교한 분산들.

왼쪽부터 크롬 실측값, GGX, Beckmann.

 

일단 기존의 모델 중에서 가장 나은 것은 GGX( Trowbridge-Reitz 와 같음 ) 였습니다. 하지만 실측값을 보면 타는 듯한 효과와 더 긴 테일( tail )이 보입니다. 그래서 Burley 의 경우에는 이중 스펙큘러 로브를 구현하게 됩니다. 자세한 내용은 해당 기사에서 확인하시기 바랍니다.

 

하지만 실시간 렌더링의 세계에서는 스펙큘러 로브를 두 개씩 계산하는 것이 부담이 됩니다. 그래서 UE4 같은 경우에는 그냥 GGX 를 사용합니다.

 

물론 여러 개의 변종들이 있을 수 있으며, Specular BRDF Reference 에서 이를 확인할 수 있습니다. 참고로 이 문맥에서 "Normal Distribution" 은 정규 분포가 아닙니다. "노멀의 분포"라는 이야기입니다. "Specular D" 와 동일한 말입니다.

 

참고자료

 

[1] Robert L. Cook and Kenneth E. Torrance, "A Reflectance Model for Computer Graphics"( 번역 : http://lifeisforu.tistory.com/349 ).

 

[2] Simon's Tech Blog, "Microfacet BRDF". http://simonstechblog.blogspot.kr/2011/12/microfacet-brdf.html.

 

[3] Brent Burley, "Physically-Based Shading at Disney"( 번역 : http://lifeisforu.tistory.com/350 ).