NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

「Archieve」물리 기반 쉐이더 Slideshare 2개 메모

Archieved専用の記事です。韓国語で書かれているため、日本語への翻訳は時間があるときやらせてもらいたいと思います。

1. 물리 기반 쉐이더의 이해

https://www.slideshare.net/tartist/ss-56389186

이 발표는 tri-ace, Lazarov, Sebastein Lagarde 의 강연과 데모를 바탕으로 함.

PBS (Physical Based Shader) 의 정의

기존의 쉐이더 (N-PBS) 의 경우에는 물리적으로 부정확한 부분이 많았음. 게임 환경 때문에 어두운 맵을 쓴다던가, Specular 가 강하다던지... 혹은 Fresnel 효과가 잘못 들어간다던가, 리플렉션이 안되던가. 조명이 어두운데도 밝은 쉐이더가 있다던가..

하지만 그렇다고 하더라도 예전 쉐이더들이 물리적인 현상을 완전히 사용하지 않았다고 하는게 아니라, 사용했다고 보는것이 맞음.

기존 쉐이더의 예시들

  • 예를 들면 Phong Shading 이 있음. 이 기법은 Flat shading 이 아니라 화소 단위로 (Primitive) 오브젝트의 색을 결정하기 때문에 질감 등을 정교하게 반영할 수 있음. 다만 Phong Shading은 원형 물체에서는 괜찮지만, 평평한 면에서는 실제 스펙큘러의 표현이 힘듦. (언제나 원형으로 맺히는 Specular)
  • Lambert Diffuse Shading 은 기존의 Phong 이 사물에게 특화된 쉐이더였다고 하면, 이것은 사람과 같은 유기물에게 특화된 쉐이딩. 빛 벡터가 L 이며 노멀 벡터가 N 일 때 다음과 같이 나타낼 수 있다. 이는 하프라이프 (1998) 에서 처음 구현 됨.

$$\text{lambert term,} \ f = max(0, N \cdot L)$$

Half Lambert는 물리적으로 올바르지는 않지만, 일반적으로 피부와 같이 약간 투과되는 느낌의 질감을 표현할 때, 꽤 효과가 좋습니다. 또 간단하게 셰이딩을 할 때에는 은근히 간접광을 받는 듯한 느낌도 있어서, 비교적 저렴하게 꽤 화사한 느낌을 만들어 낼 수 있습니다. 하지만, 결과적으로 너무 밝은 결과가 나오기 때문에, 사실적인 느낌의 게임 렌더링에서는 잘 맞습니다.

출처: https://gamedevforever.com/150 [게임 개발 포에버]

$$ \text{lambert term, } \ f = \frac{max(0, N \cdot L)}{2} + 0.5 $$

File:Alyx lambert half lambert.jpg

그런데 이 Half Lambert 모델에서는 명이 너무 넓고, 암이 너무 좁다는 문제점이 존재함. 즉 음영의 대비가 없어진다. 따라서 최종적으로 계수를 승산해서 최종 팩터를 결정하는 것이 좋다.

$$ \text{lambert term, } f' = pow(f, n) \ \text{commonly, n is 4} $$

아무튼 이런 식으로 추가적인 수식을 적지 않으면 사실적으로 표현이 되지 않음. 이 기법은 어디까지나 가시적인 관측 결과에 따른 속임수 기법이기 때문에, 이를 원초적으로 해결하고자 PBR 이 등장함.

PBS (Physical Based Shader) 의 기본 이론

위 기존의 Local illumination 환경에서 생략된 물리 현상들을 좀 더 많이 구현함. 기초적으로 다음과 같은 이론이 적용되었다고 한다.

  1. Oren-Nayar Model
  2. Blinn-Phong Specular
  3. 미세 표면
  4. Fresnel 효과
  5. Image Based Light
  6. 에너지 보존 법칙

Oren-Nayar Model

Lambert Diffuse Model 은 모든 방향에서 같은 복사량 L (아마도) 을 취한다는 전제를 가정으로 하고 있으며, 따라서 플라스틱과 같은 모델에 적합하다.

그런데 PBR 의 한 주축을 담당하는 Oren-Nayar ModelMicrofacet 이라는 미분 면적에서 서로 다른 각도를 가진 Torrance 와 Sparrow 로 구성되는 거친 표면의 개념을 사용해서 공식을 유도한다. 따라서 일반적인 PBR 에서는 모든 물체는 거칠다. 는 전제를 할 수 있을 것 같다. => Microfacet BRDF

img

http://kevin-george-2n3x.squarespace.com/blog/2014/5/25/the-brdf-and-microfacet-theory

