센로그

15. Physically Based Rendering 본문

게임/게임 그래픽 프로그래밍

15. Physically Based Rendering

seeyoun 2023. 6. 10. 03:17

요번 학기의 마지막 수업~ PBR. 

lighting(8장)에서 언급했었다.

PBR은 언리얼 엔진 안에서 숨쉬듯이 나옴.

사실 PBR이 일상에 녹아들기 시작한지 10년정도 밖에 안됐음

그만큼 최신트렌드니까 공부해놓으면 좋당

 


Phsically Based Rendering (PBR) - Introduction

빛과 material의 물리적인 특성을 시뮬레이션함으로써 렌더링하는 방법.
=> 보다 정확하고 현실적인 렌더링 아웃풋을 낸다

 

Phong lighting vs PBR 

ㆍPhong은 고전적인 method. Ad-hoc(주먹 구구식의) model, 즉 적당히 잘 동작하게 만든 모델이었음.

그래서 light가 어떻게 materialinteraction하는지도 대충 만들어놨다. 반사광의 양을 ambient(주변광), diffuse(난반사), specular(정반사), .. 이런걸 일일이 추정해서 대충 잘 동작하게 만들었음. Cosine 함수를 이용해서 적당히 잘 버무렸다는

 

PBR은 material의 물리적 특성과 복잡한 light behavior들을 고려한 모델임.

  • Material: reflectance, transparency, and how light interacts with materials.
  • Light behavior: the effect of light penetrating a material, and scattering within or upon a material.

이런 것들을 다 고려했다~ 그만큼 더 정확하고 현실적인 lighting 처리를 해준다.

 

 

대략적인 오버뷰

PBR의 핵심은, 다음 두가지의 컨셉이다.

  • BRDF (Bidrictional Reflectance Distribution Function)
  • Energy Conservation (에너지 보존 법칙)

 

1. BRDF

평면이 어떻게 light를 반사시킬 것인지를 정의한 수학적인 function이다. 

Microfacet model 사용해서 lightmaterialinteraction을 표현함.

그림을 보자. Macrosurface고려한다는건 적당히 잘 튕기겟지~ 하고 저런식으로 평면에 대한 normal을 대충 설정해버리는 것. Microfacet는 평면처럼 보이더라도 좀 더 자세하게 들여다보고 울퉁불퉁한 부분을 고려한 것.

즉, 빛(광자)은 엄청 작은 입자니까… 미세한 표면까지 고려해주고자 하는거다.

 

2. Energy Conservation(에너지 보존 법칙)

현실에서는 태양으로부터 100의 빛을 받았을 때 120을 반사할 순 없다! 이런 에너지 보존 법칙 고려하겟다는

Incoming light의 에너지를 계산 후에도 총량이 보존되도록 함으로써 실제와 같은 렌더링을 하고자 하는거다.

 

 

이 두가지에 관해서 차근차근 살펴보자.

 


BRDF(Bidrictional Reflectance Distribution Function)

opaque surface에 빛이 들어왔을 때 어떻게(어느 방향으로 얼마나) 반사가 일어나는지를 정의한 function.
0~1 사이의 값. (초과하면 에너지보존 위반)

BRDF는 opaque surface(불투명한 표면)에 빛이 들어왔을 때 어떻게 반사가 일어나는지에 관한 function이다.

opaque surface라는 건, 금속도 아니고 투명하지도 않은 일반적인 surfafce를 얘기함. 플라스틱, 나무, 돌 같은거

 

BRDF는 다음 세가지 요소 간의 관계를 정의한다.

  • Incoming lignt (\(w_{i}\))
  • Outgoing light (\(w_{r}\))
  • Surface normal (\(r\))

 

 

아래 그림과 같이, BRDF 굴절 후 산란되는 빛(Diffuse), 정반사되는 빛(mirror), 노이즈를 포함한 정반사되는 빛(glossy)세가지의 합으로 생각할 수 있음! 어디서 바라보느냐에 따라 나한테 들어오는 광자량이 달라질 것.

 

이 세 타입의 photon-surface interation(광자-표면 상호작용) 종류는 다음과 같이 표현한다.

  • Uniform diffuse contribution (\(f_{r, ud}\))
    빛이 전체 hemisphere에 균일하게 분산된 경우.
    어떤 평면 위에 노말이 있을때, hemisphere(반원)을 기준으로 나가는 것
  • Specular contribution (\(f_{r, sp}\))
    Surface roughness가 너무 작은 경우.
    거울에서 일어나는 반사와 같이, 빛이 깔끔하게 정반사되어 튕겨나가는 것
    같은 방향에서 들어온 photon들은 같은 방향으로 반사될 것임.
    Fresnel reflect에 의해서 구현됨. 
  • Directional diffuse contribution (\(f_{r, dd}\))
    빛이 hemisphere에 개별적인 방향을 유지하면서 분산된 경우.
    어떤 방향에서 photon이 들어오면 표면과 상호작용하고 방향 바꾸는데, 이때 어느정도의 방향을 고려해서 나가는 것

 

 

