주의 : 잘못된 내용이 포함되어 있을 수 있으므로 이상하면 참고자료를 확인하세요.


[ PBR 이란 무엇인가 ] Fresnel 이란?

프레넬 공식이란?

앞서 [ [ 번역 ] 모든 것은 프레넬을 가집니다 ] 와 [ Reflection 에 대한 잘못된 상식들 ] 에서 프레넬( Fresnel )이라는 용어가 자주 나옵니다. 대체 이게 무엇이길래 PBR 에서는 그토록 중요한 것일까요?

모든 빛은 매질( media )을 만나면 반사, 흡수, 굴절이라는 과정을 거치게 됩니다. 이때 프레넬 공식을 사용해서 빛의 움직임을 계산하게 됩니다.

"프레넬"이라는 것은 "오귀스탱 장 프레넬" 이라는 프랑스 과학자의 이름을 의미합니다( 그림1 ).

그림1. Auguistin-Jean Fresnel. 출처 : [ 2 ].

이 프레넬이라는 사람은 서로 다른 굴절률( refractive index )를 가진 매질( media ) 사이에서 빛이 움직일 때의 동작을 설명했습니다. 빛의 반사를 예측하는 공식을 만들었고 이를 프레넬 반사라고 합니다[ 1 ]. 그러므로 일반적으로 "프레넬" 이라고 이야기하면 "프레넬 공식( Fresnel Equation )" 을 말하는 것입니다.

인간과 빛 ] 에서 빛은 전자기파( electromagnetic wave )라고 이야기한 것이 기억나실 겁니다. 여러 가지 전자기파로 구성된 집합이 빛이죠. 빛이 프리즘을 통과하면서 여러 가지 파장으로 분리되는 것을 기억하고 계실 겁니다( 그림2 ).

그림2. 빛이 프리즘을 통과하면 여러 파장으로 분리됩니다. 출처 : [ 3 ].

이런 일은 왜 벌어지는 것일까요? 지금부터 알아 보도록 하겠습니다.

굴절률( Refractive index )

굴절률은 빛이 진공에서 특정 매질( media )로 이동할 때 속도가 얼마나 느려지는지 그 비율을 측정한 것입니다. 일반적으로 과학 문서에서는 "Index of refraction( IOR )" 이라는 표현이 많이 사용됩니다. "Refractive index" 와 "Index of refraction" 은 같은 의미입니다. "index" 는 사전적 의미로 "지수" 라는 뜻을 가집니다. "물가지수", "임금지수" 이런 표현을 할 때 사용하죠. 즉 우리 말로 억지로 번역하자면 "굴절지수" 정도가 되겠습니다. 그냥 굴절률이라고 생각하시면 됩니다.

빛의 속도는 초당 지구 일곱바퀴 반을 돌 수 있는 매우 빠른 속도( 299,792,458 m/s )입니다. 지구에서 달까지 1 초면 갈 수 있죠. 그런데 이것은 진공( vaccum ) 기준에서의 속도이며, 실제로는 어떤 매질을 만났을 때 속도가 감소합니다. 왜 감소하는지에 대해서는 설명하지 않겠습니다. 왜냐하면 이를 설명하기 위해서는 글이 좀 어려워질 수 있고 이 문서의 주제를 벗어나기 때문입니다. 에너지 보존 법칙과도 관계가 있는데요, 만약 궁금하시면 위상 속도( phase velocity ) 문서를 참고하시기 바랍니다.

어쨌든 매질을 만나면 빛의 속도가 줄기 때문에 빛의 방향도 바뀝니다. 이를 좀 쉽게 설명하려면 바퀴의 예를 들 수 있습니다( 그림3 )( 빛에 대해서 이해하고 싶으신 분들은 뉴턴 하이라이트의 "빛이란 무엇인가" 라는 책을 필독하실 것을 권장합니다. ).

그림3. 속도가 다르면 빛이 꺾이는 이유. 출처 : [ 5 ].

