Company
교육 철학

Basics of physically-based rendering By SIGGRAPH Asia 2012 (작성중)

1. 서론(Introduction)

이 문서는 2012년 SIGGRAPH Asia를 위해 준비된 물리 기반 렌더링(Physically-Based Rendering, PBR)의 기초 개념에 관한 노트입니다.
첫 번째 저자가 컴퓨터 그래픽스를 시작했을 당시에는 지금처럼 인터넷이 발달하지 않았습니다. 엔지니어링은 소비 지출이 아니라 냉전 자금으로 지원되었고, 레이 트레이싱을 실행하는 데 며칠 혹은 몇 주가 걸리곤 했습니다. SIGGRAPH 강의 노트 또한 지금과는 달랐습니다. 당시 강의 노트는 렌더링과 관련된 실질적인 정보를 이해할 수 있는 거의 유일한 자료였습니다.
오늘날에는 훌륭한 책들이 많아졌고(그중 상당수는 SIGGRAPH 강의 노트에서 발전한 것들), 수백 개의 알찬 웹페이지와 수천 개의 질 낮은 웹페이지들이 존재합니다. 문제는 정보가 부족한 것이 아니라, 질적으로 들쭉날쭉한 정보가 너무 많다는 것입니다. 따라서 이 강의 노트는 또 하나의 세부적인 논의 자료가 아니라, 방대한 문헌 속에서 길잡이 역할을 하도록 작성되었습니다.
우선, 거의 모든 렌더링 연구자들이 이해하고 있지만 드물게 논의되는 중요한 문제가 하나 있습니다. 물리 기반 렌더링은 크게 세 가지 전혀 다른 목표 중 하나를 지향하며, 목표에 따라 접근 방식도 매우 달라집니다:
Predictive Rendering
실제로 장면을 제작했을 때의 결과와 반드시 일치해야 합니다. 주로 설계 및 시뮬레이션 애플리케이션에서 사용됩니다.
Plausible Rendering
결과가 충분히 그럴듯하게 보여야 하지만, 실제와 다를 수도 있습니다. 엔터테인먼트나 시각화 분야에서 주로 사용됩니다.
Visually Rich Rendering
현실의 시각적 풍부함을 필요로 하지만, 강하게 스타일화될 수도 있습니다.
이 노트에서는 주로 Predictive 렌더링에 집중합니다. 여기서 알고리즘보다는 주로 물리학과 수학을 의미합니다.
Predictive 렌더링이 다른 두 가지보다 더 중요하거나 우월한 것은 아닙니다. 하지만 마치 화가가 규칙을 깨기 전에 먼저 사실적인 드로잉을 배우는 것처럼, Predictive 접근을 배우는 것은 기초를 단단히 다지는 과정이며 이후 스타일화된 기법을 이해하는 데에도 도움이 됩니다.

2. Reading

시중에는 렌더링 관련 서적이 많이 있습니다. 렌더링을 직업으로 삼을 생각이 있다면 모두 구입하세요. 가장 최근의 책인 Physically Based Rendering 책으로 시작하면 좋습니다. 해당 책은 무료로 풀려 있으니 종이책이 필요하면 구매하여도 좋지만 한국에서는 3판까지밖에 번역이 되어 있지 않습니다. 4판부터 새롭게 추가된 내용(GPU 연산 활용)이 많습니다. 될 수 있다면 영어판으로 보는걸 추천합니다.
또한 Google Scholar와 같은 사이트 덕분에 예전보다 훨씬 쉬워졌습니다. Scholar의 핵심 기능은 논문을 참조한 모든 논문을 보여준다는 것입니다. 따라서 문헌 조사를 통해 시간 순으로 쉽게 진행할 수 있습니다. 또한 인용 횟수를 제공하여 모든 사람이 무엇을 읽고 있는지에 대한 좋은 아이디어를 얻을 수 있습니다. 다른 사람이 읽지 않는 좋은 논문을 읽음으로써 지식에서 우위를 점할 수 있지만, 문화적으로 이해하고 "큰" 논문을 읽는 것이 좋습니다.

3. Light

