PBR 정리
BRDF(Bidirectional Reflectance Distribution Function)
이전의 shading
Diffuse Reflection(난반사)
- 거친 표면에 빛을 반사되어 나오는 현상.
- 즉 난반사가 강하다는 것은 현재 표면이 거칠다는 의미이다.
Specular Reflection(정반사)
-
부드러운 표면에 빛이 반사되어 나오는 현상.
-
즉 정반사가 강하다는 것은 현재 표면이 부드럽다는 의미이다.
이전세대 셰이더의 경우는 물리적인 계산식이 아닌 컴퓨터의 하드웨어적 한계로 인해 비슷하게 보이도록 표현한 방식이다.
그렇기 때문에 실제 물리적인 현상하고는 달라보여지는 현상이 있었기 때문에 이를 보완해주는 작업을 따로 해주어야 하였다.
또한 Specular + Diffuse만으로는 표현하면 빛을 받지 않는 부분은 아예 어두웠기 때문에 이를 보완하기 위해 Ambient라는 것을 더해서 표현을 해주었다.
Ambient는 간접광이지만 실제 계산에서는 그냥 정해진 Ambient색깔을 더해줄뿐이었다.
PBS
추가된 요소
-
Albedo (물체의 색깔)
-
Roughness / Smoothness (표면의 거칠기/부드러운 정도)
-
Metallic (금속인지 비금속인지를 나타내는 정도)
물리기반 셰이더는 바로 실제 물리적인 연산을 통해서 어색하게 보여지던 현상을 없앨 수 있게 되었다.
가령 Specular의 경우 이전세대의 경우는 하얀점형태로 보였다면 이제는 반사되어져 나온 표면을 표현할 수 있게 되었고 Ambient 또한 색깔을 더하는 개념이 아니라 자동적으로 계산을 하게 되었다.
물리기반 셰이더의 경우 표면에 부드러운 정도를 설정할 수 있게 됨에 따라 그 값을 이용해 빛과 표면간의 반사정도를 계산할 수 있게 되었고, 더 이상 이전 세대처럼 Diffuse와 Specular텍스쳐를 필요하지 않게 되었다.
그렇기 때문에 이전 세대에서 쓰였던 Diffuse의 개념은 Albedo 혹은 BaseColor로 개념이 변경되어서 사용된다.
또한 Specular텍스쳐로 표현되던 것은 Metallic를 추가하여 금속이면 자신의 Albedo를 통해 Specular를 표현하고 아니면 하얀색을 표현하는 방식으로 변경되었다.
장점
물리기반 셰이더의 등장으로 이전세대 셰이더의 경우 표면의 재질을 표현하기 위해 셰이더를 일일이 구현했다면 재질의 속성을 변경함으로써 구현할 수 있기 때문에 셰이더가 폭발적으로 늘어나는 것을 조금이나마 방지할 수 있게 되었다.
단점
물론 이로 인해 기존의 셰이더로 구현하던 방식이 아닌 물리기반 셰이더로 제작하는 방식에 익숙해져야 하는 단점은 존재하며 사람의 피부나 비실사적인 셰이더는 여전히 이전 방식으로 구현할 수 밖에 없을듯 싶다.
Real Shading in Unreal Engine 4 요약
Lambertian Diffuse + Microfacet specular(cook-torrence) + ImageBased Lighting
<Cook-Torrence>
**Vectors**
N - Normal
L - Source
V - View
R - Reflection
H - Halfway
Diffuse BRDF
D - Distribution Function (Roughness)
distribution modeling (micro geometry)
Gaussian distribution
G - Geometry term
shadowing
Masking
F - 프레넬
Fresnel 은 관찰자가 바라보는 각도에 따라 반사되는 빛의 세기가 달라지는 현상을 설명하는 데 사용되는 용어입니다. 예를 들어 물 웅덩이 위에 서서 수직으로 내려다보는 경우, 반사되는 수면이 많이 보이지 않을 것입니다. 머리를 움직여 물 웅덩이의 수면이 시선과 평행이 되어갈수록, 수면의 반사면이 많아지는 것이 보일 것입니다.
UE4 에서 Fresnel 머티리얼 표현식 노드는 표면 노멀과 카메라까지의 방향의 내적을 기반으로 감쇠 계산을 합니다. 표면 노멀이 카메라를 바로 향하면 출력값은 0, 즉 발생하는 프레넬 이펙트가 없습니다. 표면 노멀이 카메라에 수직인 경우 출력값은 1, 즉 최대치의 프레넬 이펙트가 발생합니다. 그런 다음 그 결과를 [0,1] 범위로 제한시켜 가운데 음수 컬러가 생기지 않도록 합니다. 다음 그림은 이 개념을 나타냅니다.
구체 중앙의 0 인 부분은 프레넬 이펙트가 없는 것이 보입니다. 왜냐면 카메라가 바로 표면 노멀쪽을 향하고 있기 때문입니다. 표면 노멀과 카메라가 수직이 되어갈 수록, 즉 1 에 가까울 수록 프레넬 이펙트가 더욱 잘 보이게 되는데, 바로 그러한 작동방식 유형이 필요한 것입니다.
ρ(k1, k2) = ρs(k1, k2) + ρd(k1, k2).
MERL BRDF database
(http://people.csail.mit.edu/wojciech/BRDFDatabase)