본문 바로가기

Unreal Engine

Background: Physics and Math of Shading

- 원문 : https://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf


by Naty Hoffman


~ 앞부분의 빛 물리 관련 부분은 생락하였음



셰이딩의 수학


전자기 방사선(가시광선을 포함한)의 측정은 흔히 방사 분석(radiometry) 라고 부른다. 표면이나 방향 등등에 걸친 빛을 측정하는 방사량이라고 하는데, 우리는 하나의 광선으로부터 나오는 빛의 규모를 측정하는 단위인 radiance만을 다룰 것이다. 우리는 radiance를 가리키기 위해 보통의 경우처럼 이를 L로 표기할 것이다. 표면의 점을 셰이딩할 때, Li는 표면으로 입사하는 빛의 radiance를 의미하고 Lo는 반사는 빛의 radiance를 의미한다.

다른 방사량과 마찬가지로, radiance는 스펙트럼성의 양이다: 그 양은 파장의 기능에 따라 달라진다.  이론적으로, 가시광선의 radiance를 표현하려면, 연속되는 스펙트럼 분포가 축적되어야 한다. 조밀한 스펙트럼 샘플들이 특수한 렌더링 어플리케이션에서 사용되기도 하지만, 영화나 게임의 프로덕션 렌더링에서는 대신 RGB 트리플이 사용된다. 이 트리플이 스펙트럼 분포와 어떻게 연관되는지에 대한 설명은 Real-Time Rendering을 비롯한 많은 곳에서 찾아볼 수 있다.



BRDF


