기본적으로 라이팅이라는것은 Diffuse 성분과 Reflection, Refraction과 Translucency정도로 이루어져 있습니다.

정식으로는 Translucency 역방향으로부터 오는 Refraction 같은 것이지만요.

여기서 잠깐 Diffuse와 Reflection의 차이에 대해 다루어 보겠습니다.

간단하게 말하자면 Reflection은 카메라의 시점에 의해 변하는 것에 반해 Diffuse는 기본적으로 정적인 반사같은 것이며 오브젝트를 어떠한 시점에서 보더라도 변하지 않는 것이다.

참고로 한가지 중요한 것은 요새는 좀 더 물리적으로 올바른 라이팅 시스템을 사용하고 있다. 이말은 즉 열역학 제1법칙을 따라야 한다는 것이다. 이 법칙에서 에너지라는 것은 형태가 변할 뿐 새로 만들어지거나 없어질 수 없다라고 되어있다. 텍스쳐에 관련되어있는 우리들로써는 어떠한 종류의 물질적 기여도(변화)에도, 들어오는 빛보다 "적다" 혹은 "같다"여야 한다는 의미입니다.


Diffuse + Reflection + Refraction <= Incoming Light


위의 셋을 합치면 그 환경이 제공한 광량(빛의 양)이 되어야 합니다.


예를들어 Reflection이 증가하면 Diffuse나 Refraction의 기여도가 줄어든다는 것이다.

즉 이렇게 해서 밝기가 무한이 되거나, 난데없이 빛의 에너지를 얻거나 하는 것을 막습니다.


기존의 엔진을 다룰때에 대부분 감마보정(Gamma Corretion)에 기대고 있다고 생각합니다.

감마 보정이라는 것은 마지막 프레임이 모니터로 출력되기 전에 행하는 보정을 말합니다.

이로 인해 Contrast가 조금 더 나오게 되어 외형적으로 좀더 이쁘게 됩니다.

여기서 실제의 픽셀 값은 밝기나 채도에서 볼때 이 펙셀의 광량(빛의 양)을 나타낸다고는 할 수 없습니다.

이 그래프를 보면 0~1의 스케일에서 0.5의 밝기는 픽셀값으로 계산하면 실제는 127이 아닌 187이 됩니다.

이것은 감마보정의 효과입니다.


단 지금은 전부 직선으로 되어있습니다.

만약 지금, PBR의 구현에 대해서 알아보는분이 기억해야할 부분은 직선적인 어프로치가 중요하다는 것입니다.

이 그래프에서 직선을 뺴보면 이러한 느낌입니다. 이걸로 픽셀의 밝기와 그 픽셀이 소유하고 있는 라이트 에너지가 완전히 동일하다는 것을 알 수 있습니다.


잘 표현하면 사용하고 있는 엔진에서도 이렇게 될수 있을것입니다.


예를 들어보면 이 그림의​ 좌측과 우측에 하얀 픽셀과 검은 픽셀이 섞여 있는데 이들의 밝기는 128이라고 간주할수 있지만 중앙 위쪽에 있는 커다란 사각형은 그 좌측과 우측에 있는 막대기의 밝기의 중앙값 치고는 조금 더 어두워 보이는 것을 알 수 있습니다.

이걸로 픽셀의 밝기값이 빛의 에너지를 의미하고 있다는 것을 알수 있을것입니다.


다음은 메탈과 유전체의 구별에 과한 이야기입니다.

이것은 2개의 다른 그룹으로 되어 있으며, 각각의 셰이딩은 미묘하게 다르지만, 오늘은 대부분 이 2가지의 구별법에대해서 알아볼것입니다.


이 그래프는 매우 도움이 많이 되는것으로, 쓸만한 정보가 많이 포함되어 있습니다.

이 그래프의 아래를 보면 "angle of incidence'(입사각) 이라고 쓰여져 있는데, 이것은 빛의 표면에 닿는 각도를 나타내고 있습니다.

대면각은 여기에 있는 "0" 으로 되어있으므로 이것은 즉 '검적' 이라는 의미입니다.

90도는 빛의 비율과 표면법선의 차를 나타내며 그레이딩각이 되면 점점 밝기가 증가합니다.