그래픽에서 우리는 일반적으로 카메라를 매우 간단하게 모델링합니다. 대부분의 응용 프로그램은 특정 사진이 사실적으로 보이는지 보다 "비사실적 이더라도 이쁘게 보이는지"에 더 중점을 두기 때문입니다. 이것이 우리가 찾는 이상적인 카메라 입니다.
아이러니하게도 카메라 불완벽함은 이미지를 오히려 비현실적으로 보이게 할 수 있습니다. 우리는 실제 카메라의 불완벽함 이미지에 익숙하기 때문입니다. 카메라는 일반적으로 렌즈 시스템과 센서로 구성됩니다. 센서는 픽셀이라 불리는 센서 요소들로 구성되어 있습니다. 각 픽셀은 빛의 방향과 파장에 따라 다르게 반응합니다.
이는 실시간 렌더링의 핵심 문제, 즉 '빛을 어떻게 개념화하고 측정할 것인가'라는 질문으로 귀결됩니다.
이 문제를 다루는 정석적인 접근 방식은 '복사측정법(Radiometry)'입니다. 복사측정법은 빛을 길이(m)나 질량(kg)처럼 정량적으로 다루는 물리적 체계입니다. 하지만 개발자들은 이 복사측정법을 일종의 '필요악'으로 간주합니다.
우리는 가능하면 이 복잡한 물리 이론을 피하려고 하며, 어쩔 수 없이 사용하게 될 때조차 그 세부 원리를 완벽하게 이해하지는 못하는 경우가 많습니다.
반면, 우리가 훨씬 더 직관적으로 받아들이고 잘 이해하는 개념은 '광자(photon)', 혹은 '광자 유사 입자'라 불리는 것입니다. 여기서 분명히 해야 할 점은, 그래픽스 전문가들이 '광자'라고 말할 때, 그것이 양자역학의 난해한 파동-입자 묶음을 의미하는 경우는 거의 없다는 것입니다.
여기서 말하는 '광자'란, 특정 파장(또S는 파장대)에서 일정량의 에너지를 운반하는 '아주 작은 구슬(ball-bearing)'과 같은 에너지 묶음(packet)을 의미합니다. 이는 물리학에서 때때로 '빛의 입자 모델'이라고 부르는 개념과 유사합니다.
이 글의 나머지 부분에서는 그래픽스 모델의 '광자'가 다음과 같은 속성을 갖는다고 가정하겠습니다.
photon={energy, wavelength, polarization, time, position, direction}\text{photon} = \{\text{energy, wavelength, polarization, time, position, direction}\}
단일한 파장
일정한 양의 에너지
(경우에 따라) 선형 편광(linear polarization)
특정 시점의 위치와 진행 방향
다시 한번 강조하지만, 이것은 실제 광자를 극도로 단순화한 모델입니다.
심지어 이 모델의 '광자' 하나는 (시뮬레이션 효율을 위해) 수많은 실제 광자 묶음을 대표할 수 있으므로, 물리적인 실제 광자 하나보다 훨씬 더 큰 에너지를 운반하는 것으로 설정될 수 있습니다.
따라서 '광자'라고 부르기보다는 '입자(particle)'나 '에너지 구슬'이라고 부르는 것이 더 정확할 것입니다. 지금 다루는 이 개념이 물리학에서 말하는 본래의 광자(photon)와는 완전히 다른, 그래픽스 계산을 위한 편의상의 모델임을 반드시 기억해야 합니다.

3. Radiance