이 세개의 term들(\(f_{r, ud}\), \(f_{r, sp}\), \(f_{r, dd}\))은 다음 두개의 메인 컴포넌트에서 비롯되었다.

  • Diffuse reflection
  • Specular reflection

 

하나하나 알아보자.

 


BRDF - Diffuse Reflection

UE4를 포함해, 일반적으로 diffuse BRDF로는 Lambertian diffuse model을 사용한다. 

이는 완벽하게 diffuse한 표면(전방향으로 균일하게 빛을 반사하는 표면.)을 가정한다.

이 표면의 luminance(밝기)는 isotropic(전방향으로 균일)하고, 빛의 intensity(세기)는 Lambert's cosine law를 따른다.

더보기

Lambert's cosine law (람베르트 코사인 법칙)

어떤 빛이 들어오는 각도에 따라 intensity가 달라진다는 것.

즉 내가 어디서 바라보고 있느냐에 따라서 나한테 들어오는 광자량이 달라지도록, 위 그림에서의 넓이광자량을 정의하겠다는

 

물리적으로 보기좋진 않지만, 대부분의 현실 표면들에 대해 잘 동작해서 이걸 사용함

 


 BRDF - Specular Reflection

Specular reflection은 microfacet based model에 의해 표현된다.

microfacet based model이란, material의 microfacet(미세면)에 대한 디테일을 고려하여 반사나 굴절을 모델링한 것.

현실에서 빛이 물체에 닿으면, 이런 미세한 굴곡이 어떻게 구성되어 있느냐에 따라 특정 방향으로 반사되는 빛의 양이 달라짐. 굴곡의 정도를 0~1사이의 값인 Roughness로 표현함. (미세면이 h 방향으로 정렬된 정도)

 

material의 표면에서 일어나는 복잡한 빛 상호작용을 시뮬레이션하는 데 도움이 됨

 

유명한 Microfacet-based model 두가지가 있다.

  • Cook-Torrance model
  • GGX model (Ground glass unknown, or Trowbridge-Reitz model)

이중에서, 우리는 GGX 모델을 이용한 specular reflection 표현을 알아볼 것이다.

 

Microfacet models

microfacet model 반사 term은 다음 3개의 컴포넌트로 이루어져 있다.

  • Normal Distribution Term (D)
    미세면 분포를 전부다 고려하기는 힘드니까, normal어느정도로분포되어 있다는 거에서 approximation하는 함수. 
  • Geometric Attenuation Term (G)
    미세면에서 그림자(self-shadowing)를 고려하는 함수. 에너지 보존 법칙을 고려하기 위함.
  • Fresnel Term (F)
    프레넬 함수(광학과 관련된 공식). 다른 각도로 봤을 때 달라지는 반사 정도

 

얘네(D, G, F 함수)를 바탕으로, 사용하는 microfacet based model에 따라 빛을 어떻게 반사할 것인지 결정함.

다음은 GGX 모델이 specular reflection을 계산하는 수식이다.

 

▶ Normal Distribution Term (D)

D는 specular highlight의 모양을 결정함. Microfacet의 normal이 \(H^{[GGX]}\)와 일치하는 확률을 나타냄.

α는 roughness term, 즉 얼마나 밝게 해줄지 결정.

 

GGX 수식의 목적은 이렇다.

half vector H를 기준으로 빛이 어떻게 들어왔는지 계산해서, 만약 엄청 붙어서 들어왔으면 바로 위쪽으로, 벌어져서 들어왔으면 좀 더 튕겨나가게 함. specular 빛의 분포를 계산함.

얼마나 밝게 들어왔는지 모델링하는 것. 거대면 내에서 우리에게 거울면 반사를 보여줄 수 있는 미세면의 양이 얼마나 되는지를 알려주는 것입니다. roughness α값이 클수록 highlight되는 영역이 넓어지면서 희미해짐!

 

▶ Geometric Attribution Term (G)

Geometric하게 튀어나와있는 친구들을 모델링. 미세면의 그림자를 나타내는 함수이다.

G를 이용해 뭔가에 의해 가려지지도 않고, 그림자가 지지도 않는 게 몇 퍼센트 정도나 있는지 계산함

 

두가지 중요 모델이 있음

  • V-Cavity 모델
  • Smith 모델

우리가 볼 것은 Smith 모델.

 

또 두개의 이펙트를 고려함

  • Shadowing effect : 어떤 facet이 light를 막으면 좀 더 어두워지는 것
  • Masking effect : 반사가 될 때 다시 돌아오는 빛을 고려하지 않는 것

이를 계산하기 위해, 확률적으로 모델링된 facet들의 방향과 전반적인 표면의 roughness를 고려한다.

 

미세면이 얼마나 그림자 져 있는지를 계산함.

 

▶ Fresnel Term (F)

