본문 바로가기
카테고리 없음

Light

by 서나하 2025. 10. 17.

우리가 어떤 물체를 볼 수 있는 이유?

빛이 그 물체의 표면과 상호작용했기 때문

거울처럼 빛을 반사시키거나 벽처럼 빛을 산란시키거나 반투명 유리처럼 빛을 굴절시킬 수 있음

(당연히 그것만 하는건 아님)

 

이렇게 물체 표면이 각각 빛에 대해 고유한 '반응 방식'을 갖는다는 관점에서,

Material은 빛과의 관계를 정의하는 존재라고 볼 수 있음

 

이 세상엔 겁나 다양한 재질들이 있음

그리고 각 재질은 빛의 방향, 파장 등에 따라 다르게 반응할 것

이 성격을 제각기 방식으로 정의하면 계산이 거의 불가능하니까 ...

렌더링에서는 공통적으로 이해할 수 있는 언어를 만든거임

 

난 표면이 어떻게 생겼는지 자세히 몰라도 됨

대신 그 표면이 "들어온 빛을 어떤 비율로 반사하느냐"를 하나의 함수로 표현해줘

나는 그 함수만 알면 빛과의 상호작용을 계산할 수 있어

BRDF로 surface의 성격을 통일된 방식으로 설명할 수 있는 것

 

여러 물체가 있을 때, 각각의 표면이 빛을 다르게 반사한다는 사실을 알고 있음

하지만 매번 그 물리적인 과정을 미시적으로 계산하는 것은 비효율적

그래서 표면의 고유한 성질(roughness, reflectivity, metallic, specular 등)을 일정한 파라미터 형태로 통일해 정의하고,

BRDF라는 공통된 함수 형태에 이 값을 대입!

그러면 렌더러는 빛이 들어왔을 때, 이 표면이 어떻게 반응할지를 같은 수식(distribution function)으로 계산할 수 있게 된다.

한마디로 BRDF는 표면의 고유 성격을 수학적으로 번역한 인터페이스다 ~

 

빛이 물체 표면에 도달했을 때,

표면은 자기 성격(material property)에 따라

— Reflection (반사) — 빛이 표면에서 되돌아감

— Transmission (굴절/투과) — 빛이 표면을 통과

— Absorption (흡수)  — 빛이 표면 내부로 흡수되어 에너지로 변함

대개 이런 행동을 취함

BR(reflectance)DF는 그 중에 반사만을 다루는 함수인거임

$$ f_r(\omega_i,\omega_o) $$

"입사 방향(incident direction) $\omega_i$에서 들어온 빛이 표면에서 얼마나, 어느 방향($\omega_o$)으로 반사되는가?"

이 outgoing direction이 바로 관측자 or 카메라로 향하는 방향이 될 것임

당연히 $\omega_i$, $\omega_o$는 표면 법선 벡터(surface normal)을 기준으로 정의됨

이 관점에서 BRDF는 두 방향 벡터 사이의 관계를 정의하는 함수다 ~

 

좀 더 구체적으로 보면..

$$ f_r(\omega_i,\omega_o)=\frac{dL_o(\omega_o)}{dE_i(\omega_i)} $$

— $ dL_o(\omega_o) $  — 출사 방향 $\omega_o$로 나가는 빛의 세기 (radiance)

— $ dE_i(\omega_i) $ — 입사 방향 $\omega_i$로 들어오는 빛의 세기 (irradiance)

즉, BRDF는 들어온 빛이 나갈 때 얼마나 반사되는지, 둘의 비율을 알려줌

(반사되어 나가는 복사 휘도의 미소 변화량과 표면에 입사하는 조도의 미소 변화량의 비율)

 

굳이 radiance에 대해서도 알아보자면

조도(irradiance)는 어떤 면적에 들어오는 에너지들의 합을 말하는거고

휘도(radiance)는 어떤 면적에서 나오는 에너지가 눈이나 카메라에 solid angle을 가진 형태로 들어오는 양을 말함