위 그림에서 묘사되어 있듯이, 보편적으로 셰이딩은 지역적으로 다루어질 수 있다고 전제한다. 이 경우, 표면의 어떤 점의 빛에 대한 반응은 입사하는 방향(빛 방향) 과 반사하는 방향(시점 방향)에 따라서만 결정된다. 이 문서에서, 우리는 반사되는 방향을 가리키는 단위 벡터를 v로, 빛이 입사하는 방향의 반대 방향을 기리키는 단위 벡터를 l로(모든 벡터들이 표면의 바깥쪽 방향을 바라보는 것이 편리하므로) 표기할 것이다. 빛에 대한 표면의 반응은 BRDF(Bidirectional Reflectance Distribution Function) 이라고 불리는 함수에 의해 수량화되는데, 우리는 이를 f(l,v) 로 나타낼 것이다. 들어오고 나가는 각각의 방향은 두 개의 숫자(예를 들어 극좌표)로 파라미터화 될 수 있으므로, BRDF는 총 4차원이다. 만은 경우에, 빛과 시점의 방향을 표면을 중심으로 회전시키는 것은 BRDF에 영향을 주지 않는다. 이런 시점 독립적인(isotripic) BRDF들은 세 개의 각도로 파라미터화 될 수 있다(아래 그림을 보자). 실제로, 하나의 BRDF를 계산하기 위해 사용되는 각도의 갯수는 하나부터 다섯 개까지 다양하다 : 보편적으로 사용되는 각도가 아래에 묘사되어 있다.





 BRDF는 입사 방향과 반사 방향에 의존적이다 : 이 방향들은 네 새의 각도, 시점 독립적인 BRDF의 경우에는 3개의 각도로 파라미터화 될 수 있다. 여기에서 n은 표면 노멀 벡터이고, l은 들어오는 빛 방향 벡터, v는 반사되어 나가는(view) 방향의 벡터이고, t는 표면에서 선호되는 방향을 정의하는 탄젠트 방향의 벡터를 의미한다(이는 시점 의존적인(anisotropic) BRDF에서만 사용되는데, 이 경우에는 빛과 시점 벡터가 n을 중심으로 회전할 때 반사 반응이 달라지기 때문이다. 




원칙적으로, BRDF는 표면 위의 빛과 시점 방향에 따라서만 정해진다. 다른 말로,n · l 과 n · v (BRDF 표현식에서 자주 사용되는 값들이다) 의 내적 결과들은 음수 값이 아니어야 한다(non-negative). 백 페이싱을 피하기 위해서, 빛 방향은 간단하다 : 이는 앞을 향한 면에 입사하는 빛만 모아서 계산하거나, 뒷면을 향하는 면 방향에서 오는 모든 라이트 기여(Lighting Contribution) 을 0으로 세팅하는 방법으로 이루어진다. 뒷면을 향하는 시점 방향은 이론적으로 절대 존재하지 않는다. 그러나 (게임에서 흔한)보간된 버텍스 노멀이나 노멀 맵핑은 실제로 그런 현상을 상황을 만들 수 있다. 음수 값의 n · v 에 대한 BRDF 계산은 n · v 값을 0으로 클램핑하거나 절대값을 사용하는 것으로 피할 수 있다. 어떤 경우에는, 단순히 BRDF를 음수 값으로 계산하는 것이 더 좋은 결과를 얻을 때도 있다. 그러나 연산이 제대로 되었는지 확인하기 위한 주의가 필요하다.

BRDF는 직관적으로 두 가지의 방법으로 구분될 수 있다: 첫 번째는 특정 방향에서 오는 광선에 대해서, 표면 위에서 모든 방향으로 반사되거나 산란되어 나가는 빛의 상대 분포를 제공하는 BRDF가 있다. 두 번째는, 특정 방향의 시점 방향이 주어지면, 각각의 입사각에서 들어오는 빛이 나가는 빛에 주는 상대적 기여들을 시점 방향에 대해 돌려주는 것이다. 이 두 가지 해석은 그림 20에 묘사되어 있다. 

BRDF는 스펙트럼성의 수량이다. 이론적으로 입, 출력 파장은 BRDF들의 추가적인 입력값일 것이고, 이것은 BRDF의 차원을 크게 증가시킨다. 하지만, 실제적으로 각개의 파장 사이의 간섭(crosstalk)이 없으므로, 나가는 빛의 각 파장들은 오직 들어오는 빛의 해당 파장에만 영향을 받는다. 이것은 입, 출력 파장을 BRDF의 입력값으로 취급하는 것이 아니라, 단순하게 BRDF를 스펙트럼 값의 빛 색상으로 곱해지는 스펙트럼 값의 함수로 취급한다는 것을 의미한다.. 프로덕션 셰이딩에서, 이것은 RGB 값의 BRDF에 RGB 값의 라이트 컬러가 곱해지는 것을 의미한다.

BRDF는 반사 공식(Reflectance Equation) 에 사용된다.




이 공식에 조금 주눅이 들 수 있지만, 그 의미는 간단하다 : 나가는 radiance는 BRDF와 코사인 팩터를 (표면위의 모든 방향에 걸쳐) 들어오는 빛 만큼 적분한 값과 같다. 당신이 만약 적분에 친숙하지 않다면, 연속적인 가중 평균치라고 생각하면 된다. ⊗ 기호는 이 식이 구성 요소별(Component-wise) 벡터 곱이라는 것을 나타내기 위해 사용되었다. BRDF와 빛 색상은 모두 스펙트럼의(RGB) 벡터값이기 때문에 사용된 것이다.

들어오고 나가는 방향에 대한 모든 함수가 BRDF가 될 수 있는 것은 아니다. 보통 BRDF가 물리적으로 합당하다고 여겨지기 위해 포함하고 있어야 할 두 개의 프로퍼티가 있다 : 호혜성(reciprocity) 과 에너지 보존성이다. 호혜성은 BRDF가 l과 v를 교환하더라도 같은 값을 가져야 한다는 것을 의미한다. 


에너지 보존은, 표면은 들어오는 빛 에너지의 100%보다 많은 양의 빛 에너지를 반사할 수 없다는 것이다. 수학적으로는 아래의 공식으로 표현된다.



이것은 모든 가능한 빛 방향 l에 대해서, 나가는 방향 v에 걸친 BRDF와 코사인 팩터의 곱의 적분은 1을 넘지 않아야 한다. 


BRDF 스페큘러 텀은 대체적으로 표면 반사에 사용되고, BRDF 디퓨즈 텀은 Subsutface Scattering에 사용된다. 


BRDF에 의해 묘사되는 이 현상은 두 개의 독립적인 현상을 포함한다: 표면 반사와 표면 아래의 산란이다. 각각의 현상이 다른 양상을 띄기 때문에, BRDF는 각각마다 분리된 텀을 가진다. 표면 반사를 구현하는 BRDF 텀은 스페큘러 텀으로, 표면 아래의 산란을 나타내는 텀은 디퓨즈 텀이라고 한다. (위 그림 참고)



표면 반사(스페큘러 텀)


물리 기반의 스페큘러 BRDF는 대부분 미세면 이론을 기반으로 한다. 이 이론은 보편적인(광학적으로 평평하지 않은) 표면으로부터의 반사를 묘사하기 위해 개발되었다. 미세면 이론에 깔린 기본 전제는 표면 변화(Microgeometry) 의 존재인데, 이 변화는 관찰 가능한 규모(즉, 셰이딩 해상도) 보다 작은 규모이지만 가시광선의 파장보다는 큰 규모라서 기하 광학은 적용되면서 회절 등의 파동 효과는 무시된다. 지금까지, 미세면 이론은 한 번만 튕겨진(Single-bounce) 반사의 구현식을 도출해내기 위해서만 쓰였다; 여러 번 튕겨진(multiple-bounce) 표면 반사에 대한 포괄적인 이론은 아직 미결 과제이다.

Microgeometry가 가시광선의 파장보다 훨씬 큰 규모로 전제되기 때문에, 각각의 표면 위의 점들은 광학적으로 평평하다고 취급할 수 있다. 전 장에서 설명했듯이, 광학적으로 평평한 표면은 빛을 정확히 두 방향으로 쪼갠다: 반사와 산란 방향이다.




각각의 표면 위 점들은 빛을 주어진 입사각으로부터 한 방향으로 내보내는데, 이것은 미세면 노멀인 m의 방향에 따라 결정된다. BRDF 텀을 계산할 때, 빛 방향 l과 시점 방향 v가 정해진다. 이것은, l을 정확히 v 방향으로 반사하는 방향으로 정렬된 표면 위의 점들만이 잠재적으로 BRDF 값에 기여 할 수 있다는 뜻이다. 그림 22에서, 우리는 이 "제대로 정렬된" 표면 위 점들의 노멀 방향이 정확히 l과 v 사이의 절반에 정렬되어 있음을 볼 수 있다. 이 l와 v 사이의 절반 벡터를 half 벡터 또는 half-angle 벡터라고 부른다; 우리는 이것을 h라고 표기할 것이다.


m=h인 표면 위 모든 점들이 반사에 활발히 기여하는 것은 아니다: 그중 어떤 것은 다른 표면 영역 때문에 방향 l로부터 가려지거나(섀도잉), 방향 v로부터 가려지거나(마스킹), 혹은 둘 다에 해당된다. 미세면 이론은 모든 섀도잉된(즉 l로부터 가려진) 빛은 스페큘러 텀에서 없어진다고 전제한다: 현실에서는, 여러번의 표면 반사로 그 중 일부는 결국 보이겠지만, 미세면 이론에서는 이 부분은 계산에 넣지 않는다. 여러 종류의 빛-표면 상호작용의 종류는 그림23에서 확인할 수 있다.

이 전제들로(지역적으로, 광학적으로 평평한 표면, 상호 반사는 없음) 첫 번째 원칙으로부터 스페큘러 BRDF 텀을 도출해낼 수 있다. 이 스페큘러 텀은 아래와 같은 형태를 띤다.





각각의 텀에 대한 자세한 사항을 알아보기 전에, 빠르게 요약해보자. D(h)는 미세면 노멀 분포 함수(Microgeometry Normal Distribution Function, NDF) 이고, 하프벡터 h에 의해 값이 구해진다. : 즉, l에서 v로 빛을 반사할 수 있게끔 정렬된 표면 위의 점들의 (표면 면적 대비) 밀집도를 나타낸다. G(l. v. h)는 기하 함수(geometric function)이다; 이것은 마스킹되거나 섀도잉되지 않은 m=h인 표면 위 점들의 퍼센티지를 나타내는, 빛 방향 l과 시점 방향 v를 받는 함수이다. 그러므로, D(h)와 G(l, v, h) 의 결과물은 빛을 l로부터 v로 성공적으로 반사함으로서 만사에 활발히 참여하는 표면 위의 점들, 즉 활성화된 표면 위 점들(Active surface points)을 돌려준다. F(l, h) 는 빛 방향 l과 활성화된 미세면 노말 m=h를 받아 활성화된 표면 위 점들의 프레넬 반사를 돌려주는 함수이다. 이 함수는 각각의 표면 위 점들이 입사된 빛을 얼마나 반사하는지를 알려준다. 마지막으로,  분모 4(n · l)(n · v)는 교정 팩터인데, 미세 지오메트리의 로컬 스페이스에서 전체 미세면의 로컬 스페이스 사이의의 양으로 변환되도록 하는 역할을 한다.




프레넬 반사


프레넬 반사는 광학적으로 평평한 표면으로부터 반사된 빛의 비율(fraction)을 계산한다. 그 값은 두 가지 요소로 결정된다: 입사각(incoming angle: 표면 노멀과 라이트 벡터 사이의 각도, angle of incidence 또는 incident angle이라고도 함), 그리고 재질의 굴절 정도이다. 굴절율은 가시 스펙트럼에 따라 달라지므로, 프레넬 반사는 스펙트럼성의 양이다 - 프로덕션에서는 RGB 트리플이다. 또한 우리는 각 RGB값이 0과 1 사이에 위치해야 한다는 것을 안다 - 표면은 들어온 빛의 0% 이하나 100% 이상을 반사할 수 없기 때문이다.

프레넬의 전체 방정식은 약간 복잡하고, 거기에 필요한 머티리얼 파라미터(가시 스펙트럼에 걸쳐 조밀하게 샘플링된 복잡한 굴절률)는 아티스트들에게 편리하지 않다. 하지만, 실제 세계의 재질들에 대한 이 방정식들의 양상을 관찰함으로, 더욱 편리한 파라미터들을 이용한 간단한 표현식이 도출될 수 있다. 이것을 유념해 두고, 그림 24의 그래프를 보자. 

아주 다양한 재질이 그래프에 선별되어 있다. 그럼에도 불구하고, 어떤 요소들은 공통점이 보인다 : 반사는 0에서 45도 정도의 입사각에서는 거의 일정하다. 반사율은 45도에서 75도 사이에서 좀 더 눈에 띄게 변화한다.(대체적으로, 하지만 항상 그런 것은 아니지만 증가함). 마지막으로, 75도에서 90도 사이에서반사율은 빠르게 1에 도달한다(컬러로 보자면 흰색이다).

이들 값들과 각도들이 단순한 3d 장면에서 얼마나 다양하게 분포되어 있는지 살펴보는 것은 도움이 된다. 미세면 이론은 잠시 치워두고, 좀 더 단순한 케이스 - 광학적으로 매끈한 금속 표면에서의 반사를 살펴볼 것이다. 이러한 표면은 각각의 입사하는 광선들을 정확히 하나의 각도로 반사한다. 이 양상을 BRDF로 재현하는 것은 편리하지 않다(결국 델타 함수가 된다). 하지만 이를 렌더링을 위해 심플하게 구현하는 방법이 있다 - 반사된 시점 벡터에서부터 들어오는 radiance를 샘플링한 다음 프레넬 반사로 곱해 나가는 radiance를 구하는 것이다. 이것은 임의의 방향에서부터 들어오는 빛을 재현하는 일루미네이션 모델에서 잘 작동한다(일루미네이션 모델에 대해서는 차차 설명할 것이다). 이 경우, 프레넬 반사에 필요한 "입사각" 은 표면 노말 n과 시점 벡터 v(여기서 입사각은 n을 중심으로 한 v의 반사각이며 같은 각도를 갖는다) 로 계산된다. 그림 25는 이 각도와 계산된 프레넬 반사의 결과값이 단순한 3d 장면에서 얼마나 다양한지를 보여준다. 초록색과 노란색 영역이 지배적인 것을 볼 수 있다 - 프레넬 반사는 가시적인 픽셀의 대다수에 따라서는 거의 변화가 없다가, 가장자리에서만 눈에 띄게 증가한다.

미세면 이론에서, 우리는 매끈한 표면이 아닌 부분적으로만 매끈한 지오메트리를 다룬다. 이 경우, 우리는 각각의 표면 위의 점이 가지는 프레넬 반사에만 관심이 있다. BRDF에 기여하는 표면 위의 점들은 모두 하프 벡터 h와 같은 노멀을 가지고 있으므로(그림 22를 떠올려보자), 프레넬 반사의 계산에 사용되어야 할 벡터가 곧 h라는 것을 알 수 있다. 프레넬 입사각은 h와 l 사이의 각도이다. (l 대신 v가 사용될 수도 있다. h의 정의에 의해 둘은 서로 같을 것이므로).

그림 26은 그림 25에서 n과 v 사이의 각도를 시각화한것과 같은 방법으로 h와 l 사이의 각도를 시각화하고 있다.  그림에서 볼때 특정한 라이트 각도에 서 노란색이나 심지어는 빨간 영역이 장면에 지배적으로 나타나기도 한다는 것을 알 수 있다. 하지만, 그림 27에서 보듯이, 이것은 오해이다: BRDF의 나머지 부분이 고려된다면, 빨간 부분(반사가 크게 증가하는 부분)은 가장자리에 국한되는 것이 당연하다.

프레넬 반사가 주어진 3D 장면의 대부분의 가시적인 영역에서 0도 가깝게 머무르기 때문에, 우리는 이 값(F0으로 표기하도록 하자)을 재질의 특징적인 스페큘러 반사(Characteristic Specular Reflectance)라고 생각할 수 있다. 이 값이 보편적으로 "색상" 이라고 생각될 수 있는 모든 프로퍼티를 가진다 - 0과 1 사이의 RGB 값으로 조합되어 있고, 선택적으로 반사된 빛의 측정치이기 때문이다. 이러한 이유로, 이 값을 표면의 스페큘러 컬러라고 볼 수 있다.

F0은 프레넬 반사 근사치로서 완벽한 파라미터이고, Schlick 은 비용이 적게 들면서 상당히 정확한 근사를 발견했다.




이 근사치는 컴퓨터 그래픽스에서 널리 사용된다. 미세면 BRDF에서 사용될 때는, 활성화된 미세 지오메트리 노멀 h는 표면노말 n으로 치환되어야 한다.




F0에 어떤 값을 적용해야 알맞을 지 알기 위해서는, 실제 세계의 재질들의 값을 살펴보는 것이 좋다. 이것은 테이블 1에서 볼 수 있다. 값들은 선형 스페이스와 감마(sRGB) 스페이스 모두에 제공된다: 선형 공간에서 셰이딩하는 것의 중요성과, 감마 공간에서의 솅딩 입력값을 변환하는 것에 관련된 이슈들은 관련 문헌을 참고하라.




테이블 1을 살펴보면, 몇 가지 점이 눈에 띈다. 하나는 금속이 비금속들보다 상당히 높은 F0값을 가진다는 것이다. 심지어는 비교적 어두운 금속인 철도 0도에서 들어오는 빛의 50% 정도를 반사한다. 금속은 Sub-surface reflectance 가 없다는 것을 기억해보자; 밝은 스페큘러 색과 디퓨즈 컬러의 부재는 금속이 가진 독보적인 특징이다. 반면 가장 밝은 비금속 중 하나인 다이아몬드는 입사각 0도에서 17% 정도의 빛만 반사한다; 대부분의 비금속은 그것보다 훨씬 적은 양을 반사한다. 아주 적은 재질들만이 20% ~ 40% 정도의 이도저도 아닌 값들을 가진다; 이 재질들은 대부분 프로덕션 셰이딩에서 거의 볼 일이 없는 반도체이거나 다른 낮선 재질들이다. 2% 이하의 값도 동일한 경우이다(물의 F0값). 사실상, 금속이나 보석류, 수정, 그 이외에 실험실 밖에서 흔히 관찰할 수 있는 재질들은 2~5%의 아주 좁은 범위 내 F0 값을 가진다.




노멀 분포 함수(Normal Distribution Function)


대부분의 표면의 Microgeometry는 표면 위의 점이 일정한 방향으로 분포되어 있지 않다. 많은 표면 위 점들이 거시적인(macroscopic) 노멀 n 방향으로, 즉 위를 향해 있다. 표면 방향의 이러한 통계적 분포는 microgeometry normal distribution function D(m) 을 통해 정의된다. F()와는 다르게, D() 는 0과 1 사이의 범위 내에 있지 않다 - 그러나 결과값은 양수여야 하고, 임의로 큰 값을 줄 수도 있다(이것은 특정 방향을 향한 노멀을 가진 표면 위의 점들이 많이 밀집되어 있는 것을 의미한다). 또한, F() 과는 다르게, D() 함수는 스펙트럼의 RGB 값이 아니고 스칼라 값이다. 미세면 BRDF 텀에서, D() 는 방향 h를 사용해 구해진다 - 이것은 m = h인, 잠재적으로 활성화된 표면 위 점들의 밀집도에 대한 판단을 돕기 위한 것이다. 이것이 공식 4에서 노멀 분포 함수가 D(h) 로 표현된 이유이다.

D() 함수는 스페큘러 하이라이트의 모양과 밝기, 크기를 결정한다. 그래픽스 문헌들에서 몇 가지의 다른 노멀 분포 함수를 볼 수 있는데, 그중 많은 것들이 "러프니스" 나 다른 파라미터들을 사용하는 가우시안의 함수인데 반해, 시점 의존적인 함수들은 보통 두 개의 러프니스 파라미터를 가진다(최근에 발표된 몇몇 시점 독립적인 함수들도 그렇다). 표면 러프니스가 감소할수록, 전체 표면 노멀 n에 가까운 미세면 표면 노멀 m의 밀집도가 높아지고, D(m)의 값은 아주 높아진다. Walter는 노멀 분포 함수의 올바른 정규화와 몇몇 예제를 제공했다; 더 많은 예제는 다른 문헌에서 ㅊ자아볼 수 있다. Reed는 노멀 분포 함수에 대한 또다른 훌륭한 설명을 해내었다.




기하 함수(Geometry Function)


기하 함수 G(l, v, h)는 주어진 미세면 노멀 m을 가진 효면 위 점이, 빛 방향 l과 시점 방향 v 모두에서 보일 수 있는 가능성을 나타낸다. 미세면 BRDF에서, m은 앞의 두 텀과 마판가지 이유로 h로 대체된다. G() 함수가 가능성을 나타내므로, 그 결과값은 스칼라 값이고 0과 1 사이로 제한된다. D() 의 경우, G() 의 다양한 분석적인 구현 방식이 문헌에 나와 있다. 이들은 대부분 표면의 단순화된 모델에 기반한 근사값들이다. 기하 함수는 대부분 BRDF에 새로운 파라미터를 가져오지는 않는다. ㅇ파라미터가 대부분 없거나 D() 함수의 러프니스 파라미터를 사용한다. 많은 경우, 기하 함수는 공식 4의 분모 (n · l)(n · v) 을 다른 구현식으로 대체해서 이를 부분적으로 상쇄한다.

기하 함수는 BRDF의 에너지 보존 법칙에 필수적이다.- 이러한 텀이 없이는 BRDF는 받는 빛보다 더 많은 양의 빛을 임의로 반사할 수도 있다. 미세면 BRDF의 유도 중 가장 핵심적인 부분은 활성화된 표면 위 영역(l에서 v로 빛 에너지를 반사하는 부분이 차지하는 영역)과 거시적 표면의 전체 표면 영역 사이의 비율에 관련되어 있다. 만약 섀도잉과 마스킹이 계산에 포함되지 않는다면, 활성화된 영역이 전체 영역을 초과하는 불가능한 상황이 생기고 BRDF가 에너지를 보존하지 못하게끔 만들 것이다. 이는 어떤 경우에는 아주 큰 차이일 수 있다(아래 그림을 보자)






미세면 이론의 한계


미세면 이론의 이러한 구현식은 유연하고 매우 강력하다 - 이것은 파라미터 값(스페큘러 색, 노멀 분포의 러프니스 값)들을 바꾸거나 특정 보조 텀(노멀 분포 함수, 기하 함수)들을 바꾸는 것으로 다양한 모습을 표현할 수 있게끔 해 준다. 하지만, 구현되지 않는 몇몇 현상들이 있다. 만약 이것들이 중요하다면, 셰이딩 모델의 수정과 확장이 필요할 수 있다.


미세면 모델은 회절이나 간섭 같은 확연한 파동광학적인 현상들을 고려하지 않는다. 이것은 프로덕션 렌더링에서는 흔하지 않은 현상이므로, 실제적으로 큰 문제가 되지 않는다. 만에하나 문제가 되는 경우에는 물리 기반 모델 대신에 ad-hoc 테크닉을 사용해 볼 수 있다. 관찰 가능한 규모의 파장이 특징인 "매끈한(Smooth)" 표면이나, 비스듬하게 빛이 비추는 각도(grazing angle)에서의 원근 왜곡 현상 때문에 더 작아지는 특징이 있는 넓은 표면 등에서 미묘한 파동광학적인 현상이 나타날 수 있다. 이 현상들을 위해 여태까지 연구 발표된 모델들은 복잡해서 프로덕션에서는 잘 쓰이는 일이 없었다. 이러한 현상들을 다루는 프로덕션 친화적인 모델이 개발되어야 할 것이다. 광학 엔지니어링에서 유망한 모델들은 이미 그래픽스 문헌에 영향을 주기 시작하고 있다.

게다가,, 미세면 모델은 몇몇 암묵적인 가정들을 가진, 표면의 미세 기하학적 구조에 대한 제한적인 모델이다. 예를 들어, 노멀 분포 함수의 정의는 미세 기하 면의 가시적인 분포가 관찰 방향에 따라서 바뀌지 않는다는 것을 전제한다. 이것은 미세 기하 구조의 높이와 노멀이 서로 관련이 없다고 전제하는 것과 같다. 하지만, 이 전제는 항상 맞지는 않다. 예를 들어, 어떤 표면이 균일하게 거칠지만 튀어나온 부분이 마찰 때문에 갈려나갔다고 상상해보자. 빛이 비스듬히 비추는 각도(glancing angle)에서, 튀어나온 부분만이 보일 것이고, 표면은 다른 각도보다도 훨씬 매끈해 보일 것이다. 아래 그림을 보자.




최근 연구에 의하면, 어떤 경우는 기본적인 미세면 모델의 대안적인 해석이나 이의 수정된 버전이 실측된 데이터에 더 잘 들어맞는다는 것을 밝혀냈다 - 이는 대부분 위에서 설명한 현상들의 조합 때문이다. 이 결과들을 이해하려면 더 많은 연구가 필요하다.

미세면 이론이 표면 반사를 구현하기 위한 이론적인 토대로서는 훗날 대체(혹은 확장)될 필요가 있지만, 현재로서는 가장 잘 이해되어 있고, 우리가 가진 가장 성공적인 도구이다. 이러한 이유로, 이 노트의 나머지 부분은 미세면 모델에 초점을 맞추도록 하겠다.


// grazing angle(glancing angle)이란?


Image result for grazing angle


표면에 거의 평행한 광선을 이야기할 때, 광선과 표면 노멀 사이의 참고하기 보다는, 광선과 표면 사이의 각도를 참고하는 편이 더 유용할 때가 있다(즉, 90 - 입사각). 이 작은 각을 glancing angle 또는 grazing angle이라고 한다 (이 글에서는 비스듬한 각도로 번역)





피하면 반사(Subsurface Reflectance) - 디퓨즈 텀


문헌에서 피하면 부분 반사의몇몇 모델들을 찾을 수 있는데, 램버트 모델이 가장 단순하고 가장 널리 쓰인다. 램버트 BRDF는 사실 상수 값이다; 가장 잘 알려진 코사인 혹은  (n · l) 팩터가 반사 공식의 일부이다(BRDF 그 자체가 아니다). 램버트 BRDF의 정확한 값은 아래와 같다:



여기에서, cdiff는 부드럽게(diffusely) 반사되는 빛의 비율이다. F0의 경우와 같이, 0~1 사이로 제한된 R, G, B 의 RGB 값이었고, 많은 사람들이 "표면 색" 이라고 생각하는 것에 아주 가깝다. 이 파라미터는 대부분 "디퓨즈 컬러" 를 의미한다.

다른 디퓨즈 모델들은 램버트 모델이 구현하지 못한 현상들(예를 들어, 비스듬한 각도에서의 스페큘러와 디퓨즈 텀의 에너지 교환) 을 해결하려 시도하였다. 디퓨즈 텀은 표면 아래의 반사를 구현하는데, 이는 들어오는 에너지 중 표면에서 반사되어 나가지 않은 부분만 사용할 수 있다. 어떤 의미에서는, 스페큘러 텀은 들어온 빛 에너지의 "몫"을 갖고, 디퓨즈 텀은 그 "나머지" 만을 사용할 수 있다. 프레넬 효과가 비스듬한 각도에서 스페큘러 반사가 증가하게 만들기 때문에, 디퓨즈 텀은 그 각도에서는 줄어들어야 한다. 이 트레이드오프를 구현하기 위한 시도들은, 단순하게는 1 - 프레넬 팩터(반전값)을 디퓨즈 텀에 곱하는 방법부터, 더 복잡하고 정교한 방법까지 다양하다.

다른 디퓨즈 모델들은 표면 러프니스의 효과를 계산에 넣으려고 시도하였다. 이 현상에서 스케일의 역할에 대해서 이해하는 것이 중요하다. 우리가 보았듯이, 표면하 산란(Subsurface scattering)은 다시 방출되기 전에 표면 아래로 어느 정도의 거리를 나아가게끔 한다. 이 거리보다 작은 규모의 표면 불규칙한 부분은 피하면 반사에 영향을 끼치지 않을 것인데, 그 이유는 표면 위 어느 점에서 방출된 빛은, 그 불규칙한 부분보다 더 넓은 범위에 흩어져 있는 많은 표면 위 점에도 입사했을 것이기 때문이다. 하지만, 특정한 표면은 산란 거리보다 더 큰 스케일로 거칠고, 이들은 램버트 모델과는 확실히 모습을 보인다. 이런 경우를 해결하기 위한 다른 모델들이 개발되어 있다. 이들 셰이딩 모델들이 특별히 거친 표면을 렌더링하기 위한 것이라고 많이들 오해하지만, 이것은 사실이 아니다 - 중요한 것은 러프니스의 정도가 아닌, sub surface scattering 거리에 비한 거친 표면 디테일의 크기이다.


다른 텀들

앞에서 언급했듯이, 디퓨즈 텀과 미세면 모델에 의해 구현되는 현상의 허점에 있는 두 가지 종류의 반사 현상이 있다.

한 가지는 subsurface single-scattering이다. 빛이 표면에서 굴절될 때, 한번 산란된 다음 표면 바깥으로 다시 굴절된다. 이 현상은 디퓨즈와 스페큘러 반사 양쪽 모두의 특징을 조금씩 보여준다; 각도에 크게 의존하면서도, 오브젝트 표면 아래에 있는 재질의 속성에도 영향을 받는다.

다른 현상은 여러 번 튕겨진 표면 반사이다. 빛이 표면에서 떠나기 전 여러 개의 표면 위의 점들 사이에서 반사된다. 앞에서 이야기했듯이, 미세면 모델은 여러 번의 표면 바운스를 무시한다 - 모든 차폐된 광선은 사라진다고 가정하며, 따라서 실제 세계에서의 현상에 비해서 에너지를 잃게 된다.

이 두 가지 경우를 커버하기 위해 추가적인 BRDF들을 소개할 필요도 있겠지만, 아직 발표된 좋은 모델들이 부족하다. 이 현상들이 표면하 반사와 표면을 분리하기 위한 편광 측정법 같은 보편적인 방법들에 영향을 끼칠 것이라는 것도 자명하다. 예를 들어, 한 번만 튕긴 표면하 반사가 편광을 크게 보존하므로, 편광 측정법으로 측정된 "표면 반사"는 이 현상들에서 발생한 결과들을 포함할 것이다.


프로덕션을 위한 물리 기반 셰이딩 모델의 구현


이전 섹션에서, 우리는 표면 셰이딩을 구현하기 위해 사용되는 보편적인 수학 모댈들을 살펴보았다. 이 섹션에서는, 이 모델들이 영화와 게임 프로덕션에서 어떻게 사용되는지 알아볼 것이다.

셰이딩 모델을 구현하기 위해서는 일루미네이션 모델을 결합시킬 필요가 있다. 우리는 가장 흔히 사용되는 유형의 일루미네이션 모델들을 살펴보고 이들을 어떻게 BRDF에 결합시키는지 차례로 알아볼 것이다.


제너럴 라이팅

대부분의 경우에, BRDF는 모든 방향에서 들어오는 빛에 대해서 통합되어야 한다. 이것은 스카이라이트와 장면 내 다른 오브젝트의 정확한 반사까지 포함해야 한다. 이것을 완벽히 해결하기 위해, 몬테 카를로 레이 트레이싱과 같은 일루미네이션 알고리즘이 필요하다. 이 알고리즘에 대한 자세한 설명은 여기의 주제를 벗어나기 때문에 다른 논문에서 찾아보자.


이미지 기반 라이팅


이미지 기반 라이팅은 대분의 경우 먼 거리의 라이팅을 나타내는 환경 맵 형태로 저장된다. 환경 맵은 아주 매끈한(거울같은) 반사를 쉽게 나타낼 수 있다. 프레넬 반사는 방정식 5를 통해 구현되는데, 여기에서 라이트 벡터를 시점 벡터로 치환하는 수정을 거친다(거울 표면의 노멀 각도는 변하지 않으므로 두 각도는 같다). 표면 노멀이 시점 방향에 대해 뒤를 향하고 있을 때 문제가 있을 수 있는데(이것은 보간된 버텍스 노멀이나 또는 범프 매핑에서 발생할 수 있다) 부정확한 반사 방향은 거의 눈치채기 힘들다. 앞에서 언급했듯이, 시점 벡터와 노멀 벡터의 내적값이 음수가 되지 않도록 하려면, 0으로 클램핑하거나 절대값을 이용하는 방법을 사용할 수 있다; 이 경우는 절대값을 사용하는 것이 더 선호된다. 클램핑과는 다르게, 절대값을 사용하는 것은 극히 비스듬한 각도에서의 프레넬 값들을 아주 가느다란 픽셀 띠로 제한할 것이고, 이 쪽이 훨씬 더 타당하다.

환경 맵은 임의의 BRDF와도 함께 사용될 수 있지만, 정확한 결과를 얻으려면 노이즈를 없애기 위해 많은 샘플링이 필요할 것이다. 중요도 샘플링은 샘플 갯수를 (적어도 영화 렌더링에서) 감당할 수 있는 갯수로 줄여준다. 환경 맵 사전 필터링은 프로덕션에서 쓸 수 있는 또다른 접근 방식인데, 이 방법만 사용하는 경우(즉, 한 번만 사전 필터링된 샘플을 사용하는 경우 - 게임에서는 널리 쓰이지만 영화에서는 잘 쓰이지 않는다) 또는 중요도 샘플링과 함께 사용되는 경우가 있다. 반면 한 번만 사전 필터링된 샘플은, 원칙적으로 반사 공식의 총체적인 근사치인데, 매우 효과적일 수 있다. 사전 필터링 프로세스가 NDF 로브의 모양과 크기뿐만 아니라 사용된 환경맵 재현에도 사용된다는 것이 중요하다. 그리고, 사전 필터링된 샘플이 읽힐 때, 반사 적분을 타당하게 근사하는 인자를 곱해야 한다. 이것은 반사 적분을 두 가지 인자, 즉 사전 필터링된 환경 맵 룩업과, 셰이더내에서 적용된 두 번째 인자의 결과물이라고 보는 것이라고 할 수 있다.(..?)

이론적으로, 환경 맵이라는 것은 오브젝트에서 가까운 포인트에서부터 바라본 장면을 재현하고 반사하는 물체가 볼록한(Convex) 모양이며 반사된 장면으로부터 멀리 떨어져 있을 때, 한 오브젝트의 반사로 쓰일 수 있다. 하지만 실무에서는 이들 전제 중 많은 부분이 깨진다. 볼록하지 않은(non-convex) 물테는 환경에서 스스로를 가려야 한다(self-occlude) - 이것은 (게임에서 흔히) AO와 같은 단순한 오클루전으로 근사하거나, 오브젝트의  모습을 재현한 것에 반대로 레이트레이싱하여 더욱 정교하게 구현해서 무시될 수 있다. 반사된 오브젝트들은 서로 다른 표면 위의 점에 대해 눈치챌 만큼의 시차(관측 위치에 따른 위치나 방향의 차이)가 있을 만큼 가까울 수 있다 - 특히 반사하는 오브젝트가 클수록 이 현상을 보기 쉽다. 마지막으로, 환경 맵은 장면 내의 서로 다른 위치에서 샘플링되거나, 아예 다른 장면에서 샘플링될 수 있다. 많은 경우, 인간의 눈은 반사의 시차나 다른 위치에서 샘플링된 환경 맵이 일으키는 오류에 대해서는 민감하지 않은 것으로 밝혀졌다. 전체적인 컬러나 강도가 알맞다면, 반사되는 모양은 완전히 달라도 관찰자가 알아채지 못할 수 있다. 부분적인 장면의 라이팅에 환경 맵의 색상과 밝기를 맞추는 것은 그리 어렵지 않기 때문에, 환경 맵은 많은 상황에서 효과적인 도구가 된다. 부정확한 반사를 눈치챌 수 있는 경우들에서는 - (예를 들어, 반짝반짝한 바닥이나 레이싱 게임에서 플레이어의 차, 영화에서 반짝반짝한 메탈릭 주인공 같은) 반사를 올바른 방법으로 왜곡시키는 방법으로 해결될 수 있다.


Area Light 광원


태양이나 램프 같은 광원들은 강도(Intensity) 와 영역(area) 을 가진다. 이론적으로, 이 두 가지 속성을 환경 맵의 HDR 텍셀의 패치로 다룰 수 있지만, 이 둘을 따로 다루는 쪽이 이점이 있다. 이미지 기반 라이팅보다 area light 광원으로부터의 그림자를 계산하는 것이 더 쉽고, 시차를 더 알맞게 다룰 수 있으며, 아티스트들이 빛 방향과 밝기, 크기를 조정할 때 이미지 기반 라이팅 구현을 직접 수정하지 않아도 되기 때문이다.

임의의 BRDF를 셰이딩하는 것도 이미지 기반 라이팅보다 area light 광원 쪽이 더 쉽다; 다중 중요도 샘플링이 노이즈를 크게 감소시켜 줄 수 있으며(이 테크닉은 이미지 기반 라이팅에도 적용될 수 있지만, Area light 광원쪽이 특히 더 효과적이다.  실시간 근사도 존재하며, 점점 널리 쓰이고 있다.


점 광원


Area light 광원을 점 광원으로 근사하는 것이 일반적이다(게임에서 특히 흔하지만, 영화에서도 쓰인다). 포인트 라이트, 디렉셔널 라이트, 그리고 스팟 라이트가 컴퓨터 그래픽스의 고전적인 점 광원 라이트이다(더 복잡한 종류들이 쓰이기도 한다). 이들이 무한히 작고 무한히 맑으므로, 점 광원들은 물리적으로 실현 가능하거나 현실적이지 않지만, 많은 경우에 합리적인 결과를 내놓으며, 연산적으로도 편리하다.

주어진 표면 위 점에 대한 점 광원의 효과는 두 개의 값으로 결정되는데, 라이트 색상clight와 라이트 방향 벡터 lc이다. 점 광원의 종류에 따라. 이 값들은 장면 전체에 걸쳐 일정하거나(예를 들어 글로벌 디렉셔널 라이트의 경우 그렇다). 다를 수 있다(예를 들어, 호인트 라이트의 clight가 거리에 따라 감소하고, lc가 라이트 위치에 의존적일 경우에 그렇다). 시각화를 쉽게 하기 위해, clight는 흔히 최적화된 표면, 즉 노멀이 라이트 방향 벡터와 평행하고(n = lc) 100% 흰색인 램버트 표면에서부터 반사된 radiance로 정의된다. 우리가 봐온 다른 색상 값들과 같이, clight는 스펙트럼(RGB) 값을 가지지만, 범위는 제한되어 있지 않다.

점 광원의 가장 큰 이점은 반사 공식을 크게 단순화시킬 수 있다는 점이다(아래 공식을 보자). 아주 작은 area light 광원 하나로부터 비추어지는 표면 위의 점에서 시작하자. 광원은 lc를 중심으로 하는, ε 각도 반경의 원뿔에 내포되어 있으므로, 이 원뿔 바깥쪽 방향에서는 빛이 들어오지 않는다.



clight의 정의에 따라 주어진 표면 위의 점에 area light가 비추는 양을 측정한다; 즉, clight는 재질이 100& 흰색인 램버트 표면이고 노멀 방향이 lc와 일치할 경우에 표면 위 점이 가지게 될 반사 radiance와 같다.



이것은 단순히 공식 1과 7을 cdiff = 1과 n = lc로 치환한 것이다. 이제 우리는 ε을 0으로 도출해, clight값을 상수로 만들 것이다. 우리는 lc와 l 사이의 최대 각도인 ε를 0으로 유도하고 있으므로, 리미트에서 (lc · l) = 1 이라고 가정할 수 있으며, 아래와 같은 결과를 얻을 수 있다.




간단한 재정리로 적분값을 리미트 안으로 넣는다.


 = πclight



이제 이 작은 area light광원을 보편적인 BRDF에 적용하여 ε가 0으로 수렴할 때 리미트 함수 안에서 어떻게 반응하는지 살펴보자.


 




위 공식에서, f(lc, v) 와 (n · lc)를 격리시킴으로써 리미트와 적분을 효과적으로 바꿀 수 있다; 이는 BRDF의 f()이 (실제 사용되는 모든 BRDF가 그렇듯) 타당하게 제대로 작동할 때 유효하다. 이전 공식을 바로 위 공식의 오른쪽 부분으로 치환하면 최종 점 광원 공식을 얻을 수 있다.




원래 반사 공식과 비교했을 때, 적분 부분을 BRDF 값 하나로 대체했는데, 이쪽이 연산하기가 훨씬 저렴하다. 게임에서는, 백페이싱 라이트 기여를 피하기 위한 방편으로 이 공식 내의 내적값을 0으로 클램핑하는 것이 보편적이다.

위에서 언급했듯이, 태양과 같은 디렉셔녈 라이트는 모두 lc와 clight가 장면 전체에 걸쳐 일관적이다. 포인트 라이트나 스팟라이트 같은 다른 유형의 점 광원들은 장면 내에서 모두 다르다. 현실에서는, clight는 빛으로부터의 거리의 역제곱(inverse square)으로 점차 감쇠할 것이지만, 실무에서는 주로 다른 감쇠 함수들이 쓰인다.


(역제곱과 빛 감쇠에 대한 친절한 설명 : https://blog.naver.com/ktejloves/100152951282)


여러 개의 점 광원이 표면을 비추고 있을 경우, 위 공식이 여러 번 연산되고 결과값은 합계된다. 점 광원들은 다른 방향에서 들어오는 빛이 모자란 것이 눈에 띄기 때문에 단독으로는 잘 쓰이지 않는다(특히 높은 스페큘로 값을 가진 표면에서 그렇다). 이 연유로, 점 광원은 보편적으로 다른 앰비언트 라이트나 이미지 기반 라이트 종류들과 함께 사용된다.; 후자는 이미 앞에서 언급하였고, 전자는 다음 섹션에서 다룰 것이다.



앰비언트 라이팅


여기에서 앰비언트 라이팅은 낮은 프리퀀시의 라이팅의 수치적인 구현이며, 그 값은 하나의 라이트 색상 상수라고 정의하는데, 이 값은 하나의 균일한 라이트 색상과 빛이 들어오는 모든 방향에서의 강도부터, 구면 조화(Spherical Harmonics) 같은 복잡한 구현까지를 의미한다. 흔히 이런 우형의 라이팅 환경은 디퓨즈 BRDF 텀에만 적용된다; 더 높은 주파수인 이미지 기반 라이팅은 스페큘러텀에 적용된다. 하지만, 앰비언트 라이팅을 스페큘러 BRDF 텀에 적용하는 것도 가능하다.  많은 문헌에서 이를(특히 게임쪽에서) 적용하고 있다.


물리 기반 셰이딩 모델 만들기


이 섹션에서는, 밑바닥부터 셰이딩 모델을 만드는 방법을 알아본다; 비 물리 기반의 셰이딩 모델을 물리 기반으로 변환하기 위해, SIGGRAPH 2010에서 우리가 발표한 자료를 보라.

Course Notes : http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_b_notes.pdf

Slides : http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_b.pdf

이전 장들에서 살펴본 원칙들에 따라 물리 기반 셰이딩 모델을 제작하려면, 몇 가지 선택을 해야 한다. 디퓨즈 모델 뿐만 아니라, D() (노멀 분포 함수) 와 미세면 스페큘러 모델을 위한 G() (기하 함수)도 선택해야 한다. 이 섹션의 나머지 부분들은 두 가지 스페큘러 함수에 초점을 둘 것이다.

D()와 G() 함수의 선택은 서로 독립적이다. 새로운 미세면 BRDF 모델을 발표한 논문들이 새로운 D() 와 G() 함수를 잘 소개하고 있다.


노멀 분포 함수 선택하기


가장 보편적인 NDF들(노멀 분포 함수)은 시점 독립적(isotropic) 이다- 이들은 거시적 표면 노멀 n에 의해서 정의된 각도에 회전 대칭적이다. 이것은 NDF가 미세면 노멀 m과 n 사이의 각도에 대한 함수로서 정의될 수 있다는 것을 의미한다: 셰이더에서는 각도를 코사인으로 다루는 것이 가장 편리한데, 이 값들로 내적 연산을 하기 쉽기 때문이다. 이러한 이유로, 시점 독립적인 NDF들은 n·m의 함수로 작성되는 것이 일반적이다. 이런 여러 가지 종류의 함수들의 NDF로서의 사용에 대해 많은 문헌들이 언급하고 있다. 하지만, 미세면 BRDF의 한 부분으로서 사용되기 위해서는 이 값들은 모두 정규화(Normalize)되어야 한다. 여러 가지 종류의 시점 의존적인 NDF들 또한 게임과 영화 제작에 쓰였지만, 지면의 한계로 우리는 시점 독립적인 NDF들만 다루도록 하겠다.

모든 미세면 노멀 분포는, 시점 방향에서 보이는 미세면 영역을 모두 합쳤을 때, 시점 방향에서 보이는 보이는 거시면 영역이 되어야 한다. 좀더 정확하게는, 미세면의 투영된 영역(the signed projected areas) 의 합은 거시적인 표면의 투영된 영역과 동일해야 한다: 이것은 어떤 시점 방향에서 보던간에 참이어야 한다. 수학적으로, 아래의 공식은 어떤 시점 방향 v에서도 만족되어야 한다.


적분이 반구가 아닌 전체 구 영역에 걸쳐있는 것에 주의하자, 그리고 코사인 팩터는 클램핑되지 않았다 - 뒤를 향한 표면은 음수의 분포 값을 가진다. 이 방정식은 높이 필드 뿐만 아니라 모든 유형의 미세 표면에 적용된다. 특별한 경우, v = n일때:



직접적인 BRDF의 계산에서, 특히 게임이나 여타 실시간 렌더링에서 NDF는 값을 구하기가 저렴해야 한다. 레이 트레이싱에서,  중요도 샘플링의 용이함은 가장 중요한 사항이다.

여기에서 우리가 살펴볼 모든 미세면 노멀 분포는 앞면을 바라보는(Front-facing) 미세면 노멀(즉, n · m ≥ 0 인, 미세면 노멀과 거시면 노멀의 각도 차가 90도를 넘지 않는 표면으로 해석할 수 있는 heightfield 모델링) 의 값만 구하도록 고안된 것이다.

이 함수들은 n · m의 음수값을 구하려는 것이 아니며, 그러므로 음수 값이 구해졌을 경우 원치 않는 결과를 낼 수 있다. 앞 면을 보는 라이트와 시점을 강제하는 렌더러들에서는, (NDF의 값이 구해지는) 하프 벡터 또한 앞면을 바라볼 것이기 때문에 문제가 되지 않는다. 반면, 노멀 보간과 노멀 맵핑이 뒷면을 바라보는 뷰 벡터와 그에 따른 뒷면을 바라보는 하프 벡터를 내놓을 것이다. 이것은 n · m을 0이나 아주 작은 양수의 엡실론 값(이 값이 분모로 쓰일 때 0으로 나누는 오류를 막기 위해)으로 클램핑함으로서 해결된다.

Phing 셰이딩 방정식은 컴퓨터 그래픽스 논문에서 가장 일찍 발표된 (그리고 가장 영향력 있는) 셰이딩 방정식이다. 이 방정식은 몇년 후에 미세면 BRDF 구조에 더 적합하도록 Blinn 에 의해 수정되었다(수정된 버전은 Blinn-Phong BRDF로 불리지만, 결과로 나온 BRDF를 우리는 단순히 Phong NDF라고 부르겠다), Blinn은 정규화 팩터를 특정하지 않았지만, 쉽게 연산될 수 있다:



 αp로 제곱하는 것은 Phong NDF의 "러프니스 파라미터" 이다; 높은 값은 매끈한 표면을 구현하고, 낮은 값은 거친 표면을 구현한다. 이 값들은 아주 매끈한 표면들에 대해서 임의로 아주 높은 값을 가질 수 있다(완벽한 거울은 αp = ∞ 일 것이다). 그리고 극단적으로 거친 표면은 αp 를 0으로 해서 얻을 수 있다. αp 파라미터는 아티스트들이 조정하고나 직접 페인팅하기 편리하지 않다. 이 값이 가지는 시각적 임팩트가 균일하지 않기 때문이다. αp에 대한 작은 수치의 변화만으로도 엄청난 시각적 효과가 발생할 수도 있고, 별 시각적 임팩트 없이도 큰 값을 급격하게 변화시킬 수도 있다. 이러한 이유로,  αp를 비선형적인 함수로부터 도출하는 "인터페이스 값"을 아티스트들이 조작하도록 하는 것이 일반적이다. 예를 들어, αp = ms에서 s는 아티스트들이 조정하는 0과 1 사이의 값이며, m은 주어진 쇼나 게임 내에서 αp의 상한값이다. 이 "인터페이스 함수" 들은 BRDF의 네이티브 파라미터들의 양상이 프로덕션 용도로 편라히지 않을 때 대부분 유용하다. 아래 그림은 코사인 제곱에 대한 Phong 분포가대수적 스케일에 따라 균등하게 배치되어 있음을 보여준다.

Blinn이 미세면 BRDF에 Phong 셰이딩을 적용한 같은 논문에서, 그는 다른 두 개의 NDF들을 소개하였다. 이 중 하나는 Torrance-Sparrow BRDF에서 도출되었다. Torrance-Sparrow BRDF는 Phong 애 비해서 연산 비용은 더 높지만 대체로 비슷한 행동 양상을 보인다(자세한 것은 참고문헌을 보자). 그러므로 이것은 막다른 길이라고 할 수 있다.  Cook and Torrance의 나중의 논문은 이를 다른 NDF, 즉 Beckmann 분포로 대체하는 방안을 발표했다. 올바르게 정규화되었을때,  Beckmann 분포는 아래와 같은 모습을 하고 있다.



Beckmann 분포는 Phong 분포아 어떤 면에서 아주 비슷하지만, 다른 면에서는 전혀 다르다. αp = 2α −2 b −2 의 관계를 이용하면 두 파라미터의 동등한 값을 찾을 수 있는데, αb < 0.5 와 같은 비교적 매끈한 표면에서는 매우 잘 들어맞는다 - 이는 아래 그림의 왼쪽에서 확인할 수 있다. αb < 0.1 정도의 더 매끈한 표면에서는 사실상 완벽하게 일치한다.




Beckmann과 Phong 간의 유사성과 그의 높은 연산 비용은, Beckmann을 더욱 막다른 길로 여기도록 하겠지만, 이 두 가지에는 파라미터화에서 근본적인 차이가 있다. αb 파라미터는 미세 표면의 root mean square(RMS : 제곱 평균) 곡선과 같다. 그러므로 αb 를 증가시키는 것은 미세면 전체의 경사를 증가시킨다는 의미이므로, αp를 감소시킴으로써  "랜덤니스(randomness)를 증가시키는 것" 보다는 "러프니스" 의 또 다른 의미이다. Phong 분포는 "최대 러프" 파라미터 값이 있는 반면에(αp = 0, 즉 미세면 노멀이 균등한 확률로 윗면 반구의 어딘가를 향하고 있는, 균일한 분포를 의미함),  (αb = 1) 의 값은 Beckmann에 특별한 의미가 없다 - 이것은 그저 미세면 균등 분포(RMS) 곡선이 1이거나, 45도라는 것을 의미한다. 보통으로 거친 값의 αb에서, Phong 이 평평하게 빠지는 것과 달리(위 그림의 오른쪽 부분), Beckmann은 가운데에서 푹 꺼지는 것을 확인할 수 있다.  αb값이 1을 지나면 높은 RMS 미세면 곡선의 "아주 거친" 표면을 볼 수 있다 - 이들은 균등한 분포보다는 덜 랜덤하지만, 덜 평평하다는 점에서 어떤 면에서는 더 "거칠다(Rougher). 아래 그림의 곡선을 보면, 러프니스가 증가하는 부분에서 푹 꺼지는 부분이 90도에서 "반대로 된 꼭지점(reverse peak)"가 되는 것을 볼 수 있다.



이 "겁나 거친" 분포가 실제 세계의 표면들을 구현하는 데에 유용할까? 아마도 그럴 것이다. 왜냐하면, 위를 향하고 있는, 많은 날카로운 섬유들로 이루어진 표면은 그러한 분포를 가질 것이고, 벨벳이 이러한 분포를 어느 정도 보인다. 다른 재질도 마찬가지다. 높은 αb 값에 대한 Beckmann 분포의 이러한 양상은 유영한 것이다, 그렇지 않으면 그냥 비싼 버전의 Phong NDF나 마찬가지일 것이다.

Blinn의 논문에 소개된(그리고 Blinn이 추천한) 마지막 NDF는 Trowbridge 와 Reitz로부터 나왔다. Blinn은 Trowbridge-Reitz NDF에 대한 정규화 팩터도 정해놓지 않았지만, 나중의 논문 - 여기서는 Trowbridge-Reitz를 "GGX 분포"라고 부름 - 올바른 팩터를 제시하고 있다. "GGX" 의 분모가 약간 더 복잡한(그리고 더 적절한) 형태를 하고 있지만, 우리는 여기에서 원본의, 단순한 형태를 사용할 것이다:



아래 그림은 f α파라미터 값의 범위에 따른 Trowbridge-Reitz 분포의 양상을 보여준다. 파라미터 조작은 Beckmann의 경우와 같이 값을 높이면 표면이 더 거칠어진다. Trowbridge- Reitz는 Phong 처럼 균등 분포 모델부터 Beckmann처럼 "겁나 거친" 표면까지 모두 구현할 수 있다.

 Trowbridge-Reitz 분포를 Phong  분포와 비교했을 때(아래 그림), 두 분포는 근본적으로 다른 모양이다. 파라미터 축을 따라,  Trowbridge-Reitz는 하이라이트 중심에서 동일한 값을 산출하는 파라미터일 때 Phong에 비해 일관적으로 더 좁은 정점을 가지며, 이 정점들을 더 긴 "꼬리(tail)"가 둘러싸고 있다.





Trowbridge-Reitz(붉은색)와 Phong(푸른색) 의 비교, 왼쪽 그래프는 거친 ~ 중간 정도의 표면을 나타낸다(αtr 값은 0.4 에서 1.0이다). 오른쪽은 더 매끈한 표면을 보여준다(αtr 값은 0.1에서 0.4이다). 두 그래프 모두, Trowbridge-Reitz가 Phong과는 전혀 다른 모양임을 보여준다 - 정점은 더 좁고, 꼬리는 더 길다.



Burleys,s Trowbridge-Reitz의 간단한 "인터페이스 함수" 를 제시했다: αtr = s^2 , 여기에서 s는 아티스트가 0과 1 범위 내에서 조작하는 값이다.

셰이딩 모델들은 실제 세계를 구현할 때 올바르게 동작할 필요가 있다. 몇몇 연수자들이 실측된 BRDF 데이터들을 발표했고 다른 연수자들은 이 측정된 데이터들(또는 그들이 직접 측정한 데이터들)을 여러 가지의 현존하는 셰이딩 모델들과 비교해 보았다. 최근에는, 실측된 표면에 더 잘 들어맞는 새로운 셰이딩 모델들의 개발이 이루어지고 있다. 최근 연구에서 발표된 세 가지의 분포에 대한 설명으로 NDF에 대한 공부를 마치도록 하자.



ABC 분포는 Church et al에 의해 처음 소개되었다. ABC분포는 표면의 heightfield 분포의 스펙트럼 제곱 분포(파동 효과를 포함하는 매끈한 표면 BRDF들)를 나타내는 역할로서 사용되다가, 미세면 NDF로 다시 사용되었다. 정규화되지 않은 분포 함수는 아래와 같은 형태이다:



위 식은 두 개의 파라미터를 가진다. αabc(원본 논문의 "B"에 해당하는) 와