DXR Pipeline에서 ray intersection 이후 무엇이 처리되어야 하는가?
이전 Ray Tracing 글에서는 DXR, Shader Table, RTPSO등의 ray tracing pipeline의 실행 구조를 정리했다.
단순히 ray를 쏘고 intersection을 찾는 것만으로 이미지는 만들어지지 않는다.
교차 결과로 얻은 표면 위의 지점, 즉 shading point에서 어떤 빛의 물리량을 평가해야 하는지 이해해야 한다.
또한, directional light, point light, spot light, area light처럼
광원 모델이 달라질 때 radiance, irradiance, radiant intensity 같은 단위가
어떻게 다르게 쓰이는지도 구분해야 한다.
이번 글에서는 실험의 일환으로 Mitsuba 3 Renderer 를 통해
radiance, irradiance, radiant intensity를 정리하고,
sphere area light와 disk area light, point light가 rendering equation 안에서 어떻게 다르게 해석되는지 확인한다.
특히, area light의 크기를 줄이면서 radiance를 보정하면 point light 결과에 수렴하는 과정을 실험적으로 관찰한다.
Mitsuba Renderer 3를 사용하는 이유

https://www.mitsuba-renderer.org/
Mitsuba Renderer는 Physically Based Renderer로서
rasterization 기반의 실시간 렌더러라기보다는,
scene에서의 light transport를 물리 기반으로 시뮬레이션하는 연구 지향 렌더링 시스템에 가깝다.
Mitsuba 3는 renderer의 내부 구조를 파악하거나
light transport, material model, differentiable rendering 등을 실험하기 좋은 연구 목적성을 갖고 있는 렌더링 시스템이다.
Light Transport, 여러 빛의 Radiacne 속성을 통한 렌더링에 특화되어 있고
CPU와 CUDA 기반 GPU 실행 variant를 지원한다는 점도 실험용 렌더러로서의 장점이다.
아무래도 Unity나 Unreal Engine처럼 실시간 콘텐츠 제작을 위한 게임 엔진이나
Blender나 Maya처럼 아티스트 친화적인 DCC 툴에 내장된 렌더러와 성격이 사뭇 다르다.
이번 실험에서 Mitsuba를 선택한 이유는
렌더링 결과를 단순히 보기 좋게 만드는 것이 아니라,
이미지가 어떤 물리량의 계산 결과로 만들어지는지 추적하기 위해서이다.
특히, area light와 point light는 겉으로는 모두 장면을 밝히는 광원이지만,
렌더링 방정식 안에서는 radiance, radiant intensity, solid angle, distance에 따른 attenuation등이 서로 다르게 연결된다.
Mitsuba는 이러한 차이를 scene 설정과 render result를 통해 직접 커스터마이즈 하고 간략하게 비교하기 좋은 환경을 제공한다.
이번 글에서는 Mitsuba 자체의 전체 구조를 깊게 분석하기보다는,
Cornell Box scene을 바탕으로 area light와 point light의 차이를 확인하는 데 집중하며,
Mitsuba Renderer에 대한 자세한 Review는 추후 다른 섹션으로 정리해 보고자 한다.
왜 Radiometry 단위가 필요한가?
이전에 Light의 속성과 단위에 대해 정리하면서
radiometric과 photometric, flux, intensity, irradiance, radiance 같은 용어를 구분해 본 적이 있다.
https://nyumma02.tistory.com/61
빛의 측정과 단위(Radiometric, Photometric)
빛의 측정과 단위컴퓨터 그래픽스의 렌더링 분야 중 심화 기초에서 내용을 보다 보면flux, radiance, luminance, illuminance 같은 용어들이 함께 등장하고,측정 및 계산 단위도 W, lm, cd, lux, nit 등으로뒤섞
nyumma02.tistory.com
당시에는 이러한 개념들이 단순히 빛의 단위를 구분하기 위한 개념 정도로만 느껴졌지만,
ray tracing과 rendering equation을 공부하다 보면서
이 단위들이 실제 렌더링 계산의 각 항과 직접 연결된다는 것을 알게 되었다.
이전 섹션에서 언급하였듯이 Ray tracing에서 ray를 쏘고 intersection을 찾는 것만으로는
쉐이더에서 카메라의 pixel color가 결정되지 않는다.
교차 결과로 얻은 shading point에 대해서
어떤 방향에서 빛이 들어오는지,
표면이 그 빛을 얼마나 반사하는지,
그 결과 카메라 방향으로 얼마나 많은 radiance가 나가는지를 계산해야 한다.
이때 필요한 것이 radiometry 물리량이다.
빛을 단순히 밝다,어둡다 등의 추상적인 개념으로 보는 것이 아니라,
어느 방향으로 얼마나 전달되는지, 어떤 표면이 얼마나 받는지, 특정 방향으로 얼마나 나가는지를
정량적으로 구분해야 한다.
입체각(Solid Angle)
Raidometry에 대해서 다루기 전에 먼저 입체각(solid angle)을 간단하게 Reveiw 하도록 한다.
https://nyumma02.tistory.com/66
입체각은 특정 점 에서 어떤 면적 가 방향 공간상에서 얼마나 영역을 차지하는지를 나타내는 양이다.
기하학적으로는 를 중심으로 하는 단위 구 위에 투영된 면적으로 정의된다.
이때, 점 p에서 바라볼 수 있는 모든 방향은
길이가 1인 방향 벡터들의 집합으로 나타낼 수 있으며,
이를 단위구 S2라고 한다.

