Physically Based Lighting

2012 May. written by 이주형 (Lee Ju Hyung)

이 문서는 사실적인 3D 그래픽 장면의 조명 계산을 위해 필요한 기초 개념들을 우선 알아보고, 이후 그것의 물리적 상호작용이 어떻게 최종 조명 방정식으로 모델링 될 수 있는가에 대해서 알아본다.

1. 빛의 기본 단위

빛의 성질에 대한 기본적인 단위의 개념부터 정리해보자.

1.1 Radiant Power or Flux (복사 선속)

단위 시간 동안 흐르는 에너지량 (J/s = Watt) 으로 측정한다. 기호로는 \Phi (phi) 를 쓴다.

1.2 Irradiance (복사 조도)

단위 면적 당 입사하는 flux.

    \[E = \frac{d\Phi}{dA}\]

1.3 Radiant Exitance or Radiosity (복사 발산도)

단위 면적 당 방출하는 flux.

    \[B = \frac{d\Phi}{dA}\]

1.4 Solid Angle (입체각)

3차원에서 각도를 나타내는 단위 구면 위의 면적. (단위는 steradian)
radian 이 단위 원의 호의 길이를 나타내는 것처럼, steradian 은 단위 구면의 면적을 나타낸다. 반지름이 r 인 원에서 호의 길이가 s 일때 radian \theta = \frac{s}{r} 인 것처럼, 반지름이 r 인 구면위의 면적이 B 일때 steradian \omega = \frac{B}{r^2} 이다.1

구면 좌표계로 나타내는 반지름이 r 인 구의 solid angle 의 미분소 (differential) 는,

    \[dB = r^2 \sin\theta d\phi d\theta\]

단위 구면의 solid angle 의 미분소 (differential) 는,

    \[d\omega = \frac{dB}{r^2} = \sin\theta d\phi d\theta\]

여기서 \theta 는 원점에서 양의 z 축과 이루는 각 (polar angle), \phi 는 양의 x 축과 이루는 각 (azimuth angle) 을 나타낸다.

1.5 Radiant Intensity (복사 강도)

방향성을 포함하는 단위 solid angle 당 flux.

    \[I = \frac{d\Phi}{d\omega}\]

1.6 Radiance (복사 휘도)

방향성을 포함하는 단위 solid angle 당 단위 면적의 투영 면적 당 flux.

표면의 관점에서 보면, 단위 면적의 투영 면적 당 들어오는 (또는 나가는) 단위 solid angle 당 flux.

    \[L(\omega) = \frac{d}{d\omega} \left( \frac{d\Phi}{dA \cos\theta} \right)\]

여기서 \omega 는 방향을 나타낸다.

Radiance L 을 반구 영역에 대해서 적분하면, 반구 영역의 모든 방향으로부터 점 p 의 미소 면적으로 들어오는 irradiance E 가 된다. (또는 점 p 에서 모든 반구 영역으로 발산하는 radiosity)

    \[E(n) = \int_{\Omega} L(\omega) \cos\theta d\omega\]

\Omega 는 반구 영역을 나타낸다. 그리고,

    \[d\omega = \sin\theta d\theta d\phi\]

이므로 solid angle 의 적분식을 구면 좌표계의 적분식으로 바꾸면,

    \[E(n) = \int_0^{2\pi} \int_0^{\pi / 2} L(\theta, \phi) \cos\theta \sin\theta d\theta d\phi\]

이번에는 외부의 표면 S 에서 발산하는 에너지가 점 p 에 도달할 때의 irradiance 를 구해보자.

d\omega 에 투영되는 외부의 미소 영역 (dS) 은

    \[d\omega = \frac{dS cos\theta_o}{r^2}\]

여기서 rpq 사이의 거리다.

이제 외부의 모든 표면 영역(S) 에 대해 적분하면 S 로부터 들어오는 점 p 의 irradiance 가 된다.

    \[E(n) = \int_{S} L_o \cos\theta_i \frac{\cos\theta_o dS}{r^2}\]

