처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.04.16 32

구면 조화 함수(Spherical Harmonics), 그래픽스 프로그래머라면 꼭 알아야 할 수학 도구

Hacker News 원문 보기
구면 조화 함수(Spherical Harmonics), 그래픽스 프로그래머라면 꼭 알아야 할 수학 도구

3D 그래픽스에서 빛을 표현하는 영리한 방법

3D 게임이나 렌더링 엔진을 만들다 보면 "빛"이라는 녀석이 정말 골치 아프거든요. 현실 세계에서 빛은 모든 방향으로 튕기고 반사되는데, 이걸 컴퓨터에서 그대로 시뮬레이션하면 연산량이 어마어마해져요. 그래서 그래픽스 분야에서는 오래전부터 구면 조화 함수(Spherical Harmonics, 줄여서 SH)라는 수학 도구를 활용해왔는데요, 이 개념을 그래픽스 프로그래머 관점에서 아주 잘 정리한 글이 공개됐어요.

구면 조화 함수가 대체 뭔가요?

이게 뭐냐면, 쉽게 말해서 구(sphere) 표면 위의 복잡한 패턴을 간단한 수식 몇 개의 조합으로 표현하는 방법이에요. 음악에서 복잡한 소리를 주파수별로 분해하는 푸리에 변환(Fourier Transform) 아시죠? 구면 조화 함수는 그걸 2D 평면이 아니라 3D 구 표면에서 하는 거라고 보면 돼요.

예를 들어볼게요. 어떤 물체 표면의 한 점에 모든 방향에서 들어오는 빛의 양을 기록한다고 생각해보세요. 이걸 완벽하게 저장하려면 구 표면의 모든 방향에 대한 값을 다 가지고 있어야 하는데, 그건 메모리도 연산도 너무 많이 들어요. 구면 조화 함수를 쓰면 이 복잡한 빛 분포를 계수(coefficient) 몇 개만으로 근사할 수 있어요. 보통 9개에서 16개 정도의 숫자만 있으면 꽤 그럴듯한 조명을 표현할 수 있거든요.

수학적 원리를 조금 더 들여다보면

구면 조화 함수는 차수(degree) l차수 내 순서(order) m이라는 두 개의 인덱스로 구분되는 기저 함수(basis function)들의 집합이에요. 0차는 상수값으로 모든 방향에서 동일한 빛, 1차는 세 개의 함수로 빛의 방향성, 2차는 다섯 개의 함수로 더 세밀한 변화를 표현해요.

중요한 성질이 몇 가지 있는데요. 첫째로 직교성(orthogonality)이에요. 각 기저 함수가 서로 독립적이라서, 하나의 계수를 바꿔도 다른 계수에 영향을 주지 않아요. 둘째로 회전 불변성(rotational invariance)인데, SH로 표현된 함수를 회전시킬 때 같은 차수의 계수들끼리만 섞이면 돼요. 이건 실시간 그래픽스에서 엄청 유용한 성질이에요. 물체가 회전해도 조명 계수를 빠르게 업데이트할 수 있거든요.

이 글에서 특히 잘 설명하고 있는 부분은 SH의 시각적 직관이에요. 각 기저 함수가 구 위에서 어떤 모양을 만드는지 컬러 맵으로 보여주면서, 차수가 올라갈수록 얼마나 더 세밀한 패턴을 잡아내는지 눈으로 확인할 수 있게 해줘요.

실제 그래픽스에서는 어떻게 쓰이나요?

가장 대표적인 사용처는 간접 조명(indirect lighting), 흔히 말하는 글로벌 일루미네이션(GI)이에요. Unity나 Unreal Engine에서 라이트맵을 구울 때 각 지점의 간접 조명 정보를 SH 계수로 저장하거든요. Unity의 Light Probe가 바로 이 방식이에요. 공간의 여러 지점에 프로브를 배치하고, 각 프로브에 SH 계수를 저장해서, 동적 오브젝트가 그 사이를 지나갈 때 보간(interpolation)으로 부드러운 조명을 실시간으로 계산하는 거예요.

또 하나 중요한 사용처는 PRT(Precomputed Radiance Transfer)예요. 복잡한 형상의 물체가 빛을 받을 때 생기는 자기 그림자(self-shadow)나 색 번짐(color bleeding) 같은 효과를 미리 SH 도메인에서 계산해두는 기법인데, 2002년에 Sloan 등이 SIGGRAPH에서 발표한 이후로 실시간 렌더링의 핵심 기법 중 하나가 됐어요.

비슷한 접근법들과의 비교

SH 말고도 구 위의 함수를 표현하는 다른 방법들이 있어요. Ambient Cube는 6방향 값만 저장해서 더 가볍지만 정밀도가 떨어지고, Spherical Gaussian(SG)은 임의의 방향에 로브(lobe)를 배치할 수 있어서 반사광 같은 고주파 성분에 더 유리해요. 최근에는 Neural Radiance Fields(NeRF) 계열에서도 SH를 사용하는데, 3D Gaussian Splatting이 각 가우시안의 뷰 의존적 색상을 SH로 인코딩하면서 다시 주목받고 있어요.

한국 개발자에게 주는 시사점

그래픽스 분야에 관심 있는 분이라면 SH는 반드시 알아둬야 할 기초 도구예요. 당장 Unity에서 Light Probe를 세팅하거나 커스텀 셰이더를 작성할 때 SH 계수가 어떤 의미인지 알면 디버깅이 훨씬 수월해지거든요. 또한 요즘 뜨거운 3D Gaussian Splatting 연구를 따라가려면 SH에 대한 이해가 필수예요. 수학이 좀 무섭게 느껴질 수 있지만, 이 글처럼 시각적 직관과 함께 배우면 생각보다 어렵지 않아요.

한줄 정리

구면 조화 함수는 3D 공간에서 빛 정보를 적은 데이터로 똑똑하게 압축하는 수학 도구이고, 실시간 렌더링부터 최신 NeRF 연구까지 폭넓게 쓰이는 핵심 개념이에요.

여러분은 그래픽스 프로그래밍에서 수학 개념을 배울 때 어떤 방식이 가장 잘 와닿으시나요? 수식부터 보는 편인가요, 아니면 시각적 결과물부터 보는 편인가요?


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.