Appearance
3D 모델의 변형까지가 가능한 동적 PRT(3)~대역조화함수(Zonal Harmonics)(Zonal Harmonics)의 도입
[칼럼 핵심 요약]
SHEXP 기법에서는 구의 Shadow Fields의 취급에 대한 추가 최적화를 추진한다. 구의 형상은 어디에서 봐도 같은 "엔"이다. 성실하게 전천주분의 Shadow Fields를 유지하면 확실히 실행면에서 유리하지만, 메모리의 소비량이 커져 버린다.🌐 원문 링크: 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入 (Mynavi News)
📅 원문 발행일: 2009-07-31 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > SHEXP 기법에서는, 구의 Shadow Fields의 취급에 대한 추가 최적화를 추진한다. 구의 형상은 어디에서 봐도 같은 "엔"이다. 성실하게 전천주분의 Shadow Fields를 유지하면 확실히 실행면에서 유리하지만, 메모리의 소비량이 커져 버린다.
대역조화함수(Zonal Harmonics) (Zonal Harmonics) 도입
SHEXP 기법에서는 구의 Shadow Fields의 취급에 대한 추가 최적화를 추진한다.
구의 형상은 어디에서 봐도 같은 "엔"이다.
성실하게 전천주분의 Shadow Fields를 유지하면 확실히 실행면에서 유리하지만, 메모리의 소비량이 커져 버린다. 어느 쪽이든, 어디에서 봐도 같은 원으로밖에 보이지 않는다면, 어느 한축 방향의 일정 거리의 각 지점의 Shadow Fields를 산출해 두고, 이것을 리얼타임 렌더링시에 SH Rotation에서 변이시키는 처리를 실장해 주면 메모리 소비량을 꽤 적게 할 수 있을 것이다. 그러나, SH Rotation의 계산 자체의 부하가 높기 때문에 실제로는 퍼포먼스면에서 불리해진다.
구의 Shadow Fields 취급에 관한 3개의 구현안
그래서, 높은 처리 속도와 메모리 소비량이 좋은 잡담적인 기술인 Zonal Harmonics(대역조화함수(Zonal Harmonics))라는 개념을 도입한다.
Zonal Harmonics에서는, 전술한 SH Rotation에서 변이시키는 실장안과 같이, 단방향만의 Zonal Harmonics 계수를 유지해 두면 좋기 때문에 메모리의 소비량은 작은 데다, 계산 부하는 그다지 높지 않다.
Zonal Harmonics에는 회전 대칭 정보에만 적용할 수 있다는 제약이 있지만, 취급하는 대상이 어디에서 봐도 같은 형상의 구의 차폐 구조 데이터이므로 문제는 없다.
Zonal Harmonics의 요점
취급하는 대상이 어디에서 봐도 같은 형상의 구의 차폐 구조 데이터이므로 Zonal Harmonics를 적용할 수 있다
Zonal Harmonics에서 유지하는 단방향 결정 방법에는 요령이 있습니다. 어떤 조건(도면 참조)을 만족하는 방향으로 결정하고, 차폐 구조를 산출하고 구면조화함수(Spherical Harmonics)로 근사하여 차폐 계수 벡터를 얻으면, m=0 이외의 계수는 모두 제로가 되어 버린다. 이 특성에 주목하면, m=0일 때의 차폐 계수 벡터만을 유지해 두면 된다.
이 특성은 그 특수 조건을 만족하는 방향을 선택한 경우의 효과이다. 그리고, 이 m=0일 때의 차폐 계수 벡터에 Zonal Harmonics의 보정 계수를 곱하여 산출한 것이 Zornal Harmonics 계수(ZH 계수)가 된다.
즉, ZH 계수는 특수 조건 하에서 m = 0의 구면조화함수(Spherical Harmonics)의 차폐 계수 벡터의 소세공 (=Zonal Harmonics) 도입판이라고 할 수있다.
Zornal Harmonics 이용을 위한 특수 조건
그림
결국, 원하는 것은 임의의 방향의 차폐 계수 벡터이다. 이것은, 임의의 각도의 구면조화함수(Spherical Harmonics)와, 이전의 기준축에서 구한 ZH 계수의 적산으로부터 구해진다. 이 근처의 수학적 이론과 증명은 생략하지만, 이 기법을 이용하는 측은 그러한 것이라고 하는 것으로 사용할 수 있다. 포인트가 되는 것은, SH Rotation에서는 벡터와 행렬의 적산이 5회나 필요한 것에 대해, ZH를 이용하면 벡터끼리의 적산 1회로 임의의 방향의 차폐 계수 벡터가 구해진다는 점이다.
Zonal Harmonics의 도입으로 임의의 방향의 차폐 계수 벡터가 비교적 저부하로 계산 가능하게 되었다
실제의 실장에서는 구의 중심으로부터 다른 일정 간격 거리마다의 ZH 계수를 구해, 이것을 테이블화해 유지하게 된다. 이 "일정 거리"란 "구의 중심으로부터의 일정 거리"가 아니라, 구의 중심을 향한 직선과 구의 면에 대한 접선이 짜는 각도의 변화(구에 대해 가장 먼=0°~구에 대해 가장 가까운=90°) 단위로 준다. 이것은 후술하는 차폐 계수 벡터의 통합 계산을 효율적으로 행하기 위한 테크닉이 된다. (계속)
ZH 계수 테이블 개념
그림
공 Shadow Fields의 요약. ZH 계수를 이용함으로써 메모리 절약, 고속 실행이 실현된다
(트라이Z 니시카와 젠지)