디테일 궁금한건 이거(https://lifeisforu.tistory.com/367) 보면 됨

(조도와 휘도를 구분한 부분만 기록함)

조도: "비출 조", 휘도 : "빛날 휘"

광원에서 빛이 나오는걸 '비춘다'고 표현하고, 어딘가 부딪혀서 눈에 들어오는걸 '빛난다'고 표현함

그렇기에 표면에 들어온 빛의 양 X를 조도 (illuminance)라고 하고, 눈으로 들어온 빛의 양 Y를 휘도(luminance)라고 할 수 있음

표면에 도달한 빛이 모두 관찰자의 눈으로 들어오는게 아님. 어떤 매질의 표면에 입사한 빛이 흡수되거나 투과되거나 반사되거나 여러가지가 있지만, 우리는 어떤 물체에서 반사된 빛만을 인지할 수 있기 때문에 조도와 휘도를 구분해서 다루게 됨. 

(추가로 radiance와 luminance의 차이)

넓은 의미(전체영역)에서 빛을 다루기 위해 에너지를 측정하는 것을 방사측정(radiometry), 좁은 의미(가시영역)에서 빛을 다루기 위해 에너지를 측정하는 것을 광도측정(photometry)라고 함. 그래서 radiance, irradiance는 방사측정에서 사용하는 용어고 luminance, illuminance는 광도측정에서 사용하는 용어임. 그래서 어떤 영역의 파장들을 다루고 있는지, 에너지를 어떤 관점에서 바라보는지의 차이가 있지만 그래픽스에서는 빛을 photometry의 관점에서 다루고 있으니깨 큰 차이는 없다는 점.

 

렌더링 식에서 BRDF는 다음과 같이 들어감

$$ L_o(\omega_o) = \int_{H^2} f_r(\omega_i, \omega_o) \, L_i(\omega_i) \, (\omega_i \cdot n) \, d\omega_i $$

모든 입사 방향의 빛에 대해 BRDF를 계산한 결과를 합산하면,

그 표면 점에서 나가는 최종 빛($L_o$)을 얻을 수 있다.!!!

구체적으로는..

— $ L_o(\omega_o) $: 나가는 빛

— $ L_i(\omega_i) $: 들어오는 광원의 세기

— $ f_r(\omega_i, \omega_o) $: 들어온 빛이 반사되어 나가는 비율

— $ (\omega_i \cdot n) $: 입사각이 법선에 얼마나 수직인지

— $ d\omega_i $: 입사 방향의 미소 영역 (적분 대상)

추상화한 버전은 다음과 같음

$$ Outgoing\ Light = \int f_r * (n \cdot l) * Incoming\ Light $$

표면의 한 지점에서 특정 방향(관찰자 방향)으로 반사되어 나가는 복사 휘도는, 입사 방향(l)과 출사 방향(n)에 따라 빛이 어떻게 반사되는지 정의하는 물질의 특성 함수를 통해 구한 빛이 반사되어 나가는 비율에 광원에서 표면으로 들어오는 입사 복사 휘도(강도)에 표면 법선과 입사광 방향 사이의 내적을 통해 구한,, 표면에 도달하는 빛의 양에 대한 투영 계수라는거임. 

——

Lambert Law

BRDF의 핵심 원리 중 하나는 입사광의 복사 휘도를 조도로 변환하는 것. 조도란 단위 표면적당 도달하는 에너지.

광원에서 오는 빛의 강도가 표면에 실제로 전달되는 에너지의 양은 빛이 표면에 대해 수직으로 입사하는지, 비스듬히 입사하는지에 따라 달라짐

당연히 빛이 표면에 비스듬히 입사할수록(입사각이 클수록) 동일한 광선 다발이 더 넓은 표면적에 퍼지게 됨. 

이걸 기하학적 투영(foreshortering)이라고 하는데, 이러한 기하학적 투영 효과를 입사각의 코사인 값이 설명해주니까, 입사광의 강도를 표면의 단위 면적당 실제 도달하는 에너지로 변환하기 위한 기하학적 투영 계수를 $n \cdot l$로 정의한다 ~

——

(정확히는 그 표면에서 나오는 빛의 물리량(radiance)이라 빛의 세기를 의미하지만 렌더링 결과로는 색이 됨)

이 값을 픽셀의 색으로 연결되는 과정은 RGB와 스펙트럼을 이해해야 함

현실의 빛은? 단일 숫자가 아니라 파장별로 다른 세기를 가진 스펙트럼

$$ L_o(\omega_o, \lambda) $$

파장마다 세기가 다른데, 이걸 전 파장에 대해 적분하면 우리가 눈으로 인식하는 색이 나옴

$$ Perceived\ Color = \int L_o(\omega_o, \lambda)Sensitivity(\lambda)d\lambda $$

스펙트럼 전체를 계산할수는 없으니 세 가지 대표 파장대만 남긴게 RGB인거 (그냥 3개를 픽한건 아니고 눈과 관련됨_설명)

그치만 위 식으로 얻는 RGB는 여전히 물리 단위의 에너지 값.

이걸 카메라 센서나 모니터가 표현하도록 Exposure 조정 - Tone Mapping - Gamma 보정 - sRGB 변환의 후처리 과정을 거침

*이건 나중에 알아볼것

 

결론

Bi — 입사, 반사 양방향을 다루고  $ f_r(\omega_i,\omega_o) = f_r(\omega_o,\omega_i) $ — Helmholtz Reciprocity (물리적 대칭성)

Directional — 방향성을 가지며

Reflectance  얼마나 반사되는지(반사율)가 정의되고

Distribution Function 그 반사가 어떻게 분포하는지를 나타내는 함수

즉, 빛이 한 방향에서 들어오고 다른 방향으로 나갈 때의 반사 비율을 나타내는 함수

양방향이 강조되는 이유는 이게 성립해야 물리적으로 일관된 반사가 되고, 빛의 전달 경로를 앞으로 계산하든 뒤로 계산하든 결과가 같아지기 때문. Phong 모델은 HR을 근사적으로 만족하게 됨. 

 

추가로, 이렇게 BRDF가 물체 표면 재질의 성격들 중 Reflectance에 대한 설명을 해줄 수 있는 함수라면 

BT(Transmission)DF는 투명 물질을 통과할 때 어떻게 퍼지는지,

BS(Scattering)DF는 반사와 투과를 모두 다루는 함수,

BA(Absorption)DF는 빛이 흡수되는 성질을 보여주고,

BSSR(Surface Scattering Reflectance)DF는 빛이 표면 근처에서 산란(분산)되는 성격을 보여줌 (BSDF와는 다르게 빛이 한 점에서 들어와서 그 근처의 다른 점에서 나올 수도 있다는 걸 설명) 투명층 + 불투명층이 섞여있는 표면을 정의하기 위해서는 이렇게 정교한 모델이 필요함

 


BRDF는 surface의 타입에 따라 빛이 반사되는 상황(퍼져나가는 모양)을 수식적으로 표현해주는 distribution을 나타낸다.

그 중에 가장 극단적인 차이를 보이는 두 가지의 서로 다른 surface type(smooth/rough)에 대해 생각해보자

smooth하다는건 뭘까

현상적으로는 실제로 봤을 때 매끈하다? 반질반질하다? 정도로 말할 수 있는데

형상적으로, 실제로, 물리적으로 가장 스무스하다는 것은 surface가 균일하고 모양이 flat하다는 것

손이 느끼는 smoothness와 빛이 느끼는 smoothness는 레벨이 다르다는 점을 알아야 함

Microfacet Theory

표면이 매끄럽거나 거칠다는 현상적인 인식은 물리 기반 모델링에서 Microfacet model이라는 개념으로 설명됨

1. 현상적 인식 — 표면의 반짝임(specular highlihg)이 심하고 매끈하게 보일수록 매끄러운 표면으로 판단됨

2. 물리적/미시적 구조(Micro-srface) — 현실의 모든 표면은 만져보면 거칠기가 있지만, 빛의 반사 특성을 결정하는 것은 아주 작은 표면의 거칠기(micro-surface roughness). 이건 우리 눈으로 울퉁불퉁함을 알아차리기 힘든 영역.

그래서 마이크로패싯 모델은 거시적인 표면(macrosurface)이 무작위로 방향이 정렬된 작은 반사 조각(microfacets)들로 이루어져 있다고 가정함!

그리고 거칠기(roughness)라는 매개변수($\alpha$)는 이 작은 마이크로패싯들이 얼마나 넓은 분포로 흩어져 있는지를 결정. smooth surface는 마이크로패싯의 각도 분포가 좁고(narrow distribution), rough surface는 분포가 넓음. (wide distribution)

3. 마이크로패싯의 기본 가정 — 각각의 마이크로패싯은 완전한 거울(ideal)처럼 작동하여, 들어온 빛을 단일 방향으로만 반사시킨다. 

 

결론: 우리가 macrosurface의 한 점을 볼 때, 여러 갈래로 빛이 퍼져나가는 것처럼 보이는 현상(glossy/diffuse reflection)은 그 지점 아래에 있는 수많은 마이크로패싯들로부터 반사된 개별적인 정반사 광선들을 통계적으로 평균내거나 합산한 결과임. 참고로 BRDF는 표면에서 빛이 반사되는 방향의 분포 그래프로 생각할 수 있는데, 이 BRDF 로브는 microfacet 레벨에서 생긴 분포를 macrosurface 수준에서 본 결과임. 그래서 매끄러울수록 정반사 방향으로 좁고 강하게 집중되는 뾰족한 모양을 갖는거임. (반대로 표면이 거칠수록 넓게 퍼짐)


surface와 빛과의 상호작용의 성질을 표현하는 함수(모델)을 가지고, 재질을 표현하게 됨

우리가 하고 싶은 일

: 빛이 어떤 표면에 닿았을 때, 이 표면이 빛을 어떻게 반사해서 내 눈에 들어오는지를 계산하는거

근데 light source에는 진짜 light source도 있고 반사된 빛을 이용해 다른 물체를 비춤으로써 light source의 역할을 하는 친구도 있음. 결국 모든 표면은 잠정적인 Light re-emitter가 됨. 그래서 빛의 반사 모델(BRDF)을 만들면 그 표면이 마치 새로운 secondary light source처럼 동작할 수 있는거.

다시 정리하면.. 우리가 어차피 물체를 light source인 것처럼 다뤄서, (그 가짜 light source는 다른 물체의 BRDF에서 계산된 값을 가져와서 해야하는거니까) light source의 표현 방식과 surface에서 빛이 반사되어 나가는 표현 방식을 통일하자는거. 통일해야 반사되어 나가는 그 빛이 다시 light source처럼 쓰이는 것을 고려해서 (모든걸 light source라고 때려넣고) 계산하기 좋음. 그래서 phong model은 light source가 아닌 surface와 빛과의 interaction을 설명하는건데, 그 interaction을 설명하는 데에 사용되는 component가 빛이고, surface의 성격을 diffuse term, abient term, specular term으로 나누는거.

이걸 수학적으로 다루기 위해 BRDF라는 함수를 모델링하는거고, 그 함수 중 가장 단순하면서 직관적으로 잘 동작하는게 Phong 모델 (여러 모델이 있는데.. 이 모델들이 하는 일은 동일함. 입사된 빛이 어느 방향으로, 얼마나 반사되는가?를 계산한다는 점. 단지 각 모델이 그걸 계산하는 방식(근사 수준)이 다른겨)

 

댓글