물리 기반 렌더링
1. 개요
'''물리 기반 렌더링'''(Physically Based Rendering, '''PBR''') 또는 '''물리 기반 셰이딩'''(Physically Based Shading, '''PBS''')은 표면의 재질에 따른 빛의 반사가 물리적으로 어떻게 이루어지는지를 시뮬레이션해서 그래픽을 표현하는 기법이다.
2. 특징
PBR 이전의 렌더링 방식에 대해 정해진 명칭이 있지는 않으나 PBR 등장 이후 기존의 방식을 업계에서는 주로 '''레거시 렌더링'''(Legacy Rendering)이라고 구분하여 부른다.
'''난반사'''(Diffuse) 텍스처와 '''정반사'''(Specular) 텍스처를 활용한 기존의 레거시 렌더링도 빛이 물리적으로 반사되는 현상에 근거한 기법이지만 실제 빛의 물리적 현상 그대로를 시뮬레이션 한 게 아닌 많은 부분을 생략하고 간소화하여 만들어진 기법이다. 쉽게 말해서 현실 세계의 빛이 물리적으로 일어나는 현상을 그대로 시뮬레이션 한 게 아닌 관찰자(사람의 눈)의 입장에서 추상적으로 해석/분리하여 구현한 것이다.
PBR이라는 이름으로 등장한 기법 역시 실제 빛의 현상을 그대로 시뮬레이션 한 건 절대 아니다. 다만, 표면의 재질에 따른 빛의 현상을 시뮬레이션 함으로서 기존의 레거시 렌더링에 비해 그나마 빛의 물리적 현상을 조금 더 과학적인 관점으로 분석한 개념을 기반으로 한 텍스처의 사용과 셰이딩 조합을 사용한다는 의미에서 PBR이라는 이름이 붙은 것일 뿐이다.
PBR을 쓰면 그래픽 아티스트들은 기존의 텍스처 머티리얼 제작 방식과는 다른 PBR 개념의 이해가 필요한데, 이에 적응되면 기존보다 비교적 간단한 방법으로 사실적인 재질을 만들어 낼 수 있다.
물리 기반 렌더링은 레거시 렌더링과 비교해서 재질을 구현하는 개념이 달라진 것일 뿐, 고난이도의 제작 기술이 필요하다거나 새로운 엔진이 필요한 것도 아니고 특별히 고성능의 하드웨어 사양을 요구하지도 않는다. 단지, 이전까지 레거시 렌더링에 익숙해져 있던 수 많은 프로그래머들과 아티스트들에게 물리 기반 렌더링이 낯선 개념이기에 이에 대한 최적화 노하우가 부족한 경향이 있을 뿐이다.
기존의 엔진에 물리 기반 렌더링을 지원을 추가하는 일은 셰이더 효과 하나 추가하는 정도로 간단히 이루어진다. 언리얼 엔진, 유니티 엔진, 크라이엔진, 프로스트바이트 엔진 등의 상용 게임 엔진들의 최신 버전에서는 물리 기반 렌더링을 지원하고 있으며 최신 게임들의 그래픽 역시 물리 기반 렌더링을 활용해서 개발되는 추세다. 물리 기반 렌더링 방식이 기존의 레거시 렌더링으로 작업하던 그래픽 디자이너들에게는 생소하게 낯선 개념일 뿐 익숙해지면 오히려 레거시 렌더링보다 간결하며 그래픽 리소스를 줄이면서도 레거시 렌더링보다 사실적인 그래픽 구현이 가능하고 최적화에도 더 용이한 편이다.
2.1. 레거시 렌더링과의 비교
기존의 레거시 렌더링과 PBR을 간단히 비교해보면 다음과 같다.
'''1. 빛은 재질의 표면에 흡수되어 해당 표면이 가진 색의 파장만을 다시 반사 시키는 데 이것을 난반사광 (Diffuse Lighting)이라고 한다.'''
- 레거시 렌더링은 추상적인 관점으로 난반사광을 별도로 분리해서 구현하는 데 눈에 보이는 이미지를 그대로[1] 텍스처로 사용하며 일반적으로 이것을 난반사(Diffuse) 텍스처라고 부른다.
- PBR에서는 빛의 물리적인 현상을 조금 더 과학적 관점으로 분석해서 재질이 반사하는 순수한 색(Color)의 파장만을 고려한 기본 색(Base Color) 텍스처를 제작해서 사용한다. 레거시 렌더링의 난반사(Diffuse) 텍스처는 표면의 금속성과 거칠기의 정도가포함되어 있으나 PBR의 기본 색 텍스처는 말 그대로 순수한 색에 대한 정보만 가지고 있어야 한다.
- 레거시 렌더링에서는 추상적인 관점으로 정반사광을 별도로 분리해서 구현하는데 저렴한 방법으로는 회색조(Grayscale)의 환경 맵(Environment Map)을 이용해서 유사 정반사광을 구현는 방법이 있고, 고급스러운 방법으로는 마스크 맵(Mask Map)을 이용해서 정반사(Specular) 텍스처를 제작하고 마스크 맵에 픽셀 단위 라이팅을 적용해서 정반사 현상을 구현한다. 또는 정반사광을 구현하기 위한 텍스처를 별도로 사용하지 않고 광원의 위치와 표면의 시차에 따라 광원이 반사되는 수치를 입력하는 방법으로 구현하기도 한다.
- PBR에서는 빛의 물리적인 현상을 조금 더 과학적 관점으로 분석해서 재질이 금속성(Metallic)을 가질수록 빛 자체를 반사하게 된다는 현상에 입각하여 재질이 금속성 값이 어느 정도인지 수치로 입력하는 방법을 사용한다.
- 레거시 렌더링에서는 표면의 거칠기와는 전혀 무관하게 아티스트의 임의에 따라(크롬 재질 등 아티스트가 반사재질로 만들고 싶은 부분) 해당 표면의 전반사성을 적용/비적용으로 구분한다. 주변 환경의 반사 구현은 저렴한 방법으로는 주변의 이미지를 실시간 생성(또는 구역별로 미리 만들어진)된 큐브 맵(Cube Map)을 사용해서 마치 주변이 반사되는 것처럼 눈속임을 하는 방법이 이용되고, 고급스러운 방법으로는 반사될 장면을 한번 더 렌더링해서 실시간 반사를 구현하는 방법을 이용한다.
- PBR에서도 큐브 맵이나 실시간 반사를 사용하는 것은 동일하나 표면의 거칠기 정도에 따라 해당 표면이 전반사성이 반비례되는 값을 조정하는 방법을 사용한다.
이 외에도 '''발광'''(Emissive), '''불투명도'''(Opacity), '''표면하산란'''(Subsurface Scattering), '''굴절'''(Refraction), '''왜곡'''(Distortion), '''알베도'''(Albedo), '''프레넬'''(Fresnel) 같은 기법도 추가로 들어갈 수 있으나 이것들은 다 기존의 레거시 렌더링 및 PBR에 모두 적용 가능한 것들이며 단지 부가적인 효과를 주는 요소들일 뿐이다.
표준 PBR 방법 외에도 여러가지 변형된 PBR 기법들이 사용되고 있으며, 꼭 물리적으로 올바른 게 아니더라도 아티스트의 편의성을 더 고려하거나 현실과는 다른 독특한 렌더링을 위한 변종 PBR 기법들이 계속해서 개발되고 있다.
2.2. 노멀 매핑과의 관계
물리 기반 렌더링이 노멀 매핑보다 발전된 기법이라고 잘못 알려진 경우가 있으나, 노멀 매핑과 물리 기반 렌더링은 전혀 다른 '''별개의 분야'''다.
노멀매핑은 노멀맵 및 범프맵 텍스처와 픽셀 단위 라이팅을 이용해 '''하이폴리곤 효과를 로우폴리곤에서 볼 수 있도록 한 기법'''이며, 물리 기반 렌더링은 난반사와 정반사를 기반으로 한 레거시 렌더링에서 사용된 '''표면의 재질감을 텍스쳐 방식에서 알고리즘 방식으로 대체하는 기술'''이다.
노멀매핑은 '''하이폴리곤의 음영을 로우폴리곤에 입히기 위한 기술'''이다. 이는 단지 로우폴리곤으로 만들어진 저퀄리티의 표면을 하이폴리곤과 동일한 고퀄리티의 표면과 같이 라이팅이 반응하게 만들어 줌으로서 세세한 디테일을 살려주는 역할일 뿐, '''레거시 렌더링에서 물리 기반 렌더링으로 전환되는 재질 셰이딩의 대체와는 전혀 무관'''하다.
노멀 매핑 외에도 하이트맵을 이용해 이미지를 왜곡해서 시각에 따라 텍스처에 입체감을 주는 '''시차 매핑'''(Parallax Mapping)이나 '''시차 가려짐 매핑'''(Parallax Occlusion Mapping) 역시 '''레거시 렌더링 기법이 물리 기반 렌더링으로 대체되는 것과는 전혀 관계가 없는 별개의 기술'''이다.
노멀 매핑, 시차 매핑, 시차 가려짐 매핑 등은 물리 기반 렌더링과 동시에 사용 가능하며, 최신 게임들에서도 '''당연히 둘 다 동시에 사용되고 있다.'''
2.3. 레이 트레이싱과의 관계
노멀매핑과 물리 기반 렌더링의 관계처럼 물리 기반 렌더링보다 더 발전된 개념이 레이 트레이싱이라고 잘못 알려진 경우도 있다.
레이 트레이싱은 단어의 뜻 그대로 광선을 추적하는 기법이며 광원에서 뻗어나온 빛이 표면에 닿는대로 여러번 반사해서 글로벌 일루미네이션[2] 을 비롯한 다양한 효과를 만들 수 있다. 레이 트레이싱을 사용하지 않는 현대의 실시간 그래픽에서는 별도의 계산으로 그림자를 만들어주지만 레이트레이싱을 사용한다면 빛이 닿지 않는 부분이 곧 그림자가 되므로 별도의 계산을 통해 그림자를 만들어 줄 필요가 없다. 그 외에도 현대 실시간 그래픽에서 표현하는 여러가지 효과들을 조금 더 실제 빛의 반사효과와 비슷한 방식으로 구현도 가능하며 레이 트레이싱을 통해 여러가지 효과를 만드는 것을 패스 트레이싱(Path Tracing)이라고 부른다.
하지만 위에서 언급된 노멀매핑과의 관계처럼 '''머티리얼이 레거시 렌더링에서 물리 기반 렌더링으로 전환되는 것과는 전혀 무관한 별개의 분야'''다. 레스터라이저(레이 트레이싱이 아닌 기존의 라이팅)에서 레이 트레이싱으로 전환되는 것은 '''라이팅의 동작 기법'''에 관한 것이고, 레거시 렌더링에서 물리 기반 렌더링으로 전환되는 것은 '''라이팅에 반응하는 표면의 재질을 결정하는 기법'''이다. 즉, '''"PBR보다 발전된 방식이 레이 트레이싱이다."라는 말은 완전히 틀린 말'''이다. 물론 성능이 무한대라면 광선 추적만으로 모든 재질을 표현할 수도 있다. 그럴경우 텍스처를 기반으로 재질을 만들어내는 현대의 렌더링 기법이 완전히 사라지고 지오메트리를 매우 작게(모니터의 픽셀보다 훨씬 더 작게) 쪼개거나, 또는 복셀을 초고밀도(이 역시 모니터의 픽셀보다 훨씬 더 작게)로 만들거나, 아니면 전혀 다른 방식으로 예를 들어 원자 단위 등으로 3D 그래픽 구현한 다음 그 모니터의 픽셀보다 작은 각각의 표면(또는 원자 단위 등)마다 빛을 어떤 각도로, 어떤 파장을, 어떤 성질의 얼마나 반사할지의 정보를 모두 담고 있어야 한다. 하지만 이것은 애초에 말도 안되는 발상이기 때문에 언급할 가치도 없다.
3. 예시
다음의 그림들은 '''언리얼 엔진 4'''에서 물리 기반 렌더링을 이용해 구현한 재질로 몇 가지의 예시를 보여준다.
[image]
'''거칠기'''(Roughness)에 반비례한 전반사의 정도가 표현되는 것으로, 왼쪽 바닥 타일은 거칠기가 전혀 없는 표면이고 오른쪽 바닥 타일은 거칠기가 매우 강한 표면이다.
[image]
구형의 물체로 '''거칠기'''(Roughness)를 표현한 것으로, 왼쪽은 거칠기 값을 0.1, 중간은 0.5, 오른쪽은 0.9로 준 것이다.
[image]
구형의 물체로 '''금속성'''(Metallic)에 따른 정반사의 정도를 표현한 것으로, 왼쪽은 금속성이 없는 표면이고 오른쪽은 완전 금속성인 표면이다.
[1] 빛을 받지 않은 상태로 만들어야 한다. 만약 실사를 찍어서 난반사 텍스처를 제작한다면 이런 방법을 사용한다.[2] 레이 트레이싱의 리다이렉트는 Global Illumination이지만 레이 트레이싱 = Global Illumination이 아니다. 레이 트레이싱은 Global Illumination을 구현할 수 있는 방법 중 하나며, 그 외에도 레이 트레이싱을 통한 여러가지 효과들을 사실적으로 구현이 가능하다.