물리 기반 셰이딩이란 언리얼 엔진 4 에 사용되는 라이팅 및 섀도잉 알고리즘으로, 라이트와 머티리얼 사이의 물리적 상호작용을 통해 유추해 내는 방식이기에, 일반적인 물리적 척도를 단위로 사용하고 머티리얼 정의를 현실에서 간단히 끌어낼 수 있습니다. 과거 개발자들은 원하는 모양을 내기 위해 여러가지 변수를 조정해야 했으며, 다양한 라이팅 상황에서 예측하지 못한 결과가 나기도 했을 것입니다. 물리 기반 셰이딩을 통해 콘텐츠 제작자는 여러가지 라이팅 상황에서도 높은 퀄리티와 예측가능한 일관성을 보이는 콘텐츠를 만들어 낼 수 있습니다.
언리얼 엔진 4 의 물리 기반 렌더링이 콘텐츠 제작자에게 영향을 끼치는 방식은 이렇습니다.
라이트
라이팅을 계산할 때, UE4 는 물리적으로 가급적 근접한 알고리즘과 단위를 사용합니다. 예를 들어 빛의 세기는 루멘 단위이며, 역제곱 법칙에 따른 속도로 감쇠됩니다. 즉 라이트가 광원 근처에서는 매우 밝다가 거리가 멀어져 감에 따라 급격히 어두워진다는 뜻입니다. 이러한 수준의 정확도로 인해 명암비가 높은 씬 라이팅이 가능하며, 그에 따라 글로벌 일루미네이션이나 리플렉션 같은 기능이 빛을 발하게 됩니다.
첫 그림 왼쪽은 역제곱 감쇠 라이트를, 오른쪽은 지수 감쇠 라이트를 나타냅니다. 둘째 그림은 역제곱 감쇠 스포트 라이트 하나로 라이팅된 씬으로, 명암비가 높은 라이팅이 어떻게 리플렉션과 글로벌 일루미네이션에 영향을 끼치는지를 나타내 줍니다.
머티리얼 셰이딩
현실의 모든 표면에는 일정한 형태의 스페큘러 리플렉션이 있기 때문에, UE4 는 모든 머티리얼에 스페큘러 하이라이트와 씬 리플렉션을 줍니다. 리플렉션의 양은 카메라에 비해 표면의 각이 어떻게 되어있는지에도 영향을 받습니다. 표면이 논메탈이고 카메라를 향해 있는 경우, 스페큘러 리플렉션은 대략 라이트의 4% 정도 되며, 표면이 카메라의 지표각에 있는 경우 스페큘러 리플렉션은 라이트의 거의 100% 가 됩니다.
이 그림은 표면이 카메라를 향하는 각도에 따라 스페큘러 리플렉션의 양이 어떻게 변하는지를 보여줍니다.
.
머티리얼 셰이딩시 UE4 는 에너지 보존 법칙도 따릅니다. 이 부분은 머티리얼의 러프니스를 변화시켜 보면 쉽게 확인할 수 있습니다. 러프니스가 매우 낮은 머티리얼을 만들면, 아주 작지만 밝은 하이라이트가 생깁니다. 러프니스를 올리면, 하이라이트는 크게 퍼지면서 매우 어두워집니다. 같은 양의 빛이 넓은 지역에 걸쳐 반사되므로 밝기가 덜해 보이는 것입니다.
다음 그림은 러프니스가 각각 0.1, 0.5, 0.9 인 상태의 머티리얼을 나타냅니다.
머티리얼 입력
머티리얼의 가장 큰 변화는 아마도 Metallic(메탈릭) 입력의 도입일 것입니다. 현실에서 메탈과 논메탈의 셰이딩은 매우 다릅니다. 논메탈은 4% 정도 스페큘러 리플렉션에 거의 디퓨즈 셰이딩인 반면, 메탈은 디퓨즈 리플렉션 없이 100% 스페큘러 리플렉션입니다. UE4 에서 '메탈릭'을 0 으로 설정하면 디퓨즈 셰이딩 컬러에 '베이스 컬러' 입력이 사용된다는 뜻입니다. '메탈릭'이 1 로 설정된 경우, '베이스 컬러'는 스페큘러 리플렉션 컬러로 사용되며, 디퓨즈 컬러는 검정으로 설정됩니다.
다음 그림은 메탈릭이 0 인 머티리얼과, 같은 머티리얼에 메탈릭이 1 인 경우를 나타냅니다.
이해해 두면 좋을 두 번째 변화는, 러프니스를 사용해서 현실에서 보이는 표면을 추정해 내는 방법입니다. 하이라이트가 거의 없는 표면의 경우 아마도 스페큘러를 낮추려 하실 것입니다만, 그보다는 러프니스를 올려야 합니다. 러프니스가 올라갈수록 하이라이트는 어두워 지므로, 칠판과 같은 둔한 표면을 추정해 내는 데는 이 방법이 물리적으로 보다 정확합니다. UE4 에서 스페큘러 입력이 사용되는 경우는 드뭅니다. 실제 지오메트리에 존재하지는 않는 노멀 맵 디테일에 의해 유발되는 미세한 오클루전을 받으려는 곳에 스페큘러를 제거하고자 할 때 가끔 유용하기는 합니다.
다음 그림에서 왼쪽 표면은 러프니스가 0 이며, 오른쪽 표면은 러프니스가 1 이라 스페큘러 리플렉션이 훨씬 강한 것으로 보입니다.
물리 기반 머티리얼에 대해 자세히 알아보고자 하시는 경우, 저희 공식 문서 를 참고해 주세요. 그리고 언제나처럼, 질문이 있으신 경우 저희 포럼 또는 트위터 @Mutantspoon 에서 저를 찾아주시기 바랍니다!