잎서위 그림을 보고 각 용어의 의미를 먼저 파악하겠습니다. Flux와 Irradiance, Radiance의 개념을 잘 설명해줍니다. Flux는 해당 면으로 들어오는 전자기 복사량, Irradiance는 모든 방향에서 단위 면적으로 입사하는 복사량, radiance는 한 지점에서 특정 방향으로의 투영면적당, 단위 입체각당 복사량 이라고 정리할 수 있습니다. Flux (선속)이라 함은 공간에서의 시간에 따른 물리적 값의 흐름을 뜻합니다. (위키피디아) flux 역시 에너지 개념으로 생각하면 일정 시간, 공간을 통과하는 에너지의 흐름 정도로 이해하고 넘어갑시다.
이제 **복사측정법(Radiometry)**에 대해 이야기해 보겠습니다. 이 개념은 기본적으로, 무한히 작은 에너지를 가진 수많은 광자(Photon)들을 하나로 모아, 거대하고 연속적인 함수인 것처럼 다루는 접근 방식입니다.
이때 모든 공간, 방향, 시간, 파장에 걸쳐 빛의 밀도 필드를 정의한 것을 **'복사 휘도(Radiance)'**라고 부릅니다. 더 정확한 기술 용어는 '스펙트럼 복사 휘도(Spectral Radiance)'지만, 실제로는 '스펙트럼'이라는 말을 거의 붙이지 않고 그냥 '복사 휘도'라고 통칭합니다.
모든 지점에서의 복사 휘도를 정의하는 이 함수는 종종 **'플레놉틱 함수(Plenoptic Function)'**라고도 불립니다. (때로는 여기에 '선형 편광'이나 '위상'을 포함한 '완전 편광(fully polarized light)'이 차원으로 추가되기도 합니다.)
솔직히 말해, 문헌에는 (우리 저자들이 작성한 것을 포함해서) 복사 휘도에 대한 수많은 논의가 있지만, 대부분이 꽤 혼란스럽습니다.
대신, 우리는 복사 휘도의 특성 중 실용적으로 유용한 네 가지 핵심 사항을 강조하고자 합니다.
1.
복사 휘도는 (매질이 없는) 빈 공간의 선을 따라 이동하는 동안 그 값이 일정하게 유지됩니다.
2.
복사 휘도는 우리가 특정 방향에서 인지하는 **'색상'과 '밝기'**라는 직관적인 개념과 매우 유사합니다.
3.
카메라나 눈과 같은 센서는 복사 휘도의 특정 지점 값이 아닌, 일정 영역과 각도에 대한 **모멘트(적분값)**를 측정합니다.
4.
다른 모든 복사측정량(예: 복사속, 조도)은 이 복사 휘도로부터 파생(적분)되어 계산될 수 있습니다.
1번과 2번 항목은 서로 관련이 있습니다. 광자는 이동하면서 에너지를 잃지 않으므로, 복사 휘도에는 '거리의 역제곱 법칙(inverse square rule)'이 적용되지 않습니다. 이 특성은 렌더링 코드를 작성할 때 복사 휘도를 다루기 매우 편리하게 만듭니다.
3번과 4번 항목도 마찬가지로 관련이 깊습니다. 대부분의 복사측정량 자체가 복사 휘도의 모멘트(특정 방식으로 적분한 값)이기 때문입니다.
복사 휘도를 공간을 정의하는 함수로 표현하고 싶다면, 아마도 다음과 같은 형태가 될 것입니다.
Radiance=L(position, direction, wavelength, time)\text{Radiance} = L(\text{position, direction, wavelength, time})
여기서 기호 LL은 스펙트럼 복사 휘도를 나타냅니다. 이 표기법(LL)은 여러 분야에서 반쯤 표준처럼 쓰이는데, 그 이유는 복사 휘도(Radiance)가 인간의 시각을 고려한 측광 휘도(Photometric Luminance)와 사촌 관계에 있으며, 역사적으로 LL이 보편적인 선택지가 되었기 때문입니다.
이 함수에 대해 혼란스러운 점은, 이 함수가 반사(reflection)나 굴절(refraction)이 일어나는 '표면(surface)'을 제외한 모든 빈 공간에서는 매우 잘 정의된다는 것입니다.
이러한 이유로, 우리는 '표면'에서 일어나는 현상을 다룰 때 두 가지 종류의 복사 휘도를 구분합니다.
입사 복사 휘도 (Incoming Radiance): '필드 복사 휘도(Field Radiance)'라고도 합니다. 만약 어떤 표면 위에 작은 곤충이 앉아있다고 상상한다면, 그 곤충이 주변 환경(Environment Map처럼)으로부터 '표면으로 들어오는' 빛을 보는 것입니다.
출사 복사 휘도 (Outgoing Radiance): '표면 복사 휘도(Surface Radiance)'라고도 합니다. 관찰자가 그 표면을 바라볼 때, 표면에서 반사되거나 스스로 방출되어 '표면을 떠나 나가는' 빛을 보는 것입니다.

References

Basics of physically-based rendering.pdf
210.7 KB
November 2012
Conference: SIGGRAPH Asia 2012 Courses