Appearance
사전 계산 방사휘도(Radiance) 전달(PRT) (PRT) ~ PRT의 기본. 정적 PRT(1)
[칼럼 핵심 요약]
그 장면을 둘러싼 정경을 큐브 환경 맵으로서, 이것을 광원에 비추어 라이팅을 실시하는 라이팅은 특히 「Image Based Lighting」(IBL)이라고 불린다. 본 연재에서 해설하는 PRT의 라이팅은 이 IBL을 전제로 한다.🌐 원문 링크: 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(1) (Mynavi News)
📅 원문 발행일: 2009-06-09 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 구면 조화 함수(SH)의 현대적 활용: PRT의 핵심인 구면조화함수(Spherical Harmonics)는 현재도 프로브 기반 라이팅(Light Probes), 볼류메트릭 라이트맵, 스카이라이트 복사도 캐싱의 핵심 수학적 도구로 쓰입니다.
- 실시간 글로벌 일루미네이션(RTXGI / Lumen): 사전 계산(Precomputation)에 의존하던 한계를 벗어나, 메시 디스턴스 필드(SDF) 추적 및 하드웨어 레이트레이싱을 결합한 완전 동적 실시간 무한 반사 GI(Infinite Bounce GI)가 상용화되었습니다.
📖 본문 해설
[원문 리드문] > 그 장면을 둘러싼 정경을 큐브 환경 맵으로, 이를 광원에 비추어 라이팅을 하는 라이팅은 특히 'Image Based Lighting'(IBL)이라 불린다. 본 연재에서 해설하는 PRT의 라이팅은 이 IBL을 전제로 한다.
PRT의 기본~정적 PRT란?
PRT는 무엇을 사전 계산하는지에 따라 복잡도의 정도는 달라진다.
본 연재에서 취급하는 PRT는, 2006년에 개최된 게임 개발자 회의 CEDEC 2006에서 피라미드사가 발표한 내용에 따른 것을 바탕으로 하고 있고, 「환경 맵을 통째로 광원으로 생각해, 복잡한 차폐를 배려해 리얼타임 렌더링한다」라고 하는 테마에 한정하고 있다.
장면 내의 물건이 움직이지 않는다는 전제에서의 PRT가 '정적 PRT'다. 2002년에 발표된 PRT의 개조적 논문은 이 정적 PRT였다. 원안 발표자인 Sloan씨는 전 Microsoft로, Direct3D 개발에 깊이 종사하고 있던 인물이다
🔍 [인포그래픽 도해 한국어 번역: 구면조화함수 (Spherical Harmonics, SH) 기저 전개도]
(Order 0, 1개 계수): 완전 구형 앰비언트 환경광 (DC 성분) (Order 1, 3개 계수): 3축 방향의 1차 코사인 로브 (주요 방향성 광원) (Order 2, 5개 계수): 2차 형태의 복잡한 주변 반사광 모드 - 합계 9개 부동소수점 계수:
행렬 크기만으로 3D 공간 전체의 부드러운 환경 조명(GI)을 완벽하게 압축 표현
그 장면을 둘러싼 정경을 큐브 환경 맵으로서, 이것을 광원에 비추어 라이팅을 실시하는 라이팅은 특히 「Image Based Lighting」(IBL)이라고 불린다. 본 연재에서 해설하는 PRT의 라이팅은 이 IBL을 전제로 한다.
IBL : Image Based Lighting의 기본 개념
픽셀 단위의 라이팅을 할 때에, 그 픽셀의 방향(노멀 벡터)에 근거해 큐브 환경 맵을 참조해, 그 텍셀을 광원에 비추어 음영 연산을 실시하는 간이 기법도 IBL이라고 불리지만, 여기서 말하고 있는 IBL는 차폐나 그 외의 복잡한 빛의 전파(음영 뿐만이 아니라, 경우에 따라서는 빛의 침투나 굴절,
IBL에서는 이와 같이 6면체 구조의 전방위 환경 맵을 광원으로서 이용하는 경우가 많다
이러한 고도의 IBL을 제대로 구현하기 위해서는, 우선, 그 씬의 각 버텍스의 각각으로부터 전방위를 둘러봤을 때의 차폐 정보와 노멀 벡터 정보(실제로는 코사인항.후술)를 텍스처에 기록해 둔다. 이것이 '사전 계산' 부분이다.
그리고 렌더링시에는, 각 픽셀 또는 각 버텍스에 있어서, 사전 계산으로 작성한 그 텍스처로부터 광 전달 함수를 복원하고, 그 때의 시선의 방향(시선 벡터)을 배려해, 큐브 환경 맵 광원을 참조하여 라이팅을 행한다. 이것이 IBL 기반의 PRT의 기본적인 흐름이다.
그 사전 계산 부분에 있어서, 「전방위의 차폐 구조의 조사」를 실시하는 것이지만, 전방위라고 해도, 실제로는 텍스처 리소스는 유한이므로 8방향, 16방향이라든지 적당한 수의 방향으로의 조사가 된다. 또, 그 차폐 구조의 조사는 레이 트레이싱적인 수법으로 행해진다(GPU 가속을 사용한 방법도 있다).
「코사인 항」이란, 그 적절한 전방위 방향 각각과 노멀 벡터의 내적을 말한다. 예를 들어, 32 방향에 대해 차폐 구조를 조사하고 그것을 큐브 맵에 기록하면, 그 32 방향에 대한 코사인 항도 계산하여 큐브 맵에 기록한다.
이 차폐와 코사인항의 2개의 큐브 맵을 곱한 것을 IBL 적분항이라고 하며, 실제로는 이것을 사전 계산해 유지해 둔다. 4만개의 버텍스 장면이라면 이 IBL 적분항도 4만개 만들어야 하는데 이는 실시간으로 계산하는 것은 우선 무리라는 것을 상상할 수 있을 것이다. 게다가 4만개의 큐브맵을 관리한다는 것도 비디오 메모리 용량의 관점에서 보면 비현실적이라고 말할 수밖에 없다. (계속)
IBL 기반 PRT 개념. 장면을 구상의 정경이 둘러싸고 있다는 이미지. 녹색 화살표는 그 버텍스의 노멀, 오렌지는 전방위를 모식적으로 나타낸 것
그 구형의 정경을 큐브 환경 맵(6면체의 환경 맵)으로서 근사한다
그 씬의 모든 버텍스에 대한, 전방위의 차폐 구조(왼쪽)와 노멀 벡터 정보(코사인항, 오른쪽)를 텍스처에 기록. 역시 큐브 환경 맵으로 기록
그 씬의 모든 버텍스에 대한, 전방위의 차폐 구조(왼쪽)와 노멀 벡터 정보(코사인항, 오른쪽)를 텍스처에 기록. 역시 큐브 환경 맵으로 기록
실제로는 차폐 구조와 노멀 벡터 정보(코사인항)는 하나로 정리 IBL 적분항으로서 관리. 이굴상, 예를 들면 4만 버텍스의 씬에서는 이 IBL 적분항의 텍스처가 4만개 필요하게 된다. 이것은 비현실적
(트라이Z 니시카와 젠지)