그림3 에서 볼수 있듯이 포장도로에서 모래로 바퀴가 진입하면 마찰력때문에 한쪽바퀴의 속도가 줄어들죠. 그런데 다른쪽 바퀴는 여전히 같은 속도로 움직이므로 몸체의 방향이 틀어집니다. 그런데 만약 바퀴가 작다면 더 많이 회전해야 하므로 그 동안 느린쪽 바퀴의 방향은 더 틀어지겠죠. 반대로 바퀴가 크다면 더 적게 회전하므로 다른쪽 바퀴가 덜 틀어지겠죠.

바퀴의 크기는 주파수와 연관해서 생각할 수 있습니다. 그림2 를 다시 보죠( 스크롤이 귀찮으니 밑에 이미지를 복사해 넣었습니다 ).  

파장이 긴( 바퀴가 큰 ) 붉은 빛은 덜 꺾이고, 파장이 짧은( 바퀴가 짧은 ) 보라색 빛은 많이 꺾이는게 보이시죠? 굴절률이 제대로 계산되기 위해서는 파장별로 처리되어야 합니다. 하지만 대기 산란( atmospheric scattering )처럼 파장별 산란 결과가 중요한 분야가 아니라면 그냥 대충 퉁쳐서 처리하곤 합니다.

스넬의 법칙( Snell's law )

과거에 사람들은 매질이 다르면 빛이 꺾인다는 것 까지는 알게 되었지만 얼마나 꺾이는 지까지는 모르고 있었습니다. 이것을 공식화 한 사람이 바로 스넬( Snell )입니다. "스멜~" 이 아니라 "스넬" 입니다. 이 스넬의 법칙은 고등학교 때도 배워서 들어는 보셨을 겁니다.

그림4. 서로 다른 굴절률을 가진 매질에서의 빛의 굴절. 출처 : [ 6 ].

그림 4에서 붉은색 라인은 빛의 경로를 의미합니다. 매질의 경계( interface ) 에서 빛이 굴절합니다. 표면의 노멀( normal )과 입사광( incident light )의 각은 θ1 입니다. 그리고 노멀과 굴절광( refracted light )의 각은 θ2 입니다. v 는 속도( velocity )를 의미하고, λ 는 파장( wavelength )를 의미합니다. 그리고 n 은 굴절률( IOR )을 의미하죠. 이것들의 관계를 설명한 것이 바로 스넬의 법칙입니다( 식1 ).

식1. 스넬의 법칙. 출처 : [ 6 ].

이런 현상 때문에 기름과 물을 컵에 채워놓고 파동을 만들면 그림5 와 같은 결과가 나오게 됩니다.

그림5. 스넬 법칙에 따른 파동의 변화. 출처 : [ 6 ].

그런데 이 굴절과 관련해서 좀 재밌는 현상이 있습니다. 빛이 굴절률이 다른 매질을 만나게 되면 특정 각도에서는 굴절을 하지 않고 완전히 반사를 하는 경우가 있다는 겁니다( 그림7 ).

그림7. 빛의 굴절 패턴. 특정 각도에서는 전반사가 발생함( 오른쪽 ). 출처 : [ 7 ].

위의 그림에서 Critical angle 이라고 된 각도를 넘어서면 전반사가 발생합니다. 임계각을 구하는 공식은 식2 와 같습니다.

식2. 전반사각 구하는 공식. 출처 : [ 7 ].

아크릴 병 내부에서 바깥쪽으로 빛이 전반사되는 예를 들면, 대기의 굴절률이 1.0 이고 아크릴의 굴절률이 약 1.50 이므로 전반사 각도는 41.8 도입니다.

식3. 아크릴 병의 전반사각 계산. 출처 : [ 7 ]

프레넬 공식( Fresnel equation )

자 이제 우리는 어떤 매질에서 여행하고 있던 빛이 다른 매질을 만나게 되면 반사하거나 굴절하게 된다는 것을 알게되었습니다. 물론 흡수될 수도 있지만 여기에서는 다루지 않겠습니다.

우리가 그래픽스에서 반사와 굴절을 계산하기 위해서는 얼마만큼의 빛이 반사되고 얼마만큼의 빛이 굴절되는지 알아야 합니다. 그것을 알려주는 공식이 바로 프레넬 공식입니다.

프레넬 공식을 그래프로 나타내면 다음과 같은 결과가 나옵니다.

그림8. 프레넬 공식 그래프. 출처 : Real-Time Rendering, 3rd Edition.

그림이 좀 어려워 보이죠? 가로축이 눈과 노멀방향의 각도이고 세로축이 반사율입니다.보시면 알겠지만 물이나 풀과 같은 비금속 물질들은 수직으로 봤을 때( 0 도 ) 매우 낮은 반사율을 보이며, 수평으로 봤을 때( 90 도 ) 매우 높은 반사율을 보입니다. 비금속같은 금속같은 경우에는 어디에서 보든 0.5 이상의 반사율을 보여 주죠.

그런데 우리가 모든 각도에서의 굴절률( IOR )을 알 수는 없습니다. 그러므로 대충 근사계산을 하는 식( 일반적으로 Shilick's approximation, 식4 )을 사용합니다. 그리고 입력값으로 물체를 수직에서 바라본( 0 도 ) 반사율값을 넣는 근사 계산식을 사용합니다. 위의 "프레넬 공식 자세히 보기" 를 펼쳐 본 사람들을 위해서 설명을 드리자면, R0 값이 바로 그림8 에 있는 그래프에서 0 도의 반사율 값이라 생각하시면 됩니다. 대부분의 엔진이나 문서에서는 F0 라고 표현을 합니다( 아마도 "Fresnel at Degree 0" 의 약자겠죠 ).

만약 정확한 값을 넣고자 한다면, 모든 매질의 굴절률 값을 수집한 다음에 계산을 하시면 됩니다. 일반적으로는 관찰자가 대기 속에 있다고 가정하기 때문에 어떤 매질의 굴절률이 n 이라고 할 때 다음과 같이 계산됩니다.

식5. F0 계산.

물의 예를 들어 보죠. 물의 경우에는 1.33 의 굴절률을 가지고 있습니다. 이를 식5 에 넣어 보면 F0 는 식6 과 같이 계산됩니다.

식6. 물의 F0 계산.

각 매질의 굴절률( IOR )은 [ IOR LIST ] 라는 페이지에 정리되어 있습니다. PDF 로 정리된 것도 있습니다[ IOR_Table.pdf ].

일반적으로 이 F0 를 "Metallic" 핀에다가 넣어 주시면 됩니다.

UE4 의 프레넬 노드

프레넬 공식은 림라이트나 실루엣을 만들기 위한 공식이 아닙니다. 하지만 그런 효과를 원하시는 분들을 위해서 Fresnel 노드가 따로 존재하기는 합니다[ 10 ].

그림9. 프레넬 노드. 출처 : [ 10 ].

하지만 이것을 사용하는 것에 대한 책임은 본인이 지셔야 합니다. 왜냐하면 Metalic 으로서 반영되는 Fresnel 은 그 의미가 명확하지만, 이 노드를 사용하는 것은 그냥 효과이기 때문입니다. 이 노드를 사용하게 된다면 비물리적인 결과를 산출할 수 있습니다. 보통 이 노드를 사용할 때는 Metalic 을 제거하고 Emissive 를 사용합니다.

그림10. UE4 프레넬 노드의 사용. 출처 : [ 10 ].

참고자료

[ 1 ] Fresnel equation, Wikipedia.

[ 2 ] Auguistin-Jean Fresnel, Wikipedia.

[ 3 ] Light, Wikipedia.

[ 4 ] Refracitve index, Wikipedia.

[ 5 ] 빛이란 무엇인가? 10 page, Newton Highlight. 일본 뉴턴프레스.

[ 6 ] Snell's law, Wikipedia.

[ 7 ] Refraction, Wikipedia.

[ 8 ] Schlick's approximation, Wikipedia.

[ 9 ] Real Shading in Unreal Engine 4.

[ 10 ] 머티리얼에 프레넬 사용하기, UE4 Document.

+ Recent posts