여기서 \theta_i 는 점 p 로의 입사각, \theta_o 는 외부 표면의 normal 과 p 방향 벡터와의 사잇각, L_oq 에서 p 방향으로의 radiance 다.

2. BRDF (Bidirectional Reflectance Distribution Function)

BRDF 란 입사광과 반사광에 대한 양방향 반사율 분포 함수를 말한다. 좀 더 정확히 말하면 입사 방향으로부터 표면에 도달하는 irradiance 가 반사 방향으로 나가는 radiance 의 비율을 나타내는 함수.

\omega_i 방향의 미소 입체각에서 표면 위의 점 x 위치의 미소 면적에 입사하는 2 미소 irradiance 는,

    \[dE(\omega_i) = L_i(\omega_i) \cos\theta_i d\omega_i\]

이것은 어떤 방향으로 반사되어 나가는 미소 radiance 와 비례 관계에 있다.

    \[dE(\omega_i) \propto dL_o(p, \omega_o)\]

이것의 비율을 나타낸 함수가 바로 BRDF 다.

    \[f_r(\omega_o, \omega_i) = \frac{dL_o(\omega_o)}{dE(\omega_i)} = \frac{dL_o(\omega_o)}{L_i(\omega_i) \cos\theta_i d\omega_i}\]

쉽게 말해 BRDF 는 특정 방향에서 입사하는 복사 조도 (irradiance) 에 대한 또 다른 특정 방향으로 반사하는 복사 휘도 (radiance) 의 비율을 나타내는 함수다.

BRDF 의 정의에 의거해서 특정 방향 (관찰자 방향) 으로 반사되는 radiance 를 구해보자. 반구의 모든 방향으로부터 받는 irradiance 들로부터 \omega_o 방향으로만 반사되는 radiance 를 구하면,3

    \[\begin{aligned} L_o(\omega_o) &= \int_{\Omega} f_r(\omega_o, \omega_i) dE(\omega_i)\\ &= \int_{\Omega} f_r(\omega_o, \omega_i) L_i(\omega_i) \cos\theta_i d\omega_i\\ \end{aligned}\]

물리적 법칙을 따르는 BRDF 는 다음의 성질들을 가지고 있다.

4차원 함수: BRDF 는 표면의 각 점에서 정의되는 4차원 함수다. 입사 방향을 나타내는 \omega_i 가 2차원, 반사 방향을 나타내는 \omega_o 가 2차원을 이룬다.

대부분의 물체는 표면이 완벽하게 매끄럽지 않으므로 약간의 비등방성 (anisotropic) 재질을 가지고 있다. 하지만 재질이 이상적인 등방성(isotropic) 일 경우 방위각 (azimuth angle) \phi 에 해당하는 입사각에 영향을 받지 않으므로 4 개의 각도에 대한 자유도를 3 개로 줄일 수 도 있다.

양방향성 (Reciprocity): 입사 벡터와 반사 벡터가 서로 바뀌더라도 BRDF 는 같아야 한다는 것을 말한다.

    \[f_r(\omega_o, \omega_i) = f_r(\omega_i, \omega_o)\]

에너지 보존 (Energy conservation): 단위 표면에서 반사되는 모든 flux 는 입사된 모든 flux 보다 작거나 같아야 한다는 것을 말한다. 나중에 좀 더 자세히 수식으로 알아보겠다.

2.1 Reflectance

단위 표면에 입사되는 모든 flux 즉, irradiance 는,

    \[E = \int_{\Omega}L_i \cos\theta_i d\omega_i\]

반사 radiance 함수 L_o 를 안다고 가정하면 반사되는 모든 flux, 즉 radiosity 는,

    \[M = \int_{\Omega}L_o \cos\theta_o d\omega_o\]