하나의 방향 는 3차원 공간의 벡터이지만,
길이가 항상 1로 고정되어 있으므로 실제 자유도는 두 개뿐이다.
이 두 자유도를 나타내기 위해 보통 구면좌표계(spherical coordinate)를 사용하며,
방향은 azimuth angle와 zenith angle 두개의 파라메터로 표현된다.

위의 식에 대해서

는 두가지 방법을 통해서 나타내어짐을 확인할 수 있었는데,
첫번째 방법으로는 입체각의 정량적인 정의에 의해서
호의 길이에 대해

이므로 zenith에 대해서는

이때 구면 좌표계에서는 r=1을 기준으로 하므로

azimuth에 대해서는 전체 구에 대한 반지름이 아닌 해당 zenith에 대해서의 반지름이 호의 길이가 되므로

를 통해 가로 x 세로의 patch로 하여 유도될 수 있었다.

입체각(solid angle)은 단위구에 대한 미소 면적이므로

두번째 방법으로는
벡터 미적분학에서의 좌표변환에 따른 면적 Jacboian을 통한 관점으로도 유도할 수 있고

에서

이고

이므로

를 똑같이 유도해 볼 수 있다.
Radiometry 기본 단위
우리가 눈으로 보는 빛은 전자기파에서 가시광선 영역의 파장의 빛만을 선택적으로 보고 있는 것이며
컴퓨터 그래픽스의 렌더링을 다루는 학문에서도 주로 가시광선 영역의 빛만을 선택적으로 다루게 된다.
Radiometry는 빛을 인간의 시각 반응이 아니라 물리적 에너지의 관점에서 측정하는 체계이다.
컴퓨터 그래픽스의 렌더링에서는 주로 가시광선 영역에서의 전자기파를 다루고
이를 RGB의 3가지 파라매터로 근사된 데이터로써 다루게 된다.
보다 엄밀한 물리기반의 그래픽스에는 SPD(Spectral Power Distribution)와 Polarization 등을 고려한 렌더링 방식이 있으나,
현재 논하고자 하는 바와 벗어난 영역이므로 지금은 다루지 않도록 한다.

렌더링에서 직접 다루는 것은 보통 광자 하나의 에너지라기보다
많은 빛 에너지가 시간, 면적, 방향에 따라 어떻게 분포하는가이다.
또한 장면을 렌더링 할 때에는 시간에 따라서 누적된 전체 에너지량을 보는 것이 아니라 특정 한 Sequence에 대한 정보를 다루게 되므로 Energy 그 자체를 물리량으로 사용하기 보다는 단위 시간당 에너지의 밀도를 나타내는 단위인 radiant flux를 통해서
각 물리량들을 전개하게 된다.

해당 단위를 기준으로
빛을 방사하는 면적의 넓이, 빛을 방사하는 방향,
특정 면적에 대하여 빛을 받는 넓이, 빛을 받는 방향
등에 따라서 물리량과 단위가 달라지게 된다.
I은 radiant Intensity로써
광원이 특정 방향으로 단위 입체각(solid angle)당 얼마나 많은 flux(선속)를 방출하는지를 나타낸다.

E는 irradiance로써 한국말로 복사조도라고도 한다.
해당 물리량은 면적 기준으로 어느 광원으로부터 해당 면적이 받게되는 단위 면적당 복사 선속을 의미한다.

