Company
교육 철학

렌더링 방정식(The Rendering Equtation)

다양한 기존 렌더링 알고리즘을 일반화하는 적분 방정식을 제시합니다. 기존에 사용하던 몬테카를로 해법을 이야기하고 Hierarchical sampling이라는 새로운 분산 감소 기법을 소개합니다. 이 기법이 다양한 몬테카를로 절차에 효율적으로 적용될 수 있음을 여러 예시로 보여줍니다. 결과적으로, 이 알고리즘을 사용하면 더 다양한 빛의 효과를 컴퓨터로 표현할 수 있게 됩니다.

1. 렌더링 방정식

우리가 제시하는 기술은 다양한 렌더링 알고리즘을 하나의 통합된 방정식으로 묶습니다. 각 알고리즘은 이 방정식을 얼마나 정확하게 근사하느냐에 따라 구분됩니다. 모든 렌더링 방법은 결국 같은 물리 현상, 즉 표면에서 빛이 어떻게 튕겨 나가는지를 시뮬레이션하려는 것이므로, 이런 통합이 가능한 것은 자연스러운 일입니다.
(The Rendering Equation 이전에는 1984년 로버트 쿡(Robert Cook)이 '분산 레이 트레이싱(Distributed Ray Tracing)을 사용 )
렌더링 방정식 자체는 새로운 개념이 아닙니다. 빛이 물체 표면에서 반사되고 전달되는 현상은 방사열 전달 분야에서 오래전부터 연구되어 왔습니다 [Siegel and Howell 1981]. 하지만 우리가 제시하는 형태는 컴퓨터 그래픽스 문제를 풀기에 적합하도록 재구성한 것으로, 이전에는 이런 형태로 정리된 적이 없습니다.
렌더링 방정식은 다음과 같습니다.
렌더링 방정식의 각 항목:
I(x,x′) (Transport Intensity)
점 x′에서 점 x로 전달되는 빛의 세기(에너지)입니다. 우리가 최종적으로 이미지의 픽셀 값으로 계산하고자 하는 대상입니다.
g(x,x′) (Geometry Term)
두 점 사이의 기하학적 관계를 나타냅니다. 두 점 사이의 가시성(Visibility)을 포함하여, 장애물에 가려지면 0이 되고, 보인다면 거리에 따른 에너지 감소 1/r21/r^2 반영합니다.
ε(x,x′) (Emittance Term)
점 x′에서 점 x로 직접 방출되는 빛의 양입니다. 물체가 스스로 빛을 내는 광원일 경우에 해당합니다.
∫_S ... dx′′ (Integral over Surfaces)
장면 내의 모든 표면 S에서 점 x′로 들어오는 모든 빛을 합산하기 위한 적분입니다.
ρ(x,x′,x′′) (Scattering Term)
점 x′′에서 온 빛이 점 x′에 부딪힌 후 점 x 방향으로 얼마나 반사(또는 산란)되는지를 나타내는 비율입니다. 표면의 재질(매끄러움, 거칠기 등)을 결정합니다.
I(x′,x′′) (Recursive Term)
다른 모든 점 x′′에서 점 x′로 들어오는 빛의 세기입니다. 이 항 때문에 방정식은 재귀적인 성격을 띠게 됩니다.
"적분 안에 내가 구하고자 하는 미지수(I)가 다시 나타나기 때문에" 재귀적인 것입니다. 적분은 그 미지수들이 서로 얽히는 '범위'를 제공하는 역할
이 방정식은 radiosity 방정식과 매우 유사합니다. 한 표면의 한 지점에서 다른 지점으로 에너지 흐름의 균형을 맞추죠. 구체적으로, 한 표면 지점에서 다른 지점으로 전달되는 빛의 강도는 방출된 빛과 다른 모든 표면 지점에서 x로 산란된 총 빛 강도의 합과 같습니다. 그러나 방정식 (1)은 radiosity 방정식과 달리 표면의 반사 특성에 대한 가정 정보가 없습니다.
"표면의 반사 특성에 대한 가정이 없다"는 말은 렌더링 방정식이 어떤 종류의 표면이든 모두 표현할 수 있다는 의미입니다.
기존의 radiosity 방정식은 표면이 "완전히 난반사(diffuse)"라는 가정을 깔고 있었습니다. 즉, 빛이 어느 방향에서 들어오든 모든 방향으로 균일하게 퍼진다는 전제였죠.
하지만 렌더링 방정식(1)은 그런 제약이 없습니다. 표면이 거울처럼 반짝이든, 매끄럽든, 거칠든, 투명하든 상관없이 산란 항 ρ(x,x′,x′′)를 통해 모든 반사 특성을 자유롭게 표현할 수 있습니다. 이것이 렌더링 방정식이 더 일반적이고 강력한 이유입니다.
방정식의 각 양은 새로운 개념으로, 우리는 이를 unoccluded multipoint transport quantities 라고 부릅니다. 2장에서는 이러한 양을 각각 정의하고, 방사 측정에서 흔히 접하는 양들과의 관계를 설명할 거예요.
적분은 S = US₁, 즉 모든 표면의 합집합에 대해 이루어집니다. 따라서 x'와 x"는 장면 내 모든 객체의 모든 표면을 범위로 합니다. 또한, 장면 전체를 둘러싸기에 충분히 큰 반구 형태의 전역 배경 표면 S₀도 포함시킵니다. 포위 표면을 포함하면 반사에 대한 전체 양의 반구와 전송에 대한 전체 음의 반구가 모두 고려된다는 점을 유의하세요.
"전송에 대한 음의 반구"는 표면을 기준으로 반대편 방향의 반구를 의미합니다.
구체적으로 설명하면:
양의 반구 (positive hemisphere): 표면 법선(normal) 방향을 향하는 쪽의 반구로, 빛이 표면에서 반사(reflection)되어 나가는 방향들을 포함합니다.
음의 반구 (negative hemisphere): 표면 법선의 반대 방향, 즉 표면 아래쪽을 향하는 반구로, 빛이 표면을 투과(transmission)하여 통과하는 방향들을 포함합니다.
따라서 "음의"라는 표현은 방향의 부호를 나타내는 것으로, 표면 법선을 기준으로 음의 방향(반대쪽)에 있는 반구를 의미합니다. 이렇게 양쪽 반구를 모두 고려함으로써 불투명한 표면의 반사뿐만 아니라 투명/반투명 표면을 통과하는 빛의 투과도 함께 다룰 수 있게 됩니다.
방정식 (1)은 전자기 방정식에 대한 맥스웰 방정식의 근사 모델로, 모든 광학 현상을 모델링하지는 않습니다. 본질적으로 기하학적 광학의 근사 모델입니다. 시간 평균 전송 강도만 모델링하므로 위상을 고려하지 않으며 회절 처리도 배제합니다. 또한 표면 사이의 매질이 균일한 굴절률을 가지며 산란광에 참여하지 않는다고 가정했어요. 후자의 두 경우는 방정식 (1)의 일반화를 통해 처리할 수 있습니다. 첫 번째 경우는 g(x,x')가 비균질 굴절률을 가진 매질을 처리하도록 허용하면 간단히 해결돼요. 참여 전파 매질의 경우에는 적분-미분 방정식이 필요합니다. 이러한 확장은 잘 알려져 있으며, [Chandrasekar 1950]과 컴퓨터 그래픽 응용을 위한 [Kajiya and von Herzen 1984]를 참조하세요. 아이코날 방정식에 대한 우아한 접근법은 적어도 한 세기 동안 해밀턴-자코비 이론 [Goldstein 1950]과 함께 사용되어 왔습니다. 참여 매질과 위상 및 회절의 처리는 경로 적분 기법으로 다룰 수 있어요. 다양한 물리적 현상과 관련된 일반화의 처리는 [Feynman and Hibbs 1965]를 참조하세요. 마지막으로, 방정식 (1)에서는 파장이나 편광 의존성을 다루지 않았습니다. 파장과 편광의 포함은 간단하며 당연히 이해되어야 합니다.

2. Discussion of transport (빛의 전달)

이 섹션은 렌더링 방정식에 나오는 각 항과 변수들이 물리적으로 무엇을 의미하는지 자세히 설명합니다. 특히 빛이 한 표면에서 다른 표면으로 어떻게 전달(transport)되는지를 수학적으로 정의하고 있습니다.
선택하신 부분에서는:
I(x,x'): 점 x'에서 점 x로 전달되는 방사선 에너지를 측정하는 "전송 강도(transport intensity)"를 정의합니다
이 값은 단위 시간당, 소스(dx')의 단위 면적당, 대상(dx)의 단위 면적당 전달되는 에너지를 나타냅니다
여기서 "소스(source)"는 빛을 방출하거나 반사하는 출발점을 의미합니다.
구체적으로 말하면, dx'는 빛이 시작되는 표면의 작은 영역(미소 면적 요소)입니다. 이 지점에서 빛이 나와서 다른 지점 dx(대상, target)로 전달되는 것이죠.
전송 강도 I(x,x')를 정의할 때:
dx': 소스(빛을 보내는 쪽)의 단위 면적
dx: 대상(빛을 받는 쪽)의 단위 면적
이렇게 두 표면 사이에서 빛이 전달되는 양을 수학적으로 표현하고 있습니다.
이어지는 내용에서는 기하학 항(g), 방출 항(€), 산란 항(ρ) 등 렌더링 방정식의 다른 구성 요소들도 하나씩 설명하고, 이들을 기존의 방사 측정(radiometry) 개념들과 연결시킵니다.
방정식 (1)의 각 양과 항을 살펴봅니다. 이 방정식은 단순화된 모델에서 광자 전송의 강도를 설명합니다. I(x,x')는 점 x'에서 점 x로 전달되는 방사선 에너지를 측정합니다. 우리는 I(x,x')를 x'에서 x로의 비폐색 2점 전송 강도, 또는 더 간단히 전송 강도라고 부릅니다. 전송 강도 I(x,x')는 단위 시간당 방사선 에너지를 나타냅니다.
단위 면적 dx의 대상에 대한 소스 dx'의 단위 면적당.
이 부분은 렌더링 방정식(The Rendering Equation)에 대한 논문의 일부입니다. 구체적으로는 빛의 전달(transport)을 설명하는 모델을 다루고 있습니다.
I의 단위는 joule/m⁴sec입니다.
g(x,x')는 기하학 항입니다. 이 항은 다른 표면 점들에 의한 가려짐을 나타냅니다. x'와 x가 서로 보이지 않으면 기하학 항은 0이 됩니다. 서로 보이면 1/r²이 되며, 여기서 r은 x'에서 x까지의 거리입니다. 완벽하게 투명한 표면도 g(x,x')를 0으로 만들 수 있습니다. 투명한 표면이 방사선을 가로채서 다른 쪽으로 재방사하기 때문입니다.
방출 항 €(x,x')는 x' 지점에서 x 지점으로 도달하는 표면의 에너지를 측정합니다. 이를 x'에서 x로의 비가려진 두 점 전송 방출량이라고 부릅니다. 이 값은 단위 시간당 소스의 단위 면적당, 그리고 타겟의 단위 면적당 에너지를 나타냅니다.
€(x,x')의 단위는 joule/m2secjoule/m^2sec입니다.
마지막으로 산란 항 p(x,x',x")는 x'의 표면 요소에 의해 산란된 에너지의 강도를 나타냅니다. 이 에너지는 x"에서 시작해 x로 끝나요. 이를 x"에서 x로 x'를 통해 가는 비가려진 세 점 전송 반사율이라고 부릅니다. p는 무차원 양이에요. x에 도달하는 에너지는 식 (4)로 주어집니다.
이제 전송 양을 더 일반적인 방사 측정 양과 연결해 봅시다. 주어진 기하학적 구성에 대해 각 양이 전송하는 에너지를 동일하게 맞춰 진행할게요.
일반적인 방사 강도는 에너지를 시간 단위, 소스의 투영 면적 단위, 입체각 단위로 나눈 값으로 정의됩니다 [5].
이 양들을 연결하기 위해 그림 1의 이미징 기하학을 살펴봅시다.
그림에서 다음을 얻을 수 있어요.
이 용어는 또한 표면을 통한 빛의 투과도 다루고 있어요. 논의를 간단히 하기 위해, 우리는 여기서 전송되는 빛의 산란을 전부 무시합니다.
n: 표면 요소 dx에 대한 법선
n′: 표면 요소 dx′에 대한 법선
t′: 요소 dx′에 대한 접선 벡터
r: x′에서 x까지의 거리
표면 요소 dx에 의해 이루어진 입체각은 반지름 r인 구의 일부 면적을 차지하는 dx의 투영 면적이에요.
그래서 식 (7)을 식 (5)에 대입하면 식 (8)을 얻어요.
식 (2)와 식 (5)를 같게 놓으면, transport intensity와 일반적인 intensity 사이의 관계를 식 (9)로 나타낼 수 있어요.
transport emittance와 일반적인 emittance 사이의 관계도 마찬가지로 유도돼요. occluding surface가 없다고 가정하면, 표면 요소 dx'에서 dx로 방출에 의해 전달되는 에너지는 식 (3)으로 주어져요. 일반적인 emittance의 정의를 사용해서 위와 똑같은 절차를 따라가면 돼요.
(emittance: 전통적인 방사 측정학에서 사용하는 방식으로, 표면에서 방출되는 빛의 양을 측정)
마지막으로, transport reflectance를 일반적인 방사 측정 총 양방향 반사 함수 p(Θ', Φ', )와 정의 (11)로 연결해요.
이미징 기하학은 그림 2에 나타나 있어요.
도표에서 우리는 식 (6)과 (7) 외에도 다음을 얻어요.
n′′: 표면 요소 dx′′에 수직인 벡터
r′′: x′′에서 x′까지의 거리
dω′′: 표면 요소 dx′′에 의해 형성되는 입체각
식 (2), (8), (9), (11), (12)를 결합하면 비가려진 세 점 전송 반사율과 총 양방향 반사율 사이의 관계(13)식을 얻을 수 있습니다.

3. Methods for approximate solution

방 안에 불을 켰을 때 빛은 벽, 바닥, 천장을 무한히 반사합니다. 완벽한 이미지를 얻으려면 이 무한한 반사를 모두 계산해야 합니다. 하지만 컴퓨터는 무한한 계산을 할 수 없으므로 적당히 계산하고 멈추는 근사 방법이 필요합니다. 예를 들어, "빛이 한 번만 튕긴 것까지만 계산하자(Utah 근사)" 또는 "거울처럼 반사되는 것만 계산하자(Whitted 근사)"처럼 실제 정답에 가깝게 근사하는 방식입니다.
이 섹션에서는 렌더링 방정식의 근사 해법을 살펴봅니다. 이 방정식은 다양한 렌더링 알고리즘을 통일된 관점에서 이해할 수 있게 합니다. 독자들은 이 논의를 통해 아직 시도되지 않은 다른 근사 방법들을 떠올릴 수 있을 것입니다. 현재 대부분의 연구는 아래 제시된 해법에만 집중되어 있어, 이 분야는 추가 탐구가 필요합니다.

Neumann series

Neumann series(노이만 급수)는 렌더링 방정식과 같은 적분 방정식을 푸는 수학적 기법으로, 해를 무한 급수의 형태로 전개하는 방법입니다. 이 급수는 직접 조명, 1회 반사, 2회 반사 등 빛의 산란 횟수에 따라 항을 나누어 표현하며, 연산자 M의 스펙트럼 반경이 1보다 작을 때 수렴합니다.
eq.(1)과 같은 적분 방정식을 푸는 한 가지 방법은 잘 알려진 형식적 조작에서 비롯됩니다([Courant and Hilbert 1953] 참조). 이를 다음과 같이 다시 쓸 수 있습니다:
선택하신 부분은 렌더링 방정식을 푸는 방법 중 하나인 Neumann series(노이만 급수)에 대한 설명의 시작 부분입니다.
이 방법은 적분 방정식을 푸는 수학적 기법으로, Courant와 Hilbert가 1953년에 정립한 형식적 조작(formal manipulation)에 기반합니다. 구체적으로는 렌더링 방정식을 다음과 같이 변형합니다:
I=gε+gMII = gε + gMI
여기서 M은 적분으로 정의되는 선형 연산자입니다. 이를 다시 정리하면:
(1gM)I=gε(1-gM)I = gε
이 방정식을 역으로 풀면 무한 급수 형태의 해를 얻게 됩니다:
I=(1gM)1gε=gε+gMgε+gMgMgε+g(Mg)3ε+...I = (1 - gM)^{-1}gε = gε + gMgε + gMgMgε + g(Mg)^3ε + ...
이 급수는 빛의 산란 횟수에 따라 항을 나누어 표현하며, 직접 조명, 1회 반사, 2회 반사 등을 각각의 항으로 나타냅니다. 이 무한 급수가 수렴하려면 연산자 M의 스펙트럼 반경이 1보다 작아야 하며, 렌더링에서 다루는 경우에는 이 조건이 만족됩니다.
여기서 M은 eq.(1)의 적분으로 정의되는 선형 연산자입니다.
이 방정식을 다시 쓰면:
여기서 1은 항등 연산자입니다. 이 방정식을 공식적으로 역으로 풀 수 있습니다:
Neumann 전개의 특징:
무한 급수가 수렴하려면 연산자 M의 스펙트럼 반경이 1보다 작아야 합니다
우리가 다루는 경우에는 이 조건이 만족됩니다
물리적 해석: 점 x와 x′ 사이의 방사선 전달 최종 강도를 다음의 합으로 나타냅니다:
직접 항
1회 산란 항
2회 산란 항
3회 이상의 산란 항

The Utah approximation

더 나은 이름이 없어서, 음영 처리된 표면을 렌더링하는 고전적인 방법을 Utah 근사법이라고 부르기로 했습니다. 이 근사법에서는 I를 두 항의 합으로 근사합니다:
I=gε+gMε0I = gε + gMε_0
Utah 근사법의 특징:
첫 번째 산란을 제외한 모든 산란을 무시합니다
기하학적 항 g는 눈으로 들어오는 최종 산란에 대해서만 계산됩니다
유타 대학의 많은 초기 연구자들이 연구한 고전적인 숨겨진 표면 문제입니다
주요 단순화:
연산자 M은 gε가 아니라 직접 ε₀에 작용합니다
방출 표면의 가시성(그림자)을 무시합니다
점 광원만 허용되며, 확장된 조명 표면은 허용되지 않습니다
연산자 M을 x′′에 대한 적분이 아니라 광원에 대한 작은 합으로 줄여줍니다
그 이후로 많은 확장이 나타났는데, 특히 그림자 알고리즘과 확장된 광원들이 주목받았어요.
Whitted [1980]는 다른 근사법을 제안했습니다. 이 근사법에서 M₀는 두 개의 델타 함수와 코사인 항의 합으로 이루어진 산란 모델입니다. 두 델타 함수는 반사와 굴절을 나타내고, 코사인 항은 확산 성분을 나타냅니다. 그는 그림자를 점 광원으로 처리했으며, 주변광 항은 € 항으로 직접 변환됩니다. 따라서 연산자 M은 작은 합으로 근사할 수 있습니다.

The Ray Tracing approximation

Cook [Cook et al 1984]은 1984년에 분산 레이 트레이싱을 도입했습니다. 이 근사법은 Whitted 모델의 세 가지 구성 요소를 확장하여 더 정확한 산란 모델을 만들었습니다. 이 확장으로 연산자 M을 계산할 때 적분 평가가 필요해졌고, M은 반사와 굴절 델타 함수 주위의 분포로 근사됩니다. 핵심은 몬테카를로 기법을 사용한 평가였습니다. 적분 평가가 가능해지면서 포착할 수 있는 광학 현상의 범위가 크게 확장되었습니다. 하지만 주변광 항의 적절한 처리는 여전히 어려운 문제로 남아 있었습니다.

The Radiosity Approximation

1984년에 Goral, Torrance, Greenberg [Goral et. al. 1984, Cohen and Greenburg 1985, Nishita and Nakamae 1985]가 컴퓨터 그래픽스 분야에 라디오시티를 소개했습니다. 이 방법은 완전 확산 표면의 에너지 균형 방정식을 다루는 주요 렌더링 기법입니다. 완전 확산 표면이란 양방향 반사 함수가 각도에 무관한 표면을 의미합니다 (14).
라디오시티의 등장: 1984년에 Goral, Torrance, Greenberg가 컴퓨터 그래픽스에 라디오시티를 도입했습니다.
핵심 개념: 완전 확산 표면(perfectly diffuse surface)의 에너지 균형 방정식을 다루는 렌더링 기법입니다.
완전 확산 표면이란: 양방향 반사 함수(BRDF)가 각도에 무관한 표면을 의미합니다. 즉, 빛이 어느 방향에서 들어오든, 어느 방향으로 반사되든 그 반사 특성이 동일한 표면입니다.
이 기법은 Utah 근사법이나 Ray Tracing과는 달리, 표면 간의 빛 반사를 전역적으로 계산하여 더 사실적인 간접 조명 효과를 표현할 수 있습니다.
표면 요소 dx'의 라디오시티 B(x')는 전체 가시 반구에 대한 에너지 플럭스입니다. 단위 시간당 단위(비투영) 면적당 에너지로 측정되며, 단위는 제곱미터당 와트입니다. 식 (15)로 정의됩니다.
반구형 양을 계산하려면 장면의 모든 표면에 대해 적분합니다. 식 (1)과 (15)로부터 다음을 얻습니다.
x와 x' 사이에 가림이 있으면 방출 항의 기여는 0입니다. 그렇지 않으면 다음과 같습니다.
여기서 €₀는 표면 요소 dx'의 반구 방출률입니다.
반사 항도 마찬가지입니다. 표면이 가려진 경우 라디오시티 기여는 0입니다.
여기서 H는 단위 시간과 단위 면적당 반구 입사 에너지입니다. 이 유도 과정에서 적분 순서를 바꾸고 식 (13), (12), (14)를 사용했습니다. 식 (17)과 (18)을 (16)에 대입하면 렌더링 방정식 (19)를 얻습니다. 이는 Goral 등[1984]의 식 (4)와 동일합니다.
총 통합 강도 H를 계산하는 것은 라디오시티에서 최종 Fij 행렬을 계산하는 데 필수적입니다. 이 과정은 가시성 계산이 필요하며, 계산 비용이 상당히 높을 수 있습니다. 행렬 방정식은 여러 번의 이완 단계로 해결됩니다. 이는 노이만 급수의 처음 몇 항을 합산하는 것과 본질적으로 동일합니다. 이완을 사용하려면 전체 행렬을 계산해야 합니다. 이완은 장면의 모든 표면에서 강도를 제공합니다. 특정 경우에는 유용하지만, 아래 설명할 몬테카를로 방법이 훨씬 더 효율적일 수 있습니다.
Radiosity Approximation과 이 논문에서 제시하는 패스 트레이싱(Path Tracing) 방식의 주요 차이점은 다음과 같습니다:

Radiosity Approximation의 특징

완전 확산 표면만 다룸: 양방향 반사 함수(BRDF)가 각도에 무관한 표면만 처리할 수 있습니다.
전역적 계산: 장면의 모든 표면에 대해 에너지 균형 방정식을 풀어야 합니다.
행렬 방법: Fij 행렬을 계산하고 이완(relaxation) 단계로 해결합니다.
높은 계산 비용: 가시성 계산이 필요하며 계산 비용이 상당히 높습니다.

패스 트레이싱(마르코프 체인 기반 몬테카를로 방법)의 특징

모든 표면 처리 가능: 완전 확산 표면뿐만 아니라 거울면, 굴절 등 다양한 재질을 처리할 수 있습니다.
확률적 경로 추적: 빛의 경로를 하나하나의 사슬로 보고, 현재 위치에서 다음 위치만 확률적으로 결정합니다.
샘플링 기반: 무작위 경로를 수천 개 따라가서 평균을 내는 방식입니다.
효율성: 특정 경우에는 라디오시티의 이완 방법보다 몬테카를로 방법이 훨씬 더 효율적일 수 있습니다.
핵심 차이는 Radiosity는 확산 표면에 특화된 결정론적 방법인 반면, 패스 트레이싱은 모든 종류의 표면을 다룰 수 있는 확률적 방법이라는 점입니다.

4. 적분 방정식을 해결하기 위한 마르코프 체인(패스트레이싱의 원리)

적분 방정식을 해결하기 위한 마르코프 체인은 렌더링 방정식과 같은 적분 방정식을 수치적으로 푸는 확률적 방법입니다. 빛의 경로를 사슬로 보고, 현재 위치에서 다음 위치만 확률적으로 결정하여 무작위 경로를 수천 번 반복한 뒤 평균을 내면, 모든 방향을 직접 계산하지 않고도 정확한 결과에 가까운 값을 얻을 수 있습니다.
어떤 지점의 밝기를 알려면 그 지점으로 들어오는 모든 방향의 빛을 더해야 합니다. 수학에서 '모든 것을 더하는 것'이 바로 적분입니다. 우리가 보고 있는 점의 밝기(I)를 구하려고 보니, 그 밝기는 다른 점들에서 오는 빛의 합(∫I)으로 표현됩니다. 즉, 구하려는 값(I)이 식의 양쪽에 모두 들어있는 복잡한 형태가 됩니다.
모든 방향의 빛을 다 계산하는 것은 양이 너무 많습니다. 예를 들어, 한 점에서 100만 개의 광선을 쏘고, 그 100만 개가 다시 각각 100만 개씩 튕긴다면 순식간에 계산이 불가능해집니다.
마르코프 연쇄는 "운에 맡기고 길을 따라가 보자"는 전략입니다. 빛의 경로를 하나하나의 '사슬(Chain)'로 봅니다. 빛이 벽에 부딪혔을 때, 다음에 어디로 갈지 확률적으로 하나의 방향만 정해서 따라갑니다. 이것이 마르코프 연쇄의 핵심입니다—이전 경로는 잊고 현재 위치에서 다음 위치만 결정하는 것입니다. 이런 무작위 경로를 수천 개 따라가서 평균을 내면, 신기하게도 모든 방향을 다 계산한 것과 비슷한 결과가 나옵니다.
마르코프 체인은 적분 방정식을 푸는 대표적인 수치 해법입니다. 이 방법의 핵심은 "현재 위치에서 다음 위치만 확률적으로 결정"하는 것입니다. 대기 이론부터 중성자 수송까지 다양한 분야에서 활용되고 있습니다.
특히 방사선 열전달 분야에서는 오래전부터 몬테카를로 마르코프 체인이 사용되어 왔습니다 [Siegel and Howell 1981]. 이 접근법은 다음과 같이 작동합니다.
특정 파장의 방사선 패킷이 밀폐된 공간 안에서 표면에 부딪히면, 그때마다 확률적으로 하나의 방향만 선택해서 방출, 반사, 흡수됩니다. 이런 무작위 경로를 수천 번 반복한 뒤, 각 표면에 흡수된 패킷 수를 세어 평균을 냅니다. 그러면 모든 방향을 계산하지 않고도 정확한 결과에 가까운 값을 얻을 수 있습니다.
이는 광원에서 눈으로 장면을 추적하는 레이 트레이싱과 유사합니다. 하지만 우리는 이러한 간접적인 방법 대신, von Neumann과 Ulam이 처음 제안한 초기 몬테카를로 방법으로 돌아가 식 (1)을 더 직접적으로 풀어보려고 합니다 [Rubenstein 1981].

Finite dimensional version

먼저 간단한 유한 차원 문제로 이 방법을 설명하겠습니다. 수식 표기가 단순해지고 핵심 개념을 명확히 파악할 수 있기 때문입니다. 이 방법은 기존 라디오시티에서 쓰이던 완화 기법보다 여러 장점이 있습니다. 눈에 보이는 지점의 밝기만 계산하면 되고, 전체 라디오시티 행렬 계산을 훨씬 작은 규모의 행렬 요소 집합으로 줄일 수 있습니다.
다음과 같은 벡터 방정식을 풀고 싶다고 해봅시다.
x=a+Mxx=a+Mx
여기서 x와 a는 n차원 벡터이고, x가 우리가 구하려는 미지수입니다. M = (mij)는 n × n 크기의 행렬입니다.
노이만(Neumann) 전개를 통해 M 행렬을 살펴보면, 고유값이 단위원 내부에 있을 때 해 x를 다음과 같이 구할 수 있습니다.
이 방법은 여러 경로를 거쳐 얻은 값들을 행렬 곱셈으로 평균내어 위 합을 계산합니다. 반복적인 행렬 곱셈으로 만들어진 행과 열을 따라 경로를 추적합니다. 경로의 각 지점은 1부터 n까지의 정수로 나타낼 수 있는 행이나 열에 해당합니다.
확률 공간 Ω을 만듭니다. 여기서 각 점 ω는 매 시간마다 n개의 지점 중 하나를 방문하는 경로를 뜻합니다. ω = (n₀, n₁, ..., nₖ)이며, 각 nᵢ는 1부터 n 사이의 정수입니다. 경로 ω의 길이 k = l(ω)는 유한하지만 임의로 정해지며, k번째 행렬 거듭제곱의 각 항목에 대응됩니다. 각 경로에는 확률값 p(ω)가 부여됩니다.
x의 특정 좌표값(예를 들어 x₁)을 계산하려면, 모든 경로 ω ∈ Ω에 대해 평균을 구합니다. 기댓값을 계산하면 이것이 우리가 원하는 값임을 확인할 수 있습니다.
경로의 확률 공간은 마르코프 체인을 쓰면 쉽게 만들 수 있습니다. 이산 마르코프 체인은 상태 집합 X, 한 상태 x'에서 다른 상태 x로 전이할 확률, 그리고 초기 확률 분포로 이루어집니다. 일부 상태는 흡수 상태로 지정할 수 있으며, 흡수 상태에 도달하면 더 이상 다른 상태로 이동할 수 없습니다.
마르코프 체인이 만들어내는 경로의 확률은 초기 상태부터 흡수 상태에 도달할 때까지 거치는 모든 전이 확률을 곱한 값으로 나타냅니다. 경로에 대해
확률은 다음과 같습니다.
유한 차원 문제의 경우, 마르코프 체인의 상태 집합을 벡터나 행렬의 인덱스 집합 X = {1,...,n}으로 설정합니다. 전이 확률을 선택하는 데는 어느 정도 자유가 있지만, 행렬의 0이 아닌 원소에 대해서는 양수값이어야 합니다. 이론상으로는 경로의 확률 분포와 거의 상관없이 해를 추정할 수 있습니다. 하지만 계산이 얼마나 빨리 정답에 수렴하는지는 전이 확률을 어떻게 정하느냐에 크게 달려 있습니다. 5장에서는 전이 확률을 선택하는 새로운 기법을 소개합니다.

Infinite dimensional solution

Monte Carlo Markov 체인 방법을 무한 차원 방정식으로 확장하는 것은 간단합니다. 현재 방정식은 두 번째 종류의 Fredholm 방정식의 변형입니다. 표면이 방사선을 반사하고 전달하는 수동성은 Neumann 급수의 수렴을 보장합니다. 상태 집합을 표면의 점 x 집합으로 대체하면 됩니다. 점을 계산하는 절차는 다음과 같습니다.
계산 절차:
1.
가상 스크린의 선택된 픽셀 I를 통해 이미지화 구멍에서 보이는 장면의 한 점 z′을 선택합니다
2.
방사된 강도를 추가합니다
3.
Markov 경로의 길이에 대해 다음을 수행합니다:
3.1 점 x′′를 선택하고 기하학적 인자 g(z,z′)를 계산합니다
3.2 반사 함수 p(x,z′,x′′)를 계산하고 ε(x′,x′′)와 곱합니다
3.3 이 기여를 픽셀 강도에 추가합니다
발산과 산란 계수 계산은 텍스처 맵과 조명 모델을 참조하는 것만으로 간단히 해결할 수 있습니다. 기하학적 계수는 레이 트레이싱의 레이-객체 교차 계산입니다. Markov 경로에서 다음 점 x"를 선택할 때, 특정 각도로 레이를 쏘고 가장 가까운 교차점을 찾음으로써 강력한 중요도 샘플링 최적화를 수행합니다. 즉, 다른 표면에 의해 가려진 점 x', x"에 대해서는 적분을 계산할 필요가 없습니다. 적분 값이 0이 될 것을 이미 알고 있기 때문입니다. 이는 항상 모든 표면에서 에너지 기여를 받는 radiosity의 완화 절차와 대조적입니다.

5. 계층적 샘플링

이제 렌더링 방정식을 해결하기 위해 새롭게 고안된 여러 가지 분산 감소 기법을 소개할게요. 하지만 여기서 소개하는 분산 감소 기법들은 훨씬 더 넓은 범위에서 유용하다는 점을 강조하고 싶어요. 일반적으로, 적분 함수가 특히 어려운 몬테카를로 적분 문제에서 유용할 거예요. 이런 상황에서는 이전에 알려진 방법들보다 추가적인 오버헤드가 거의 무시할 수 있을 정도로 작아지거든요. 우리는 적분 함수의 소중한 샘플을 점점 더 잘 활용하는 다섯 가지 방법을 제시할 거예요. 아래에 설명된 모든 기법들은 계층적 샘플링에서 영감을 받았답니다.

순차적 균등 샘플링

첫 번째 샘플링 기법은 일반적인 순차 샘플링 전략에서 비롯됐어요. 적분의 샘플들은 적분 추정치의 샘플 분산이 일정 임계값 아래로 떨어질 때까지 반복적으로 수집돼요. [Lee, Redner and Uselton 1985]는 이 전략의 장점을 보여줬어요. 이미지의 흥미로운 부분에서는 많은 샘플이 수집되고, 그렇지 않은 부분에서는 적은 샘플이 수집되죠.
하지만 이 순차적 전략은 계층적 샘플링과 호환되지 않아요. 계층적 샘플링에서는 관심 영역을 하위 셀로 나누거든요. Lee 등은 픽셀당 8개의 셀로 고정 분할하고, 각 셀 내에서 무작위로 샘플을 수집했어요. 이상적으로는 셀이 영역을 균등하게 나눌 때 셀당 하나의 샘플을 수집하면 더 나은 수렴을 얻을 수 있어요. 이것이 바로 흔히 말하는 지터 샘플링 방법이에요. 보통 셀의 중심이 격자를 형성한다고 생각하죠. 순차 샘플링과 지터 샘플링이 호환되지 않는 이유는 샘플 개수를 정확히 알기 전까지는 영역을 균등하게 분할할 수 없기 때문이에요.
순차적 균등 샘플링은 다양한 크기의 셀로 이루어진 트리를 유지해서 이를 해결해요. 샘플을 던질 때마다 먼저 셀을 선택하고 나눠요. 원래 셀의 이전 샘플은 새로운 하위 셀 중 하나에 있어야 해요. 새로운 샘플은 반대 셀에 위치하도록 선택해요. 간단한 예시로 이 기법을 설명할게요.
예를 들어, 단위 구간을 샘플링하고 이미 5개의 샘플을 던졌다고 가정해요. 샘플 포인트가 있는 셀은 이렇게 나타나요.
새로운 샘플 포인트를 던지기 위해 트리를 따라가다 리프 셀을 만날 때까지 진행해요. 그런 다음 리프 셀을 반으로 나누고 빈 반쪽 셀에 샘플을 던져요.
쉽게 말하면:
트리를 따라가다 리프 셀을 만날 때까지 진행: 샘플링 트리의 루트에서 시작해서 아직 더 이상 나눠지지 않은 말단 노드(리프 셀)를 찾을 때까지 내려가요.
리프 셀을 반으로 나누고: 그 말단 셀을 두 개의 하위 셀로 분할해요.
빈 반쪽 셀에 샘플을 던져요: 기존 샘플이 들어있는 쪽이 아니라, 아직 샘플이 없는 빈 쪽에 새로운 샘플을 배치해요.
이렇게 하면 샘플들이 영역 전체에 고르게 분포되도록 할 수 있어요. 기존 샘플이 있는 곳을 피하고, 비어있는 공간을 채워나가는 방식이죠.
노드 세분화 알고리즘:
1.
노드가 내부 노드인 경우:
1.1 하위 노드를 선택합니다
1.2 선택한 하위 노드를 세분화합니다
1.3 반환합니다
2.
그렇지 않으면 리프 노드를 분할합니다
3.
이전 샘플을 포함하는 서브리프로 전파합니다
4.
남은 빈 서브리프에 새로운 샘플을 투영합니다
어떻게 하면 가장 균일한 분할을 계산할 수 있을까요? 한 가지 방법은 샘플링 트리를 너비 우선 순서로 탐색하는 거예요. 더 깊은 노드를 분할하기 전에 각 레벨에서 각 리프 노드를 분할하는 거죠. 이 전략은 본질적으로 구간을 스캔하면서 매우 비랜덤한 샘플 분포를 만들어내요. 더 나은 방법은 무작위 순서로 너비 우선 탐색하며 노드를 분할하는 거예요. 다음 기준들이 이 전략을 결정해요.
서브노드 선택 기준:
1.
둘 중 하나가 리프 노드라면 그것을 선택합니다
2.
왼쪽 노드를 선택합니다 (왼쪽이 균형 잡혀 있다면)
3.
오른쪽 노드를 선택합니다 (level(right) < level(left)인 경우)
4.
그렇지 않으면 무작위로 선택합니다
이 전략은 특정 영역에 집중하지 않고 구간 전체를 무작위로 탐색하는 효과를 낸다는 점을 유의하세요..

다차원 경우

이 알고리즘은 Bentley [Bentley 1979]가 제안한 k-d 트리 데이터 구조를 사용해 고차원으로 쉽게 확장할 수 있어요. k-d 트리에서는 도메인이 연속적인 좌표축에 수직인 초평면으로 두 부분으로 나뉘어요. 예를 들어 단위 정사각형은 먼저 수직선으로, 다음 단계에서는 수평선으로 나눠집니다. 앞서 설명한 균일한 하위 노드 선택 규칙은 수정 없이도 균일한 세분화를 보장해요. 경로 공간으로의 일반화도 간단합니다.

Hierarchical Intergration 계층적 적분

이 기술의 세 번째 버전은 각 샘플의 셀을 샘플과 함께 기록한다는 점을 활용해요. 셀의 부피와 샘플 값을 적분 함수로 사용해 Riemann 합을 계산할 수 있죠. Yakowitz [Yakowitz et al 1978]는 이 방법의 변형을 제안했어요(샘플 자체를 경계점으로 사용하고 계층화를 하지 않는 방식). 그는 1차원에서 O(n⁻⁴), 2차원에서 O(n⁻²)의 분산을 보고했어요. 이는 단순 몬테카를로의 O(n⁻¹)보다 훨씬 뛰어난 결과예요. 우리 기술의 분석은 아직 진행 중이며, 동반 논문에서 발표될 예정이에요. 하지만 샘플의 계층화 덕분에 초기 증거는 이 방법이 적분에 우수하다는 것을 보여줘요.
리프 셀이 분할될 때마다 전체 적분에 대한 기여도가 절반으로 나뉘어요. 새로운 적분 함수 샘플은 빈 셀의 부피와 곱해져요. 분할과 샘플링 후에는 리프에서 루트까지 경로를 따라가며 각 노드에 저장된 적분을 하위 노드들의 적분 합으로 업데이트해요. 비루트 내부 노드의 적분을 유지하면 샘플 밀도에 따라 자동으로 스케일링되어 일정한 측정값을 유지할 수 있어요.
그림 3. 단순 몬테카를로와 계층적 적분의 수렴. 보여지는 것은 샘플 수에 따른 적분 추정치입니다. 단순 몬테카를로는 상단 곡선이에요.
그림 3은 2차원 적분의 수렴을 전통적인 몬테카를로 기법과 비교합니다. 그래프는 샘플 수에 따라 적분 추정치가 어떻게 변하는지 보여줍니다. 전통적인 추정기는 위에, 계층적 적분기는 아래에 표시되어 있습니다. 평면의 연결된 영역에서 간단한 계단 함수를 적분하고 있습니다.

Adapted Hierarchical Intergration 적응형 계층적 적분

이 기술의 네 번째 확장은 도메인 내 샘플의 균일성 외에 다른 기준을 다룹니다. 이 변형에서는 도메인 내 중요한 부분에 샘플을 집중시키고, 적분 함수가 거의 일정한 영역에서는 드물게 샘플링합니다.
트리의 중요한 부분을 선택해서 더 정교하게 세분화하기 위한 기준을 찾고 있습니다. 이런 기준을 알고리즘에 어떻게 포함시킬 수 있을까요? 균일한 순차 샘플러의 하위 노드 선택 규칙을 확률 임계값을 설정하는 방법으로 생각할 수 있습니다. 단위 구간에서 균일한 난수를 선택하세요. 균일 규칙은 왼쪽이나 오른쪽 하위 노드를 선택할 때 임계값 Φu를 1 또는 0으로 계산합니다. 무작위로 선택할 때는 임계값을 0.5로 설정합니다.
이제 여러 임계값을 계산해 봅시다. 이러한 임계값 함수를 모두 고려하는 효과적인 방법은 전역 임계값으로서 볼록 결합을 형성하는 것입니다. 즉, 전역 임계값 Φ는 다음과 같이 주어집니다.
여기서 모든 i에 대해 cᵢ ≥ 0입니다. 각 cᵢ는 해당 임계값 함수에 대한 가중치를 제공해서 전체 전략을 조정할 수 있게 합니다.
어떤 임계값 함수가 유용할까요? 몇 가지를 발견했지만, 발견해야 할 유용한 기준이 더 많이 남아 있는 것은 분명합니다. 우리가 유용하다고 생각한 임계값 함수에는 1) 균일 샘플링 임계값, 2) 완전히 무작위 임계값(Φ = 0.5), 3) 두 하위 노드의 적분 차이, 4) 이 하위 노드에서의 변화 활동 기록(분산일 수도 있고, 적분의 가중 시간 기록일 수도 있습니다), 5) 큰 조명 구성 요소가 어디에 있을지 예측할 수 있는 사전 함수가 있습니다.
지금까지 적응 기준을 찾는 실험은 크게 성공적이지 않았습니다. 최종 이미지를 계산하는 데 적응을 사용하지 않았기 때문입니다.
앞서 언급한 것처럼, 각 노드에서 셀의 부피를 기록하면 자동으로 정규화가 이루어집니다. 이는 샘플링 분포가 비대칭일 때 필요한 작업입니다. 적응형 샘플링 방식에서는 종종 문제가 되기 때문입니다.
그림 4. 적응형 계층적 적분에 의한 영역의 세분화.
그림 4는 단위 정사각형을 기준 1)과 3)에 따라 동일한 비율로 나눈 모습을 보여줍니다. 이것은 165개의 샘플이 투입된 시점의 스냅샷입니다.

비균일 샘플링: 중요도 샘플링 유사체(Nonuniform sampling : Importance sampling analogs)

마지막으로, 다섯 번째 기법은 중요도 샘플링을 고려해요. 잎 셀을 정확히 반으로 나누는 대신, 어떤 확률 밀도 함수의 중앙값을 나타내는 초평면을 따라 나눌 수 있어요. 선택된 초평면은 두 번째 기법의 k-d 트리 레벨에 의해 결정돼요. 확률 밀도를 통합 분포 함수로 나타내면, 빠른 이진 검색으로 중앙값 초평면을 쉽게 선택할 수 있어요. 확률 밀도 f(x)의 중앙값을 찾으려면 F(x) = 0.5가 되는 지점을 찾으면 되거든요.
중요도 샘플링은 렌더링 방정식을 푸는 데 큰 이점을 줄 수 있는 매우 중요한 분산 감소 기법이에요.

6. 렌더링 방정식에의 응용

위에서 소개한 몬테카를로 알고리즘들은 모두 렌더링 방정식을 푸는 데 적용할 수 있어요. 순차적 균일 샘플링은 심도 흐림 효과를 위한 조리개 샘플링에 사용되고, 적응형 계층적 적분은 픽셀 부분 샘플링에 사용돼요. 중간값을 따라 나누는 중요 샘플링은 다음 광선의 방향을 선택할 때 쓰여요. 조명 모델은 합산 영역 테이블로 저장해요 [Crow 1985]. 이 테이블이 확률 분포 함수를 제공해서 반사 셀에서 중간값을 이진 검색으로 빠르게 찾을 수 있어요. 조명 모델의 중간값 초평면을 찾기 때문에 도메인의 비선형 변환은 크게 중요하지 않아요. 입력과 출력 반구를 접선 평면에 단순히 투영하면 되거든요.
경로 해법을 기존 레이 트레이싱 알고리즘과 비교해 보는 것도 흥미로워요. 기존 레이 트레이서를 이 알고리즘으로 변환하는 것은 꽤 쉬워요. 기본적으로 기존 레이 트레이싱 알고리즘을 수행하되, 각 표면에서 광선 트리를 분기하는 대신 트리에서 하나의 경로만 따라가면 돼요. 광선은 항상 알려진 광원 쪽으로 쏘는데, 이 광원은 확장된 영역일 수도 있어요. 레이 트레이싱과 적분 방정식 방법의 개요는 다음과 같아요.
이제 이 다이어그램에서 중요한 현상이 지적되고 있어요. 표면의 passivity 때문에, 첫 번째 생성된 광선과 광원에서 나온 광선이 픽셀 적분에 기여하는 변동성 측면에서 가장 중요하다는 것이 널리 알려져 있답니다. 두 번째 및 그 이상의 생성된 광선은 변동성에 훨씬 적게 기여해요. 하지만 기존의 ray tracing은 이미지의 변동성에 가장 적게 기여하는 바로 그 광선들에 대부분의 작업을 소모해요. 즉, 너무 많은 고차 생성 광선을 쏘는 거죠. 반면에 적분 방정식 방법은 이러한 비판을 받지 않아요. 경로가 가지 비율 1인 트리이기 때문에, 첫 번째 생성 광선과 고차 생성 광선의 수가 같거든요. 이는 motion blur, depth of field, 그리고 분산 ray tracing의 다른 효과들에 대한 변동성 감소에 매우 중요하답니다.
이 다이어그램은 기존의 분산 레이 트레이싱을 위한 대체 알고리즘도 보여줘요. 가지를 치는 나무처럼 쏘는 대신, 확률적으로 선택된 경로를 따라 레이를 쏘는 거죠. 반사와 굴절이 많은 장면에서는, 주어진 픽셀에 대해 계산해야 할 레이와 객체의 교차점을 크게 줄여주고, 아주 적은 프로그래밍 작업으로 레이 트레이싱의 속도를 놀랍게 향상시켜요. 하지만 이 새로운 빠른 형태의 레이 트레이싱, 즉 path tracing에서는 각 픽셀에 기여하는 반사, 굴절, 그림자 레이 타입의 비율을 올바르게 유지하는 것이 매우 중요하답니다. 레이 타입을 무작위로 선택하는 대신, 두 가지 대안이 있어요. 첫 번째는 각 타입의 수를 추적하는 거예요. 각 타입의 확률을 조정해서 샘플 분포가 원하는 분포와 잘 맞도록 해서, 샘플 분포가 원하는 분포와 일치할 가능성을 높이는 거죠. 이 방법이 우리가 실제로 구현한 방법이에요. 두 번째 방법은 레이 타입을 무작위로 선택하되, 각 레이 타입의 기여도를 원하는 분포와 결과적으로 가중된 샘플 분포의 비율로 조정하는 거예요.

7. Results

그림 5와 6은 적분 방정식 기법을 사용해 얻은 이미지를 보여줘요. 각 표면 요소에 닿을 때마다, 반사, 확산, 투과 계수에 의해 결정된 분포에서 난수를 계산했어요. 이 난수는 표면 요소에서 하나의 광선을 쏘기 위해 사용되었답니다. 각 광원에서 무작위로 한 점을 선택해서 조명 광선의 목표로 삼았어요. 실제로 사용된 분산 감소 방법은 새로운 광선의 확산 방향, 반사 방향, 굴절 방향을 선택하기 위한 다차원 순차 샘플링이었어요. 다차원 순차 샘플링은 광원과 이미지 조리개에서 점을 선택하는 데도 사용되었답니다. 계층적 적분은 픽셀 값의 앤티앨리어싱을 위해 사용되었어요. 이 이미지들에는 적응형 또는 비균일 샘플링이 사용되지 않았어요. 중요 샘플링을 사용하면 이미지의 분산이 상당히 개선될 것이라는 점은 분명해요. 비록 중요 샘플링의 구현은 간단하고 직관적이지만, 아직 실행되지는 않았어요. 또한, 각 픽셀의 분산을 추적하고 순차적으로 수집하는 것이 상당한 속도 향상을 보여주었지만, 우리 프로그램은 이 이미지들에 대해 그렇게 하지 않았어요. 우리는 픽셀당 일정하게 40개의 경로를 쏘았답니다.
그림 5. 레이 트레이싱과 적분 방정식 기법의 비교. 구로부터 빛이 산란되어 기본 다각형에 빛이 존재하는 것을 주목하세요.
그림 5는 두 가지 기법으로 렌더링된 모델을 보여줘요. 왼쪽은 표준 레이 트레이싱 기법으로 렌더링된 모델인데, 주변 계수를 0으로 설정하고 앞서 언급한 단일 분기 비율 속도 향상을 적용했어요. 오른쪽 이미지는 적분 방정식을 통해 렌더링된 결과를 보여줍니다. 두 이미지 모두 256 x 256 픽셀이고, 픽셀당 40개의 경로가 고정되어 있어요. 이미지는 IBM-4341에서 계산되었어요. 첫 번째 이미지는 CPU 시간으로 401분이 걸렸고, 두 번째 이미지는 533분이 걸렸어요. 그림자 속 구의 영역이 레이 트레이싱 이미지에서 놓친 주변 조명을 받아들이고 있는 것을 주목하세요. 또한, 빛이 구의 아래쪽에서 반사되어 바닥 평면을 밝히고 있답니다.
그림 6. 샘플 이미지. 모든 객체는 중성 회색입니다. 객체의 색상은 녹색 유리 구슬의 카우스틱과 기본 다각형의 색상 블리딩 때문이에요.
그림 6에서는 적분 방정식 기법의 강력함을 보여주는 이미지를 제시하고 있어요. 장면의 모든 객체는 중립적인 회색인데, 녹색 유리 공과 약간 붉은색을 띠는 바닥 다각형만 예외랍니다. 회색 객체에 색상이 있다면 레이 트레이싱 이미지에서는 보이지 않을 거예요. 녹색 유리 공이 장면의 객체에 caustics를 드리우고 있다는 점에 주목해 주세요. 약간 색이 있는 바닥 다각형에서 오른쪽 위의 납작한 타원체의 바닥으로 색상이 번지고 있어요. 단순함과 비교를 위해 이 장면의 불투명한 표면은 lambertian으로 설정했지만, 사용할 수 있는 조명 모델에는 제한이 없답니다. 그림 6은 512 x 512 픽셀 이미지로, 픽셀당 40개의 경로를 사용했어요. IBM 3081에서 계산되었고, 1221분의 CPU 시간이 소요되었답니다. 이 이미지의 모델은 Al Barr가 제공해 주었어요.
감사의 말씀 Al Barr, Tim Kay, Rob Cook, Jim Blinn, 그리고 CS286 컴퓨터 그래픽 세미나의 멤버들에게 기술적인 논의에 대해 감사드립니다. IBM, 로스앤젤레스 과학 센터의 Juan Rivero, 그리고 Yorktown Heights Research의 Alan Norton에게 Caltech에 대량의 메인프레임 사이클을 기부해 주셔서 감사드립니다. 또한, 많은 사려 깊은 의견을 주신 리뷰어들에게도 감사의 말씀을 전합니다.
References