Microfacet theory 는 PBR (PBS) 의 근간이 되는 이론이다. 이 이론에서의 대전제는, 물체 표면은 매우 작지만, 완전 반사 (난반사가 일어나지 않는) 편평한 표면의 집합으로 구성된다는 것이 있다.

...A physically based specular BRDF is based on micro-facet theory, which describe a surface is composed of many micro-facets and each micro-facet will only reflect light in a single direction according to their normal(m):

http://simonstechblog.blogspot.com/2011/12/microfacet-brdf.html

물론 예전의 쉐이더 역시 완전 반사가 일어난다는 전제하에 쉐이더 코드가 실장됬음.

f:id:neuliliilli:20190605143224p:plain f:id:neuliliilli:20190605143235p:plain

PBR 의 대표적인 요소인 Roughness[0, 1] 으로 나눌 수 있는데, 이 거칠기가 클 수록 microfacet 의 밀도가 높다는 것을 나타내며, 이 말은 곧 각각의 microfacet 이 완전반사를 하더라도 macro 한 영역에서 보면 (거시적인 영역) 난반사가 일어나는 것 처럼 보임을 말할 수 있다. 즉, 거칠기가 커지면 하이라이트가 넓어지고 (대신에 흐리멍텅해지고) 최종적으로는 플라스틱과 같은 느낌이 될 수 있지만 거칠기가 작으면 각각의 부위에 정반사 비율이 커지므로 금속 재질과 같은 느낌을 낼 수 있을 것이다...

Blinn-Phong Specular

반사가 존재하는 모든 표면은 Specular 가 존재한다. (흡수하는 표면은 이야기가 다름) 간단한 예시로 카메라에 반사광 (난반사)을 줄여주는 편광필터를 착용해서 사진을 찍으면, 좀 더 색이 풍부하게 보인다고 한다. 또한 모든 표면은 Fresnel 이 존재한다. 이를 알기 위해서는 스넬의 법칙을 알아둘 필요가 있다... 스넬의 법칙은 두 매질이 마주하는 경계면에서 입사각이 어느 임계각도를 넘을 때, 전반사 (굴절이 일어나지 않고 완전히 반사가 일어남) 가 일어나는 현상이다.

https://en.wikipedia.org/wiki/Fresnel_equations

Fresnel's Equation 는 간단하게 말하면 표면의 반사량은 관찰자의 시점과 표면이 이루는 각도에 영향을 받아 생긴다는 법칙 혹은 방정식이다. 표면을 바라보는 각도가 물체의 전반사가 일어나는 고유 각도 (임계각) 에 이르거나 이보다 더 높으면 전반사가 일어나는 Fresnel Effect 가 일어난다.

Image Based Lighting

f:id:neuliliilli:20190605143353p:plain

라이팅 표현 시, 환경 큐브맵 혹은 라이팅을 표현할 맵을 적용해서 반사와 앰비언트 라이트를 표현한다.

그 외...

f:id:neuliliilli:20190605143404p:plain f:id:neuliliilli:20190605143411p:plain

또한 이 슬라이드에서는 UDK 에서 어떻게 PBR 을 적용하는가를 스크린샷으로 보여준다.

결론

장점

적은 텍스쳐 리소스로 거의 모든 재질을 표현할 수 있고, 아티스트가 조절할 부분이 상당량 적어진다. 왜냐면 눈속임을 위한 각종 수치의 조정이 간략화되고, 일종의 확립화된 공식이 존재하기 때문에. 또한 다양한 조명 환경에서도 안정적인 결과물을 얻을 수 있다.

단점

현실의 물리적인 현상을 기반으로 한 쉐이더 기법이므로 리얼한 장면에만 효과적으로 적용할 수 있음.

2. Physical Based Rendering 기초! 기초!

https://www.slideshare.net/Hybrid0/physically-based-rendering-51309337

UE4 의 PBR 은 비실시간적이었던 디즈니의 PBR (Physical Based Rendering) 을 간략화해서 실시간으로 계산을 하게 했다. 이 슬라이드에서는 IBL (Image Based Lighting) 만 다룸. 디즈니의 BRDF 의 원칙은, 물리적으로 올바르기보다는 아티스트 친화적이어야 하고, 물리적보다는 직관적인 파라미터를 지향한다는 것이 있다. 또한 거의 모든 값을 [0, 1] 범위로 조절하고 적은 파라미터를 제공함과 동시에 해당 파라미터들은 서로 견고해야 함.

다만 언리얼 4 의 PBR 은 리얼타임으로 렌더링이 되어야 하므로 근사를 사용하고 있음. 하지만 디즈니의 PBR 와 거의 유사함. 다만 PR 와 NPR (Non-photo Realistic) 이 구분됨.