Skip to content

사전 계산 방사휘도(Radiance) 전달(PRT) (PRT) ~ PRT의 기본. 정적 PRT(2)

[칼럼 핵심 요약]
이것을 실시간으로 구현하기 위해서는 몇 가지 타협과 단순화가 필요해진다. 첫 번째 타협점은 '장면 상태 고정화'다. 즉, 장면에 등장하는 오브젝트가 전혀 움직이지 않는다고 말하는 것. 이것은 '정적' PRT의 '정적' 곳이기도 하다.

🌐 원문 링크: 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(2) (Mynavi News)
📅 원문 발행일: 2009-06-12 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)

NOTE

💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)

  • 구면 조화 함수(SH)의 현대적 활용: PRT의 핵심인 구면조화함수(Spherical Harmonics)는 현재도 프로브 기반 라이팅(Light Probes), 볼류메트릭 라이트맵, 스카이라이트 복사도 캐싱의 핵심 수학적 도구로 쓰입니다.
  • 실시간 글로벌 일루미네이션(RTXGI / Lumen): 사전 계산(Precomputation)에 의존하던 한계를 벗어나, 메시 디스턴스 필드(SDF) 추적 및 하드웨어 레이트레이싱을 결합한 완전 동적 실시간 무한 반사 GI(Infinite Bounce GI)가 상용화되었습니다.

📖 본문 해설

[원문 리드문] > 이것을 실시간으로 구현하기 위해서는 몇 가지 타협과 단순화가 필요해진다. 첫 번째 타협점은 '장면 상태 고정화'다. 즉, 장면에 등장하는 오브젝트가 전혀 움직이지 않는다고 말하는 것. 이것은 '정적' PRT의 '정적' 곳이기도 하다.

정적 PRT를 실시간으로 구현하기 위한 타협과 궁리

이것을 실시간으로 구현하기 위해서는 몇 가지 타협과 단순화가 필요해진다. 첫 번째 타협점은 '장면 상태 고정화'다. 즉, 장면에 등장하는 오브젝트가 전혀 움직이지 않는다고 말하는 것. 이것은 '정적' PRT의 '정적' 곳이기도 하다.

PRT에서는, 모든 버텍스으로부터 전방위의 차폐 정보를 사전에 계산해 취득, 유지해 활용한다고 하는 기본 방침을 취한다. 따라서 장면에 등장하는 객체가 움직이면 차폐 구조를 다시 다시 계산해야하기 때문에 실시간화에는 장면을 고정화할 수밖에 없다PRT에서는, 모든 버텍스으로부터 전방위의 차폐 정보를 사전에 계산해 취득, 유지해 활용한다고 하는 기본 방침을 취한다. 따라서 장면에 등장하는 객체가 움직이면 차폐 구조를 다시 다시 계산해야하기 때문에 실시간화에는 장면을 고정화할 수밖에 없다

2번째의 타협점은 조명 계산(셰이딩(Shading))을 버텍스 단위로 하는 간략화이다. 셰이딩(Shading)를 픽셀 단위로 실시하는 쪽이 고품위인 영상을 얻을 수 있는 것은 당연한 것이지만, 이것을 버텍스 단위로 삭감하는 것으로 처리 속도를 벌 수 있다. 실제의 처리계에서는 3버텍스의 계산 결과로부터, 그 폴리곤을 구성하는 픽셀 칼라를 선형 보간해 구한다고 하는 글로우 쉐이딩적 어프로치를 취한다.

다만, 버텍스 단위의 라이팅으로 주의해야 하는 것은 렌더링 대상 3D 모델의 버텍스수(폴리곤수)이다.

비록 아무것도 없는 평면의 지면이라도, 여기에 제3자의 그림자나 그 외의 복잡한 음영이 투사되어 오는 것이 상정되므로, 1장 폴리곤이 아니고 다 폴리곤으로 분할해 표현해 갈 필요가 있는 것이다. 이것을 하지 않고 스케치한 폴리곤수라면 음영의 결과가 반영되지 않고 부자연스러워져 버린다.

성능을 얻기 위해 음영 연산을 버텍스 단위로 수행성능을 얻기 위해 음영 연산을 버텍스 단위로 수행

아무것도 없는 평평한 바닥에서도, 거기가 차폐되어 그림자가 떨어진다고 하는 경우, 그 근처의 버텍스군이 그림자색이 되는 것으로 생각된다. 이것을 상정하고, 어느 정도의 폴리곤수로 분할해 둘 필요가 있다아무것도 없는 평평한 바닥에서도, 거기가 차폐되어 그림자가 떨어진다고 하는 경우, 그 근처의 버텍스군이 그림자색이 되는 것으로 생각된다. 이것을 상정하고, 어느 정도의 폴리곤수로 분할해 둘 필요가 있다

다 폴리곤으로 분할하면 할수록 버텍스 단위의 셰이딩(Shading)의 결과가 고품위가 되지만, 그만큼, 지오메트리 부하는 증가한다다 폴리곤으로 분할하면 할수록 버텍스 단위의 셰이딩(Shading)의 결과가 고품위가 되지만, 그만큼, 지오메트리 부하는 증가한다

셋째는, 전버텍스에 대해 사전 계산한 방대한 용량의 데이터를 압축하려고 하는 방책이다.

예를 들어 4만 버텍스의 장면에서, 큐브 맵화한 IBL 적분항이 32×32 텍셀의 작은 큐브 맵이었다고 해도, 일버텍스당 32×32×6면×4 바이트(αRGB 각 8 비트 칼라)=24kB. 이것이 4만 버텍스분 있으면 총 938MB의 비디오 메모리가 차폐 정보의 저장만으로 사용되어 버린다.

이를 압축하는 기술로 이용하는 것이 최근 3D 그래픽스 세계에서 보는 기회가 늘어난 '구면 조화함수'(SH : Spherical Harmonics)다. 이 구면 조화함수란 양자역학의 교과서에 실려 있는 항목으로, 그러한 특수수학을 3D 그래픽스의 세계에 응용했다는 것이 PRT의 독특하고 획기적인 점이라고 할 수 있다.

그런데, 전체 버텍스의 차폐 구조를 사전 계산하고 있어도, 실은, IBL 적분항으로부터 각 버텍스에 대해 전방위분의 음영 연산을 행하는 것은 처리가 무겁다. 그러나이 구면조화함수(Spherical Harmonics)를 사용하면 편리하게 문제를 해결할 수 있습니다. (계속)

(트라이Z 니시카와 젠지)


🔗 연관 지식 베이스 (Wiki)

Based on Zenji Nishikawa's 3D Graphics Maniax series. Translated & Knowledge-Based for Korean Game Developers.