구면 조화 함수(Spherical Harmonics)를 활용한 그래픽스 렌더링 기술
구면 조화 함수(Spherical Harmonics)는 구면에서 정의된 함수를 근사하는 데 사용되는 강력한 도구임
조명 모델링(Lighting Modeling), 메쉬 두께 근사 등 다양한 그래픽스 분야에 활용 가능함
구면 조화 함수의 정의(Definition), 차수 및 순서(Degree and Order) 개념을 설명함
큐브맵(Cubemap)을 구면 조화 함수로 투영(Projection)하는 방법과 아티팩트(Artifacts) 문제점을 다룸
구면 조화 함수의 기본 개념
구면 조화 함수(Spherical Harmonics)는 3D 공간에서의 방향성을 표현하는 함수를 근사하는 데 사용되며, 특히 조명(Lighting)과 관련된 다양한 계산에 활용된다. 연속적인 함수를 무한한 가중치의 합으로 표현하며, 이 때 가중치는 구면 조화 함수(Spherical Harmonics)의 계수이다. 이러한 특성은 복잡한 조명 환경을 단순한 다항식의 합으로 표현할 수 있게 해준다.
구면 조화 함수의 차수와 순서
구면 조화 함수(Spherical Harmonics)는 차수(Degree)와 순서(Order)로 구성된 그룹으로 분류된다. 차수는 함수의 주파수 대역을 나타내며, 각 대역 내 함수는 순서에 따라 인덱싱된다. 낮은 차수는 큰 규모의 세부 사항을, 높은 차수는 작은 규모의 세부 사항을 캡처한다. 실시간 컴퓨터 그래픽스에서는 일반적으로 단일 숫자 차수까지만 사용하며, 계수(Coefficient)의 개수는 차수에 따라 제곱으로 증가한다.
큐브맵(Cubemap) 투영 및 링잉 아티팩트(Ringing Artifacts)
큐브맵(Cubemap)을 구면 조화 함수(Spherical Harmonics)로 투영하는 과정에서 링잉 아티팩트(Ringing Artifacts)가 발생할 수 있다. 이는 입력 함수의 불연속성으로 인해 발생하며, 근사 과정에서 음수 값을 생성할 수 있다. 이러한 문제를 해결하기 위해 윈도잉(Windowing) 기법을 사용하여 고주파 성분의 영향을 줄여 링잉 현상을 완화한다. 윈도잉 함수는 고주파 성분의 계수를 점진적으로 감소시켜 블러 효과를 낸다.
조도(Irradiance)를 구면 조화 함수로 표현
조도(Irradiance)는 특정 지점에 도달하는 빛의 양을 나타내며, 구면 조화 함수(Spherical Harmonics)를 사용하여 표현할 수 있다. 특히, 노멀 맵(Normal Map)을 사용하는 경우, 조도를 표면 노멀의 함수로 표현함으로써 베이킹된 조명(Baked Lighting)이 노멀 맵의 디테일을 반영하도록 할 수 있다. 이는 렌더링 시 노멀을 변경할 수 있게 하며, 조명 맵의 크기를 줄이는 데 기여한다.
구면 조화 함수와 컨볼루션(Convolution)
구면 조화 함수(Spherical Harmonics)는 주파수 영역 표현이며, 컨볼루션(Convolution) 연산을 통해 조명 계산을 단순화할 수 있다. 컨볼루션은 필터를 이미지에 적용하는 것과 유사하며, 구면 조화 함수(Spherical Harmonics)에서는 각 구성 요소의 곱셈으로 표현된다. 이러한 특성은 조명 계산의 효율성을 높이며, 실시간 렌더링(Real-time Rendering)에서 중요한 역할을 한다.