Appearance
3D 모델의 변형까지가 가능한 동적 PRT(5)~SH Exp 연산의 대담한 근사에 의한 고속화
[칼럼 핵심 요약]
SH Exp 연산에 대해서는 정의대로의 진지한 연산을 하는 것도 일안이지만, 리얼타임의 퍼포먼스를 향상시키기 위해서, 여기에서도 근사 수법을 도입한다.🌐 원문 링크: 3Dモデルの変形までが可能な動的PRT(5)~SH Exp演算の大胆な近似による高速化 (Mynavi News)
📅 원문 발행일: 2009-08-16 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > SH Exp 연산에 대해서는 정의대로 진지한 연산을 하는 것도 한 방안이지만, 실시간 성능을 향상시키기 위해 여기에서도 근사 방법을 도입한다.
SH Exp 연산의 대담한 근사에 의한 고속화
SH Exp 연산에 대해서는 정의대로의 진지한 연산을 하는 것도 일안이지만, 리얼타임의 퍼포먼스를 향상시키기 위해서, 여기에서도 근사 수법을 도입한다.
어떤 값의 지수는 급수 전개하면 아래 그림과 같이 나타낼 수 있다. 이 계산은 곱셈과 나눗셈을 포함하기 때문에 계산 부하가 높습니다. 그래서 SHEXP 기법의 개발연구그룹에서는 처음 두 항만으로 근사한다는 대담한 기법을 채택했다. 그러나 그대로라면 오차가 너무 커서 가중치가 있는 선형합으로 근사를 한다.
SHEXP 연산을 처음의 2항만으로 근사하는 대담한 수법을 도입해 퍼포먼스를 얻는다
2개의 선형항에 곱하는 2개의 가중 계수는, 사전 계산으로 테이블화해 준비해 둔다. 그렇다면이 가중 계수가 중요해집니다.
SHEXP 기법의 연구 개발 그룹에서는, 이 2개의 가중 계수의 산출에는 일반적인 수치 계산에 사용되는 최소 제곱법을 이용했다.
어느 차폐 정보로부터, 그 차폐 계수 벡터 g를 구해, 이것을 SH Log 연산으로 SH Log 공간으로 변환하여 f로 했을 때, f의 값으로부터 최소 제곱법으로, 그 2개의 가중 계수 a, b가 구해지기 때문에, 사전 계산해 작성하는 테이블은 f를 키로 하여 a, b를 구하는 방침이 생각된다.
그러나 이것은 실현하기 어렵다. 그렇다고 하는 것도, 아무리 등장하는 3D모델이 구만이라고는 하지만, 구의 겹치는 상태나 그 조합은 무수하게 있어, 이것에 대응하는 자기 차폐의 상태 g도 무수하게 있는 것, 즉 f도 무수하게 존재하게 되어 버린다. f를 키로 한 테이블은 사이즈가 방대해져 버려, 현실 맛이 없습니다.
SH Exp 연산의 개념도. 성능 향상을 위해 첫 번째 선형 항 2개와 가중 계수를 사용한 계산에 근사합니다. 그 가중 계수는 테이블을 사용합니다.
그림
따라서 추가 타협 조건을 부여합니다. 그것은 f가 아니라 f의 절대치를 키로 하는 조건. 또한, 절대치의 상한과 하한을 결정해 버린다고 하는 간략화의 타협도 짜넣는다. 이렇게 하면 어떻게든 테이블화가 예상될 것 같다.
테이블화 실현을 위한 추가 타협안 도입
타협안으로서는 너무 대담하기 때문에, 이대로는 근사 정밀도가 그다지 좋지 않다. 그래서 정밀도 향상을 위한 궁리를 실시한다.
SH Log공간으로 변환된 차폐계수 벡터의 요소 중 절대값이 큰 것은 최초의 항만이므로, 이 최초의 항만은 성실하게 SH Exp 계산을 실시하도록 하는 것이다. 절대치가 큰 최초의 항의 정밀도가 오르면, 정밀도가 향상한다… … 이것을 노리는 것이다.
구체적으로는, SH Log 공간의 차폐 계수 벡터의 최초의 항과 제2항 이후를 분해해도 최초의 항에 대해서는 SH Exp 계산을 행하고, 그 이후에 대해서는, 그 대담한 2개의 가중 계수 테이블을 이용한 간략 계산을 실시하도록 한다.
그림
이 지굴을 이용하기 위해서는, 2개의 가중 계수를 취득하기 위한 테이블을, SH Log 공간의 차폐 계수 벡터의 최초의 항을 제외한 후에 작성할 필요가 있다
두 개의 가중 계수를 얻기위한 테이블 생성의 두 번째 방법. 앞의 그림과 개념적으로는 같지만, SH Log 공간의 차폐 계수 벡터의 첫 번째 항을 제외한 것에 대응한 것으로 한다
덧붙여 이 테이블에서는, 키로 하는 f의 값에 절대치의 하한과 상한을 설정한다고 하는 타협안을 적용했지만, 그럼, 그 조건을 채울 수 없는(범위외의)f에 대해서는 어떻게 취급하면 좋을까.
f의 절대치가 하한 상한을 넘고 있는 경우, 하한 상한 범위에 들어갈 때까지, 그 값을 1/2로 해 간다. 그리고, 하한 상한 범위에 들어가면 테이블로부터 구한 계수 a, b를 취해, 그 값으로부터 SH Exp의 근사를 구하지만, 구한 값에 대해서, 방금전의 1/2로 한 횟수분만큼, Triple Product 계산을 하면 철저히 어울리는다고 한다. 이 이굴에 대한 수학적 증거도 여기에서는 생략한다.
테이블 밖으로 처리하는 구체적인 예
차폐 계수 벡터의 통합을 SH Log 공간에서 실시하고, SH Exp 연산으로 통상 공간으로 되돌릴 수 있으면, 나머지는 셰이딩(Shading)(휘도 계산)를 실시할 뿐이다. 이것에 대한 처리계는 PSF 기법과 이굴은 완전히 같기 때문에, 이후의 처리에 대해서는 해설을 생략한다.
자기 변형 가능한 3D 모델에 대해서도 동적 PRT가 적용 가능하게 됨으로써 PRT의 응용 범위는 극적으로 퍼진다
자기 변형 가능한 3D 모델에 대해서도 동적 PRT가 적용 가능하게 됨으로써 PRT의 응용 범위는 극적으로 퍼진다
휘도 계산시 반사 모델을 변경하면 당연히 금속 같은 질감도 표현 가능하다
동적 PRT의 가능성
2002년에 등장했을 때, PRT는 3D 게임 그래픽스와는 무관한 기술이라고 생각되어 왔지만, GPU의 진화와 PRT 기술 자체의 진화에 의해, 3D 게임 그래픽스에의 응용에 대한 기대가 높아져 왔다고 할 수 있다.
특히 3D 모델이 변형해도 적용할 수 있는 SHEXP 기법의 동적 PRT는 뼈 스키닝된 3D 캐릭터에도 대응할 수 있다는 것이며, 인간이나 동물과 같은 동적인 3D 캐릭터 표현에도 문제없이 대응할 수 있습니다. 이것이 널리 활용되게 되면, 3D 게임 그래픽스의 리얼리티는 향상해, 표현의 폭도 한층 더 확장될 것이다.
본고에서 다룬 PRT는 차폐(그림자)로 한정한 테마였지만, PRT와는 원래 '빛의 전파'(RADIANCE TRANSFER)를 '사전 계산'(PRECOMPUTE)하는 일반형이기 때문에 사전 계산하는 요소를 다른 것으로 하거나 늘려가는 것으로 복잡하고 특수한 재질의 표현도 가능하다. 예를 들면, 피부와 같은 반투명 재질의 표현이나, 2차 반사광 이후의 복잡한 상호 반사의 셰이딩(Shading) 등도 가능하다.
현재의 SHEXP 기법의 동적 PRT에서도, 기본적으로 버텍스 단위의 셰이딩(Shading)가 되어, 게다가 PRT의 단위가 구체 근사화된 형상 단위가 되므로, 세세한 디테일까지 배려한 복잡한 빛의 전파를 재현할 수 있는 것은 아니지만, 일반적인 반사 모델을 이용한 픽셀 단위의 셰이딩(Shading)와 조합하면, 그랬다.
가능성은 보였다고는 해도, 3D 게임 그래픽스에 응용하기에는, 아직도, 처리 속도나 비디오 메모리 용량의 관점에서 극복해야 할 과제는 많다고 생각된다. 그러나 이것은 하드웨어의 진보로 어떻게 되는 문제이다.
그런 의미에서, 금세대 이후의 PC 게임 등의 선진 엔진 등에서는, 동적 PRT의 실장이 시작될 가능성은 높다.
PRT의 대상 요소 예. 점 P에서 PRT 할 수있는 요소가 가득합니다. 단, 취급하는 요소가 많을수록 계산 부하가 높아지고, 소비 비디오 메모리량은 증가한다. 그러나, 이것은, 뒤를 돌려주면, GPU 진화로 해결할 수 있는 문제라고도 할 수 있다
(트라이Z 니시카와 젠지)