에너지가 보존됨에 따라 반사하는 총 flux 는 입사된 총 flux 를 넘지 못한다. 즉, 반사율은 1 을 넘지 못한다.

    \[\frac{M}{E} \le 1\]

우리는 이미 BRDF 로부터 아래의 식이 성립함을 알고 있다.

    \[dL_o = f_r(\omega_o, \omega_i) L_i \cos\theta_i d\omega_i\]

위의 식을 다시 설명하면, dL_o\omega_i 방향에서 dA 에 기여한 irradiance 가 \omega_o 방향으로 반사하는 미소 radiance 를 말한다.

이제 L_o 를 얻기 위해 위의 식을 적분하면,

    \[L_o = \int_{\Omega} f_r(\omega_o, \omega_i) L_i \cos\theta_i d\omega_i\]

M 에 대입하면,

    \[M = \int_{\Omega} \left( \int_{\Omega} f_r(\omega_o, \omega_i) L_i \cos\theta_i d\omega_i \right) \cos\theta_o d\omega_o\]

결국 에너지 보존성에 의해 BRDF 는 임의의 입사 radiance 함수 L_i 에 대해서 아래의 식을 만족해야 한다.

    \[\frac{M}{E} = \frac{\int_{\Omega} \left( \int_{\Omega} f_r(\omega_o, \omega_i) L_i \cos\theta_i d\omega_i \right) \cos\theta_o d\omega_o}{\int_{\Omega}L_i \cos\theta_i d\omega_i} \le 1\]

위의 부등식은 모든 방향의 L_i 에 대해서 성립해야 한다. 만약 L_i 가 특정 방향 (\omega_k) 에 대한 적당한 \delta 함수 L_i(\omega_i) = L_k \delta(\omega_i - \omega_k) 라고 가정하면 식이 간단해진다.

    \[\frac{M}{E} = \frac{\int_{\Omega} \left( f_r(\omega_o, \omega_k) L_k\cos\theta_k \right) \cos\theta_o d\omega_o}{ L_k\cos\theta_k } \le 1\]

(1)   \[\forall \omega_k : \int_{\Omega} f_r(\omega_o, \omega_k) \cos\theta_o d\omega_o \le 1 \]

위의 식은 특정 입사 방향 (\omega_k) radiance 에 대한 반사율을 나타내고, 에너지 보존의 필요조건이다. 하지만 또한 모든 입사 방향에 대한 충분조건이기도 한데, 그 이유는 서로 다른 방향의 입사 radiance 는 영향을 주지 않기 때문이다.

2.2 Ideal Diffuse Reflection

완전한 diffuse 반사는 입사광을 입사각과 상관없이 반구의 모든 방향으로 산란한다. 즉, 관찰자가 어느 방향에서 보더라도 같은 값을 가지므로 BRDF 함수는 상수이고, 적분식 밖으로 빠질 수 있다.

    \[\begin{aligned} L_o(\omega_o) &= \int_{\Omega} f_r(\omega_o, \omega_i) L_i(\omega_i) \cos\theta_i d\omega_i\\ &= f_r(\omega_o, \omega_i) \int_{\Omega} L_i(\omega_i) \cos\theta_i d\omega_i\\ &= f_r E\\ \end{aligned}\]

