주의 : 공부하면서 정리한 것이기 때문에 오류가 있을 수 있습니다.
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 의 양이 많아진다는 것입니다. 그냥 대중없이 거칠다면 난반사가 심해질 것이고, 부드럽다면( 즉 m 이 n 과 거의 비슷한 면이 많다면 ) 정반사가 커지겠죠.
결국 우리의 질문은 다음과 같이 바뀔 수 있습니다.
광원을 향하는 벡터 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 ).
'Physically Based Rendering' 카테고리의 다른 글
[ PBR 이란 무엇인가 ] 10. Image Based Lighting (0) | 2017.07.23 |
---|---|
[ PBR 이란 무엇인가 ] 9. Global Illumination & Indirect Lighting (2) | 2017.07.23 |
[ PBR 이란 무엇인가 ] 8. Attenuation Radius 설정 (4) | 2017.07.21 |
[ PBR 이란 무엇인가 ] 7. Light Intensity 설정 (12) | 2017.07.13 |
[ PBR 이란 무엇인가 ] 6. 휘도( luminance ) 측정 (10) | 2017.07.06 |
[ PBR 이란 무엇인가 ] 5. 조도( illuminance ) 측정 (3) | 2017.07.05 |
[ PBR 이란 무엇인가 ] 4. 광원의 밝기( 광속 ) (12) | 2017.07.03 |
[ PRB 이란 무엇인가 ] 3. 빛의 감쇠 (2) | 2017.07.02 |
[ PBR 이란 무엇인가 ] 2. 조도와 휘도 (18) | 2017.06.29 |
[ PBR 이란 무엇인가 ] 1. 인간과 빛 (11) | 2017.06.28 |
PBR Specular D 의 기하학적 의미 (8) | 2016.12.02 |
HalfVector가 왜 쓰였는지 궁금했었는데 명쾌한 설명 감사합니다~^^
^^ 도움이 되서 다행이네요. 방문해 주셔서 감사합니다.
진짜 유익한 정보 감사합니다. blender eevee 렌더엔진이 나오면서 pbr과 실시간 렌더에 대해 공부중인데 이해할만한 정보를 찾기가 힘들었거든요
정말 감사합니다!
도움이 됐다니 다행입니다. 방문해 주셔서 감사합니다.
Hello! Sorry I don't know Korean so I have to write in English.
I found your article was translated into Chinese on website Zhihu: https://zhuanlan.zhihu.com/p/143571503
jplee claimed he is the author at the beginning. Did you grant him to translate this article to Zhihu?
Thank you!
Thank you for your visiting. I have not granted someone to translate my articles.
That Zhihu link has been deleted by jplee himself.
Here is his blog translating your article without your granting.
https://leegoonz.blog/2020/01/13/pbr-specular-d%e7%9a%84%e5%87%a0%e4%bd%95%e5%ad%a6%e5%90%ab%e4%b9%89/
Thank you for kindness. I protested him by replying on the link.