본문 바로가기

개발/컴퓨터 그래픽스

컴퓨터 그래픽스 : PBR 이해를 위한 배경 지식(2) - BRDF

 

이 글은 수학적으로 정확한 정의를 알려주기보다는, 직관적인 이해를 돕기 위해 작성한 글입니다. 그 점 양해부탁드립니다.

 

지난 편에서는 Radiometry(방사 분석)에 대해서 알아봤습니다. 이러한 Radiometry의 개념을 통해 우리는 빛을 수량화할 수 있게 되었습니다.

 

만약 이전 글을 보지 않았으면, 이번 글을 이해하는게 어려울 수도 있습니다. 꼭 이전 글의 내용을 이해하신 후에 읽어주시길 바랍니다.

2020/09/11 - [개발/컴퓨터 그래픽스] - 컴퓨터 그래픽스 : PBR 이해를 위한 배경 지식(1) - Radiometry(방사 분석)

 

컴퓨터 그래픽스 : PBR 이해를 위한 배경 지식(1) - Radiometry(방사 분석)

이 글은 수학적으로 정확한 정의를 알려주기보다는, 직관적인 이해를 돕기 위해 작성한 글입니다. 그 점 양해부탁드립니다. PBR(Physically Based Rendering)에 대해 공부를 하기 위해 책을 본다면, 일반�

honey-balm.tistory.com

 

이번 편에서는 빛이 표면에 충돌했을 때 빛이 어떻게 반사되는지에 대해서 알아보겠습니다. 

 

BRDF(Bidirectional Reflection Distribution Function)

BRDF는 양방향 반사 분포 함수라는 이름에서 추측할 수 있듯이, 하나의 함수입니다. 그렇다면 무엇을 하는 함수일까요? BRDF는 표면에 도달하는 빛이 표면에서 어떤 방식으로 반사되는지 알려주는 함수입니다. 

 

그림 1) BRDF

위 그림 1을 보면 광원으로부터 나오는 광선 \(w_{i}\)와 관찰자를 향해 나가는 광선 \(w_{o}\)를 볼 수 있습니다. 또한 각, \(\theta_{i}\)와 \(\theta_{o}\) 광선이 표면 한 점 P에서의 법선 N과 이루는 각도를 나타냅니다. 

 

BRDF의 반환 값은 정확하게 표현을 하면, 점 P에 도달하는 Irradiance와 점 P에서 나가는 radiance의 비율입니다. 이를 조금 더 풀어서 설명하면, 아래와 같습니다.

 

BRDF : 점 P에 도달하는 모든 빛의 양과 점 P에서 \(w_{o}\)방향으로 나오는 빛의 양의 비율
주의 : 직관적인 이해를 위해 실제 정의와는 약간 다를 수 있습니다. 실제 BRDF의 정의는 곧 나옵니다.

우리가 어두운 방에 있고 그 방의 한 가운데에는 농구공 하나가 놓여져 있다고 생각해봅시다. 하지만 이 방은 너무 어둡기에 이 공이 어떤 공인지 제대로 알 수가 없습니다. 그래서 우리는 이 공을 확인하기 위해서 방의 불을 점점 밝힙니다. 불을 점점 밝힐수록 우리는 공이 어떤 모양을 하고 있는지 인지할 수 있게 되고, 최종적으로 이 공이 농구공이란 사실을 알게 되었습니다!

 

위에 과정을 조금 더 자세하게 들여다본다면, 처음 어두운 방에는 빛의 양이 매우 적기에 농구공에 도달하는 빛의 양이 적을 수밖에 없습니다. 또한 농구공에 도달한 빛이 반사되어 우리 눈에 도달하는 빛의 양도 매우 적습니다. 하지만 점차 불을 밝히면 농구공에 도달하는 빛의 양이 강해지고, 우리 눈에 도달하는 빛의 양도 강해집니다. 

 

이런 과정에서 우리는 표면에 도달하는 빛의 양이 강해지면, 표면에서 나오는 빛의 양도 강해진다는 것을 알 수 있습니다. 그렇다면 이것을 조금 더 수학적으로 표현해봅시다!

 

위의 과정을 수학적으로 표현하기 위해서는 지난 편에서 배운 Irradiance와 Radiance의 관계를 알아봐야할 필요가 있습니다. 우선 관계를 알아보기 전에 간단하게 Irradiance와 Radiance에 대해서 설명하면, 아래와 같습니다. 

 

Irradiance = 한 표면에 도달하는 Flux Density
Radiance = Irradiance에 입체각을 도입한 개념. 방향을 표현할 수 있다.

Irradiance, \(E = \frac{d\Phi}{dA}\)
Radiacne, \(L = \frac{d^{2}\Phi}{dA\cos{\theta}dw}\)

그렇다면, 이번에는 Irradiance와 Radiance의 관계를 정의해보도록 하겠습니다. 

 

Irradiance, E에 입체각을 도입한 것이 Radiance라고 우리는 이미 알고 있습니다. 그렇다면 아래의 Irradiance는

$$E = \frac{d\Phi}{dA}$$

아래와 같이 표현될 수 있습니다.

$$dE = \frac{d^2\Phi}{dAdw}$$

위 식을 \(L = \frac{d^2\Phi}{dA\cos{\theta}dw}\)으로 치환한다면 \(dE\)는 아래와 같습니다.

$$dE = L\cos{\theta}$$

이제 각 변을 입체각에 대해서 적분을 하면, 아래와 같은 식이 됩니다.

$$\int {dE}dw = \int {L\cos{\theta}}dw$$
$$E = \int {L\cos{\theta}}dw$$

 

위에 식을 말로 표현하자면, 아래와 같습니다.

 