에너지 보존성을 지키려면 식 (1) 에 의해서,

    \[\begin{aligned} \int_{\Omega} f_r(\omega_o, \omega_i) \cos\theta_o d\omega_o &= f_r \int_{\Omega} \cos\theta_o d\omega_o \\ &= f_r \int_{0}^{2\pi} \int_{0}^{\frac{\pi}{2}} \cos\theta \sin\theta d\theta d\phi \\ &= f_r \int_{0}^{2\pi} \left|-\frac{\cos2\theta}{4}\right|_{0}^{\frac{\pi}{2} d\phi \\ &= f_r \int_{0}^{2\pi} \frac{1}{2} d\phi \\ &= f_r \pi \le 1 \end{aligned}\]

    \[\therefore f_r = \frac{\rho_d}{\pi}\]

여기서 \rho_d 는 diffuse 반사율을 뜻하는 0~1 사이의 albedo 값이다.

2.3 Ideal Specular Reflection

완전한 specular (거울) 반사는 입사각과 반사각의 방위각이 같고, 입사된 flux 를 그대로 반사한다. 즉,

    \[\theta_o = \theta_i\]

    \[\phi_o = \phi_i \pm \pi\]

반사 radiance 를 식으로 나타내면,

    \[L_o(\theta_o, \phi_o) = L_i(\theta_o, \phi_o \pm \pi)\]

\delta 함수를 사용해서 적분형태로 나타내면,

    \[\begin{aligned} L_o(\theta_o, \phi_o) &= L_i(\theta_o, \phi_o \pm \pi)\\ &= \int_{\Omega} \delta(\cos\theta_i - \cos\theta_o) \delta(\phi_i - (\phi_o \pm \pi)) L_i(\theta_i, \phi_i) d\omega_i\\ &= \int_{\Omega} \frac{\delta(\cos\theta_i - \cos\theta_o) \delta(\phi_i - (\phi_o \pm \pi))}{\cos\theta_i} L_i(\theta_i, \phi_i) \cos\theta_i d\omega_i \end{aligned}\]

그러므로 f_r 은,

    \[f_r = \frac{\delta(\cos\theta_i - \cos\theta_o) \delta(\phi_i - (\phi_o \pm \pi))}{\cos\theta_i}\]

거울 반사는 입사광을 그대로 반사하므로 당연히 에너지는 보존된다.

3. Shading Models

산란 반사와 거울 반사는 앞에서 설명하였다. 그러나 실제 사물의 재질들은 완벽하게 매끄러워 거울 반사를 하거나, 완벽하게 무뎌서 산란 반사를 하지 않는다. 결국 실세계의 BRDF 는, 어떤 방향으로부터 빛이 입사해 들어올 때 복잡한 분산(distribution)의 과정을 거쳐 반사되는 것을 설명할 수 있어야 한다.

여기서부터는 빛의 입사 방향 벡터를 L 로, 관찰자 방향 벡터를 V 로 나타낸다.

3.1 Lambert’s model

Lambert’s diffuse 반사는 여러 BRDF 기반 쉐이딩 모델들 중 가장 간단한 모델이다. 빛의 입사각에 상관없이 완벽하게 산란을 가정하는 모델로, 공식은 앞에서 설명한 것과 같다. normalization factor 는 \frac{1}{\pi}

    \[f_r = \frac{\rho_d}{\pi}\]

3.2 Phong model

가장 널리 알려진 라이팅 모델인 Phong 모델은 Lambert’s 산란 반사모델과 섞인 모델로, 반사된 빛의 일부는 산란을 나머지 일부는 specular 반사를 한다. 일단 순수한 specular 반사를 하는 Phong 모델의 BRDF 4 는,

    \[f_r = c \frac{(R \cdot V)^n}{N \cdot L}\]

여기서 N 은 표면의 normal 을 나타내고, RL 의 반사 벡터을 나타낸다.
R 은 다음과 같이 계산한다.

    \[R = 2 (N \cdot L)N - L\]

임의의 L 에 대해서 LN 이 같은 방향일 때 LR 도 같은 방향이고, Phong specular 반사율은 최대가 된다.

반사율이 가장 큰 값이 나오도록 하는 입사각에 대해서만 만족하면 되므로 이때의 반사율은,

    \[c\int_{\Omega} (\cos\theta_o)^{n+1} d\omega_o\]

구면좌표계 적분식으로 나타내면,

    \[c\int_0^{2\pi} \int_0^{\pi/2} (\cos\theta_o)^{n+1} \sin\theta_o d\theta_o d\phi_o = 2\pi c\int_0^{\pi/2} (\cos\theta_o)^{n+1} \sin\theta_o d\theta_o = 2\pi c T\]

T 에 대해서 f = (\cos\theta_o)^{n+1}, \dot{g} = \sin\theta_o 로 놓고 부분적분을 하면,

    \[\begin{aligned} T &= \left[(\cos\theta_o)^{n+1}(-\cos\theta_o)\right]_0^{\pi/2} - \int_0^{\pi/2} (n+1)(\cos\theta_o)^n (-\sin\theta_o) (-\cos\theta_o) d\theta_o\\ &= 1 - (n+1) \int_0^{\pi/2} (\cos\theta_o)^{n+1} (\sin\theta_o) d\theta_o\\ &= 1 - (n+1) T\\ &= \frac{1}{n+2}\\ \end{aligned}\]

따라서 반사율은

    \[\frac{2\pi}{n+2}c \le 1\]

normalization factor c\frac{n+2}{2\pi} 가 된다.

최종적으로 에너지 보존을 만족하는 Phong model 의 BRDF 는 다음와 같다.

    \[f_r = \frac{\rho_d}{\pi} + \rho_s \frac{(R \cdot V)^n}{N \cdot L}\frac{n+2}{2\pi}\]

여기서 \rho_d + \rho_s \le 1 을 만족해야 한다.

3.3 Blinn-Phong model

Blinn-Phong 모델은 Phong 모델의 R 벡터 대신에 H = \frac{L + V}{\| L + V \|} 를 사용한다. H 벡터가 R 벡터보다 계산이 더 간단해서 실시간 렌더링 쪽에서는 Blinn-Phong 모델이 인기가 더 많았다.

순수한 specular 반사를 하는 Blinn-Phong 모델의 BRDF 는,

    \[f_r = c \frac{(N \cdot H)^n}{N \cdot L}\]

Phong model 과 마찬가지로 LN 이 같은 방향일 때 LR 도 같은 방향이고, Blinn-Phong specular 반사율은 최대가 된다. L = N 일때 NH 사잇각은 NV 사잇각의 정확히 절반이다. 이때의 반사율은,

    \[c\int_{\Omega} (\cos\theta_h)^{n} \cos\theta_o d\omega_o =  c\int_{\Omega} \left(\cos\frac{\theta_o}{2}\right)^{n} \cos\theta_o d\omega_o\]

구면좌표계 적분식으로 나타내면,

    \[c\int_0^{2\pi} \int_0^{\pi/2} \left(\cos\frac{\theta_o}{2}\right)^n \cos\theta_o \sin\theta_o d\theta_o d\phi_o =  2\pi c\int_0^{\pi/2} \left(\cos\frac{\theta_o}{2}\right)^n \cos\theta_o \sin\theta_o d\theta_o\]

\|\cos\frac{\theta_o}{2}\| = \sqrt{\frac{1+\cos\theta_o}{2}} 를 적용하고, \cos\theta_o = t, -\sin\theta_o d\theta_o = dt 로 치환하면,

    \[2\pi c\int_0^1 \left( \frac{1+t}{2} \right)^{n/2} t dt\]

f = t, \dot{g} = \left( \frac{1+t}{2} \right)^{n/2} 로 놓고 부분적분을 하면,

    \[\begin{aligned} &2\pi c\left( \left[ \frac{4}{n+2} \left( \frac{1+t}{2} \right)^{(n+2)/2} t \right]_0^1 - \int_0^1 \frac{4}{n+2} \left( \frac{1+t}{2} \right)^{(n+4)/2} dt \right)\\ &=2\pi c\left( \frac{4}{n+2} - \frac{4}{n+2} \left[ \frac{4}{n+4} \left(\frac{1+t}{2}\right)^{(n+4)/2} \right]_0^1 \right)\\ &=\frac{8\pi}{n+2}c \left( 1 - \frac{4}{n+4} \left( 1 - \left(\frac{1}{2}\right)^{(n+4)/2} \right) \right)\\ &=\frac{8\pi(n+2^{-n/2})}{(n+2)(n+4)}c \le 1 \end{aligned}\]

normalization factor 는 \frac{(n+2)(n+4)}{8\pi(n+2^{-n/2})} 가 된다.
최종적으로 에너지 보존을 만족하는 Blinn-Phong model 의 BRDF 는 다음과 같다.

    \[f_r = \frac{\rho_d}{\pi} + \rho_s \frac{(N \cdot H)^n}{N \cdot L} \frac{(n+2)(n+4)}{8\pi(n+2^{-n/2})}\]

여기서 \rho_d + \rho_s \le 1 을 만족해야 한다.

3.4 Torrance-Sparrow specular model

반사 모델을 해석하는 기하-광학적 접근 방법 중 하나는 표면을 미세면 (Microfacets) 으로 가정하는 것이다. 금속 표면을 모델링 하기위해 Torrance 와 Sparrow (1967) 가 처음으로 개발한 미세면 기반 모델 중 하나이며 각각의 미세면을 완전한 거울(specular) 반사로 본다. 또한 이 모델은 미세면 분포 함수와 프레넬 항을 다른 함수로 독립적으로 대체할 수 있도록 하는 모델이다.

    \[f_r = \frac{D(H) G(L, V) F(L, H)}{4 (N \cdot L)(N \cdot V)}\]

D(H) : 미세면들의 normal 을 나타내는 H 방향의 분산을 나타낸다. 미세면에서 빛의 입사 방향과 관찰자 방향이 주어졌을 때 거울 반사는 H 방향 미세면들의 비율로 정해지기 때문이다. 분산 함수에 따라 다르게 표현가능하다.

Blinn Distribution:

    \[D_{\text{blinn}}(\theta_h, n) = \frac{n + 2}{2\pi} \cos^n\theta_h\]

여기서 n 은 smoothness 를 나타낸다.

Beckmann Distribution:

    \[D_{\text{beckmann}}(\theta_h, m) = \frac{1}{\pi m^2 \cos^4\theta_h} e^{-\frac{(tan\theta_h)^2}{m^2}}\]

여기서 m 은 roughness 를 나타낸다.

Ashikhmin and Shirley Distribution:

    \[D_{\text{as}}(\theta_h, \phi_h, n_x, n_y) = \frac{\sqrt{(n_x + 2)(n_y + 2)}}{2\pi} (\cos\theta_h)^{n_x \cos^2\phi_h + n_y \sin^2\phi_h}\]

여기서 n_x 는 H 의 방위각 (azimuthal angle) 에 대한 x 축 분산 exponent 를 나타내고, n_y 는 y 축 분산 exponent 를 나타낸다.

G(L, V) : 기하 감쇄항을 나타낸다. 미세면들은 이웃하는 미세면에 의해 보이지 않거나, 이웃하는 미세면의 그림자에 의해 가려질 수 있음을 표현한다.

Implicit Geometric term:

    \[G_{\text{implicit}}(L, V) = (N \cdot L) (N \cdot V)\]

Cook-Torrance Geometric term:

    \[G_{\text{ct}}(L, V) = \text{min}\left( 1, \frac{2(N \cdot H)(N \cdot V)}{V \cdot H}, \frac{2(N \cdot H)(N \cdot L)}{V \cdot H} \right)\]

Smith Geometric term:

    \[G_{\text{smith}}(L, V) = G_1(L) G_1(V)\]

G_1 함수에 따라 여러가지 버젼이 있다.

Beckmann’s G_1

    \[\begin{aligned} G_{1-\text{beckmann}}(V) &= \begin{cases} \frac{3.535c + 2.181c^2}{1 + 2.276c + 2.577c^2}\ &\text{if}\ c < 1.6 \\ 1 &\text{if}\ c \ge 1.6 \end{cases} \\ c &= \frac{N \cdot V}{m \sqrt{1 - (N \cdot V)^2}} \end{aligned}\]

Schlick’s G_1

    \[\begin{aligned} G_{1-\text{schlick}}(V) &= \frac{N \cdot V}{(N \cdot V)(1 - k) + k} \\ k &= m\sqrt{\frac{2}{\pi}} \end{aligned}\]

F(L, H) : 프레넬 항을 나타내며 Schlick’s 근사식이 주로 쓰인다.

    \[F(L, H) = F_0 + (1 - F_0)(1 - L \cdot H)^5\]

FL \cdot H 이 최대일 때 가장 작다. 즉 최저 Fresnel 반사율은 L = H = V 이어야 한다.
여기서 F_0 는 매질의 특성인 최저 반사율을 나타낸다. F_0 를 굴절율 (refractive index) n 으로 나타내면,

    \[F_0 = \left( \frac{1-n}{1+n} \right)^2\]

3.5 Oren-Nayar diffuse model

Oren-Nayar 모델은 Torrance-Sparrow 모델과 마찬가지로 미세면(microfacet) 기반 BRDF 모델이지만, Torrance-Sparrow 모델이 미세면을 완전한 거울(specular) 반사로 보는 반면, Oren-Nayar 모델은 완전한 diffuse 반사로 본다.

    \[f_r(\omega_i, \omega_o) = \frac{\rho}{\pi} \left(A + B \text{max} (0, cos(\phi_i - \phi_o) ) \sin \alpha \tan \beta \right)\]

여기서,

    \[\begin{aligned} A &= 1 - \frac{\sigma^2}{2(\sigma^2 + 0.33)}\\ B &= \frac{0.45 \sigma^2}{\sigma^2 + 0.09}\\ \alpha &= \text{max}(\theta_i, \theta_o)\\ \beta &= \text{min}(\theta_i, \theta_o)\\ \end{aligned}\]

여기서 \rho 는 표면의 albedo 값이고, \sigma 는 0~1 범위의 표면의 거친정도(roughness) 를 나타내는 값이다.

만약 \sigma = 0 이라면 A = 1, B = 0 이 되고, f_r 은,

    \[f_r(\omega_i, \omega_o) = \frac{\rho}{\pi}\]

가 되어 Lambert’s model 의 f_r 과 같아진다.

4. References

  1. Physically Based Rendering
    http://www.pbrt.org
  2. Advanced Global Illumination
    http://www.advancedglobalillumination.com
  3. Physically-Based Shading Models in Film and Game Production
    http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdf
  4. Microfacet based Bidirectional Reflectance Distribution Function
    http://jbit.net/~sparky/academic/mm_brdf.pdf
  5. Derivation of Phong and Blinn-Phong BRDF normalization factors
    http://www.farbrausch.de/~fg/articles/phong.pdf
  6. D3DBook:(Lighting) Cook-Torrance
    http://content.gpwiki.org/index.php/D3DBook:(Lighting)_Cook-Torrance
  7. Wrap Shading
    http://www.iro.umontreal.ca/~derek/files/jgt_wrap.pdf
  1. 앞으로 나올 수식에서 \omega 는 방향의 의미로도 쓰고 있으니 헷갈리지 말자
  2. 다른 문서에서는 \omega_i 대신에 x 와 함께 x\leftarrow\Psi 로 표기하기도 한다. \Psi 는 단위 입사 벡터를 나타낸다. \omega_ox\rightarrow\Theta 로 표기하고, \Theta 는 단위 반사 벡터를 나타낸다.
  3. 이것을 반사율 (Reflectance) 방정식이라고도 부른다
  4. 어째서 N \cdot L 로 나누어진 것인가에 대해서는 이것이 BRDF 함수이기 때문이다. 반구 영역에 대해 적분하여 L_o 를 구하면 specular 항은 우리에게 친숙한 (R \cdot V)^n 이 된다.

Leave a Reply

Your email address will not be published. Required fields are marked *