얼마나 많은 light가 BRDF 평가에 기여하는지를 정의함으로써, 얼마나 많은 light가 이 surface로부터 반사될건지 묘사함. (얼마나 반사되고 얼마나 투과될 건지 결정). 이는 Fresnel 방정식을 기반으로 함.

두 개의 서로 다른 매질(ex: 공기 물)이 있을 때, 어떻게 굴절하고 어떻게 반사될 것이냐!에 관한 방정식임.

 

컴퓨터 그래픽스 분야에서 F의 일반적으로 사용되는 근사값은 Schlick's approximation 입니다. 이는 Fresnel 방정식을 단순화하고 Fresnel 반사율을 계산하는 더 계산 효율적인 방법을 제공함. (근사니까 더 빠름ㅇㅇ)

이 근사법은 모든 물질이 90도 아래에서 완벽한 반사를 나타낸다는 관찰을 기반으로 합니다. 따라서 θ에서의 프레넬 반사율을 나타내는 하나의 매개 변수 F(θ)만 사용할 수 있습니다. (θ는 L H 사이의 각도)

 

이 수식의 목적은: 

Fresnel 방정식에 의해 정의되는 반사율을 계산한다.

즉, 90도에서 들어오면 모두 반사되고, 그 이상으로 각도가 올라갈수록 덜 반사된다는 걸 수학적으로 모델링한 것

적당히 잘된다~

 


 BRDF - Combining diffuse & specular

이제 이 2가지 term (Diffuse, Specular)을 섞는다.

합치면, 그림과 같은 combined BRDF나오게 됨

 

roughness 값은 D G에 영향을 주고, metallic 값은 F에 영향을 준다~

 


◆ Energy Conservation

픽셀마다 에너지 보존 법칙을 고려하는 방식!

Thermodynamics의 첫번째 law에서부터 비롯된 원칙이다. 

Incoming light에서 100이라는 광자량이 왔으면반사를 시키든 흡수를 하든 총량은 100을 넘어서면 안된다! 라는 것

하나의 프래그먼트에 대해, 들어온 빛 = 반사 + 산란 + 흡수

 

이론상, 아무리 BRDFphysically based로 해도 에너지 손실이 있을 수밖에 없다.

Microfacets에서 다중 반사를 완벽하게 정의하지 않기 때문임.

 

PBR은 기본적으로 에너지 보존 법칙 잘 만족하고 있을 것임.

여기에 추가적인 조작을 했을 때 BRDF가 에너지 보존 법칙을 잘 지키는지 체크할 수 있는 테스트가 몇가지 있음. 

  • White furnace test : 만약 surface 주변이 모두 하얀색인 경우, surface가 에너지 보존을 잘 따르고 있다면 흰색으로 변해서 물체가 사라짐.(표준 테스트)
  • Hemisphere balance test
  • Non-negative radiance test

 


PBR Challenges

PBR 좋은 알고리즘이고 많이 쓰이고 있지만! 얘네도 잘 안되는 게 있다.

 

1. Handling complex materials

Translucent(투명한) object, fabrics(섬유), anistropic(비등방성) material 에서는 잘 안됨.

 

glass나 wax같은, 빛의 일부는 투과하고 일부는 산란하거나 반사하는 물체의 경우 잘 표현 못함.

잘 표현하려면 subsurface scattering을 모델링 해야함.(빛이 표면을 통과하여 물질과 상호작용한 후 물체를 빠져나오기 전에 산란하는 현상)

해결하려면 volumetric light transport equation써야하고, 굴절같은 것도 dynamic하게 실시간 캡쳐할 수 있도록 해야함.

 

섬유도 잘 안됨. 미세한 표면에서의 그림자, 산란, 섬유간 가려짐.. 등을 고려해야 하기 때문

 

 

메탈 빗질이나, 헤어 빗질도 잘안댐

Direction dependant property가 존재하기 때문. 즉, 빛이 어느 위치에 들어오느냐에 따라 다른 결과를 내야하기 때

특화된 모델이 필요하고, 추가적인 계산이 필요하다.

 

2. Handling homogeneous participating media

또, 안개, 연기, 구름 같은 거 깔려있으면안됨

고체 표면과 다르게, Fog셀 수 없이 많은 파티클로 이루어져 있음. 당연히 이 물방울들(파티클)에 닿으면 산란할 것임.

Fog를 잘 표현하기 위해서 volumetric rendering

 

3. Handling homogeneous participating media

또 하나의 문제, 노이즈

PBR을 빨리하기 위해서, approximation빨리했다.

연속된 애들끼리 값 차이가 만많이 나니까 자글자글한 느~

'게임 > 게임 그래픽 프로그래밍' 카테고리의 다른 글

14. Shadow Mapping  (0) 2023.06.09
13. Character Animation  (0) 2023.05.31
12. Normal Mapping and Tessellation  (0) 2023.05.31
11. Screen-space Object Manipulation  (0) 2023.05.28
10. Euler transforms and quaternions  (0) 2023.05.28
Comments