마지막으로 L은 radiance로써 한국말로 복사휘도라고도 한다.
해당 물리량은 렌더링에서 가장 중요하게 다루어지는 물리량인데,
이는 특정 위치에서 특정 방향으로 흐르는 빛의 양을 나타내는 값이며,
방향을 어떻게 잡느냐에 따라 표면으로 들어오는 빛Li 또는 표면에서 나가는 빛Lo로 표현할 수 있다.
Radiance가 중요한 이유는 단순히 단위 면적당 flux만 보는 것이 아니라,
projected area와 해당 방향의 입체각까지 함께 고려하기 때문이다.

정리하면 다음과 같다

여기서 간과하기 쉬운 점은
이러한 관계가 단순히 전체량을 전체 면적이나 전체 입체각으로 나누는 평균값이 아니라는 것이다.
질량과 밀도에 대한 관점에서 비교해 본다면

이는 전체 질량 m을 전체 부피V로 나눈 평균 밀도만을 의미하는 것이 아니라,
어떤 아주 작은 영역에 대한 부피 요소V 안에 질량이 얼마나 분포하는지를 나타내는 국소적인 밀도이다.
따라서

로 표기하는 것이 보다 해당 의미를 직관적으로 알 수 있다.
따라서, 각각의 정의에 대해서 위와 같은 맥락의 관점으로 바라보았을때
Radiometry의 물리량들은 마찬가지로 단순히 전체량을
전체 영역으로 나눈 평균값이 아니라,
특정 영역을 점점 작게 줄여가며 얻는 국소적인 밀도량으로 이해해야 함을 알 수 있다.
보다 직관적인 방식으로 각각의 물리량을 재정의 해 본다면
Radiant Intensity

특정 방향 집합 Ω에 대해서 unit vector의 방향ω 가 그 요소일 때,
Radiant Intensity는 Radiant Flux에 대해 특정 방향의 집합에 대해 극한으로 갔을때의 물리량이다.
Irradiance

표면 S 위의 점 p를 포함하는 작은 surface patch를 𝒜라고 하자. 또한 방향 공간의 일부 영역을 Ω라고 하자.
이때, Φ(𝒜, Ω)는 방향 영역 Ω에서 들어와 surface patch 𝒜에 도달한 radiant flux를 의미한다.
Irradiance는 이 flux를 patch의 면적으로 나눈 뒤, patch의 크기를 점점 0으로 줄였을 때의 극한으로 정의한 물리량이다.
Radiance

특정 방향 집합 Ω에 대해서 unit vector의 방향ω 가 그 요소일 때,
Radiance는 Irradiacne에 대해서 방향 집합에 대해 극한으로 갔을때의 물리량을 나타내는 것이다.
여기서 중요한 것은 Radiance는 실제 표면 면적이 아니라,
빛의 방향에 수직한 projected area를 기준으로 정의되기 때문에 이러한 보정이 필요하다.
즉, 표면이 빛의 방향에 대해 비스듬히 놓일수록 같은 실제 면적 dA라도 방향 ω에서 보이는 면적은 작아진다.

위와 같이 나타내고, 이는

으로 정의할 수 있다.
최종적으로 풀어서 쓰면

로 표현이 가능하다.
이번 글에서는 ray tracing에서
shading point의 빛을 계산하기 위해 필요한 radiometry의 기본 개념에 대해서 보다 엄밀하게 정리했다.
Radiometry의 물리량들은 단순히 전체량을 전체 영역으로 나눈 평균값이 아니라,
시간, 면적, 방향 공간에 대해 정의되는 국소적인 밀도량으로 이해해야 한다.
이러한 관점에서 radiant flux, radiant intensity, irradiance, radiance를 다시 보면,
렌더링에서 왜 radiance가 핵심 물리량으로 사용되는지 조금 더 명확해진다.
Ray가 scene과 교차했다는 사실만으로는 pixel color가 결정되지 않으며,
교차점에서 카메라 방향으로 나가는 radiance를 계산해야 최종적인 pixel 값으로 이어질 수 있다.
다음 글에서는 이 radiance라는 물리량이 rendering equation에서 어떻게 계산되는지 다룰 예정이다.
특히, direct illumination 관점에서 Lambertian BRDF, cosine term, point light, area light, directional light가
어떻게 연결되는지 정리하고,
이후 Mitsuba Renderer의 Cornell Box 실험을 통해 이 차이를 직접 비교해볼 것이다.
'Ray Tracing' 카테고리의 다른 글
| Ray Tracing(2) - Shader Table, Root Signature, RTPSO (0) | 2026.06.20 |
|---|---|
| Ray Tracing(1) - Introduction to ray tracing pipeline (0) | 2026.06.18 |
| Before Studing Ray Tracing (0) | 2026.06.02 |