한 점의 Irradiance는, 한 점에 도달하는 모든 Radiance를 합친 것이다.

 

위 말에 조금 살을 붙이면 아래와 같이 표현할 수도 있습니다.

 

한 점 p의 Irradiance는, 한 점 p로 도달하는 미소 입체각 \(dw_{i}\)를 가진 Radiance를 적분한 것이다.

이를 식으로 표현하면 아래와 같습니다.

 

$$E_{i}(p) = \int_{\Omega_{i}}L_{i}(p, \omega _{i})\cos{\theta}_{i}d\omega _{i}$$

 


이제 우리는 Irradiance와 Radiance의 관계를 알게 되었습니다. 그러면 다시 위의 농구공의 예를 다시 써보자면, 아래와 같습니다.

 

농구공에 도달하는 Irradiance가 강해질수록 공에서 나오는 Radiance도 강해집니다.

위의 말을 수학적으로 표현하면 아래와 같습니다.

 

$$dL_{o}(p,\omega _{o}) \propto dE_{i}(p, \omega _{i})$$

 

이때, 둘 사이의 비례 관계를 나타내주는 함수가 바로 BRDF 입니다. 그러면 BRDF를 마저 유도해봅시다.

 

BRDF 함수를 \(f(p, \omega _{i}, \omega _{o})\)로 나타낸다면, 위에 식은 아래와 같습니다.

$$dL_{o}(p,\omega _{o}) =f(p, \omega _{i}, \omega _{o})dE_{i}(p, \omega _{i})$$

또한, 아까 구했던 \(dE = L\cos{\theta}\)를 위 식에 대입을 한다면, 나오는 식은 아래와 같습니다.

$$dL_{o}(p,\omega _{o}) =f_{i}(p, \omega _{o}, \omega _{i}) L_{i}(p, \omega _{i})\cos{\theta}_{i}d\omega _{i}
$$

위 식을 BRDF 함수에 대해서 정리하자면 최종적인 BRDF 함수 \(f(p, \omega _{i}, \omega _{o})\)는 아래와 같습니다.

$$f(p, \omega _{i}, \omega _{o}) = \frac{dL_{o}(p, \omega _{o})}{L_{i}(p, \omega _{i})\cos{\theta}_{i}d\omega _{i}}$$

 

또한, 위 식에서 \(\omega _{o}\) 방향으로 향하는 Radiance \(\L_{o}(p, \omega _{o})\)는 각 변을 적분해서 구할 수 있습니다. 결과는 아래와 같습니다.

 

$$L_{o}(p,\omega _{o}) = \int f(p, w_{i}, w_{o})L_{i}(p, \omega _{i})\cos{\theta}_{i}d\omega _{i}$$

 

이 식을 풀어서 설명하면 아래와 같습니다.

 

한 점에서 방출되는 Radiance는 모든 방향에서 들어오는 Radiance의 합과 동일하다

 

또한, BRDF에는 여러 유용한 성질이 있습니다. 

 

Reciprocity(상호성)

BRDF의 입사 방향인 \(d\omega _{i}\)와 출사 방향인 \(\omega _{o}\)는 서로 바뀌어도 BRDF의 결과는 동일합니다.

$$f(p, \omega _{i}, \omega _{o}) = f(p, \omega _{o}, \omega _{i})$$

Conservation of energy(에너지 보존성)

빛이 표면에 도달하면, 이 빛의 일부는 표면에 흡수되고 일부는 다시 반사되고 또한 일부는 열로 변환됩니다. 이 모든 현상의 에너지를 더하면 처음 빛이 표면에 도달했을 때에 에너지와 동일합니다. 

 


이번에는 Reflectance(반사율)에 대해서 알아봅시다. Reflectance는 아래와 같습니다.

 

$$Reflectance = \frac{Radiant Exitant}{Irradiance}$$

 

즉 한 영역으로 들어오는 Flux Density와 한 영역에서 방출되는 Flux Density의 비율을 나타내는 것이 Reflectance입니다. 또한 Reflectance는 기호 \(\rho\)로 나타내며, 일반적인 식은 아래와 같습니다.

 

$$\rho = \frac{M}{E} = \frac{\frac{d\Phi_{o}}{dA}}{\frac{d\Phi_{i}}{dA}} = \frac{d\Phi_{o}}{d\Phi_{i}}$$

 

또한 위에서 우리는 \(E = \int{L\cos{\theta}}d\omega\)라는 사실과 이전 편에서는 \(E=\frac{d\Phi}{dA}\)라는 사실을 확인했습니다. 그렇다면 이를 대입한다면 식은 아래와 같을 것입니다.

 

$$\frac{d\Phi_{o}}{d\Phi_{i}} = \frac{dA\int{L_{o}(p, \omega _{o})\cos{\theta} _{o}d\omega _{o}}}{dA\int{L_{i}(p, \omega _{i})\cos{\theta} _{i}d\omega _{i}}}$$

 

위에서 \(L_{o}(p,\omega _{o}) = \int f(p, w_{i}, w_{o})L_{i}(p, \omega _{i})\cos{\theta}_{i}d\omega _{i}\) 라는 것을 확인했습니다. 이를 위 식에 대입하게 된다면 최종적인 식은 아래와 같습니다. 

 

$$\rho(p, \Omega _{i}, \Omega _{o})=\frac{\int_{\Omega _{o}}\int_{\Omega _{i}}{f(p, \omega _{i}, \omega _{o})L _{i}\cos{\theta} _{i}\cos{\theta} _{o}d\omega _{i}d\omega _{o}}}{\int_{\Omega _{i}}{L_{i}(p, \omega _{i})\cos {\theta} _{i}d\omega _{i}}}$$