이 부분을 이해하기 쉽도록 예를 들어 각도가 실제로 90도가 되면 빛이 이렇게 표면에 닿지않고 엇갈릴뿐입니다. 이것은 즉 빛의 100%가 반사된다라는 것이므로, 이렇게 생각해보면 알기 쉬울 것입니다.


여기서 주목할 점은 메탈은 윗부분과 중앙부분에 있고, 유전체는 아래쪽에 있다라는 것입니다.

메탈수치는 그다지 변하지 않고 있는데, 유전체와 비교하면 그레이딩각이 될때까지 밝기가 거의 변하지 않습니다.


이것은 즉 각도가 다르면 Reflection도 다르다 라는 것입니다.

그리고 유전체와 메탈의 경우에는 여러가지 배리에이션이 발생하고 있으므로


이렇게 옻칠을한 물체를 보면 각도가 그레이딩각에 가까울수록 표면이 반사적으로 된다라는것을 알 수 있습니다.


이것은 유전체와 메탈의 커다란 차이점 중 하나입니다. 유전체는 대면각에서 반사성을 비교하면 좀 더 반사적으로 됩니다.

즉, 그레이딩 각에서는 좀더 반사적이 된다는 것인데, 그에 반해 메탈의 경우는 그레이딩각에서 보다 반사적으로 되지만 기본적인 반사성이 훨씬 높습니다.


스페큘러라는 건 매우 중요한것이기에 표면의 반사성을 정의하는 것이지만, 약간 주의가 필요합니다.

메탈이나 메탈성이라고 하는 것은 표면의 바이너리값이지요? 메탈인지 메탈이 아닌지에 대한 2개의 가능성밖에 없으니까요.

일반적으로 일정 물질을 위한 스페큘러도 변하지 않을 것입니다.

또 이 그래프를 보면 이쪽의 (왼쪽)파란 테두리는 물질의 반사성을 표현하고 있으므로, 예를들어 이 주변이(0.65~0.9) 크롬이라고 한다면 0.95정도가 크롬의 반사성이 될 것입니다.

애초에 메탈은 유전체보다 반사성이 매우 높은데, 여기서 에너지 보존의 법칙이 중요하다. 왜냐하면 오브젝트의 반사성이 높을수록 Diffuse의 기여도가 적어지게 된다. 예를들어 반사성이 높은 메탈의 경우 Diffuse의 기여도가 매우 적어지게 된다. 대부분의 메탈은 반사성이 매우 높기에 Diffuse가 거의 필요없어지게 된다.


이것은 즉, 현재에서는 물리적인 정확함을 유지하기 위해서는, 대부분의 메탈에 Diffuse맵의 필요없어져 생각할 여유도 생기고, 성능을 최적화할 기회도 늘어나게 됩니다. 예를들어 Reflection의 텍스쳐, 스펙큘러의 텍스처로 Diffuse나 Albedo 텍스처를 사용하는 엔진도 있지만


메탈의 경우에는 반대가 된다, 하지만 유전체의 경우에는 어떻게 될까요?

위의 그림을 보면 메탈의 컬러 하이라이트가 있는것을 알수 있습니다.

이 Reflection은 다른 파장을 반사하고 있으므로 색조가 있지만, 그에 반해 유전체의 Reflection에는 보통의 빛, 또는 현실적인 색조의 빛, 현실적 밝기의 빛등이 있습니다. 이것은 유전체에는 풀컬러의 스펙큘러맵은 필요없다는 것을 의미합니다. 프로토값의 숫자만 있으면 충분합니다.

그에 반해 메탈은 색이 있으므로 스펙큘러맵이 필요합니다. 이로인해 스펙큘러 텍스처를 만들때 딜레마에 빠지게 됩니다. 왜냐하면 메탈에는 유색(RGB)의 스펙큘러 텍스처가 필요한데, 대개의 경우에는 Diffuse나 Albedo는 필요없지만 그에 반해 유전체의 스펙큘러 맵에는 1가지 색밖에 필요없습니다. 1가지 색이라기보다 1가지 채널이죠.

Diffuse에 의존할 필요는 있지만요, 또 한가지 재밌는 점은, 이들의 대부분의 수치는 현실 세계에서 측정할 수 있습니다.

그리고 색을 특정할수도 있으므로 메탈에도 매우 도움이 됩니다.

+ Recent posts