Appearance
지오메트리 셰이더(6)~지오메트리 셰이더를 활용한 새로운 표현(2)
[칼럼 핵심 요약]
전회의 오브젝트 모션 블러(액션 블러)와는 닮아 있지만, 미묘하게 구현이 다른 수법이 2003년의 게임 개발자 회의 「GDC 2003」에서 NVIDIA의 Simon Green씨로부터 발표되었다. 그것이 '2.5D 블러'라고 불리는 수법이다.🌐 원문 링크: ジオメトリシェーダ(6)~ジオメトリシェーダを活用した新表現(2) (Mynavi News)
📅 원문 발행일: 2008-10-20 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > 전회의 오브젝트 모션 블러(액션 블러)와는 매우 비슷하지만, 미묘하게 구현이 다른 수법이 2003년의 게임 개발자 회의 「GDC 2003」에서 NVIDIA의 Simon Green씨가 발표했다. 그것이 '2.5D 블러'라고 불리는 수법이다.
지오메트리 셰이더를 활용한 신표현(2)~ 입체적인 모션 블러를 화상 처리로 실현시키는 2.5D 블러 기법
전회의 오브젝트 모션 블러(액션 블러)와는 닮아 있지만, 미묘하게 구현이 다른 수법이 2003년의 게임 개발자 회의 「GDC 2003」에서 NVIDIA의 Simon Green씨로부터 발표되었다. 그것이 '2.5D 블러'라고 불리는 수법이다. 이것은 캡콤의 「로스트 플래닛」이나 CRYTEK의 「CRYSIS」가 효과적으로 구현한 것으로, 그 유효성이 널리 알려지게 되었다.
기본 방침은 다음과 같은 절차가 된다.
우선, 장면을 통상대로 렌더링하고, 이것을 나중의 렌더링 패스로 참조하기 위한 소재로 한다.
블러를 내고 싶은 대상 3D 오브 셰크트의 버텍스에는 전 프레임의 화면상의 좌표를 유지해 두고, 버텍스 쉐이더로, 현재 프레임의 화면 좌표 위치를 계산해, 유지해 두었던 전 프레임의 화면 좌표 위치와 차분을 산출해 속도와 방향을 계산해 구해, 이러한 값을 텍스처에 렌더링 한다. 폴리곤을 색으로 그리는 것이 아니라, 이 속도와 방향 정보로 그리는……라고 하는 이미지가 된다. 이 프로세스에 의해 생성 된 화면상의 모든 픽셀의 속도 정보를이 기술에서 특히 "벨로 시티 맵"(속도 맵)이라고합니다.
최종 렌더링 패스에서는, 이 벨로시티 맵을 참조하여 속도 정보를 취득하고, 최초로 렌더링한 장면 텍스처에 대해 이 속도 정보 분배하여 샘플링(읽어내)함으로써 최종 프레임을 생성한다.
벨로 시티지도 개념
벨로 시티 맵을 참조하여 흐림 생성 원리
장면 텍스처로부터의 샘플은 1개 뿐만이 아니라, 현재 위치로부터 전 프레임 위치까지를 N등분한 각 지점에서 합계 N개 읽어내는 것이 일반적이다. 현재 위치와 전회 위치의 위치가 크게 떨어져 있는 경우는 속도가 빠르다고 하는 것이고, 장면 텍스처로부터 샘플한 텍셀은 얇게 블렌드하는 가중치를 하는 것도 자주 사용된다. 이렇게 하는 것으로 현재지에 가까운 잔상이 진하게 보이고, 먼 곳의 잔상을 얇게 할 수 있어 보다 약동감이 두드러진다.
이 방법으로 포인트가 되는 것은 벨로시티 맵의 작성 부분이다.
한 점이 다른 위치로 이동했을 때에는 그 전후의 위치 정보의 차이만으로 속도와 방향을 산출할 수 있지만, 이것이 폴리곤이라고 말하게 되면 좀 다소 어렵다. 한 폴리곤이 한 위치에서 다른 위치로 이동했을 때 이전 위치에서 현재 위치까지 그 폴리곤의 "면"으로서의 궤적과 그 방향을 구하고 싶다.
이것은 이미지 적으로 말하면, 움직이는 폴리곤에 대해 이전 프레임의 위치에서 현재 위치까지 "비욘"으로 늘어난 것 같은 폴리곤으로 변형함으로써 구해진다.
이 변형 처리에는 미국 브라운 대학의 Matthias M. Wloka 등이 「Interactive Real-Time Motion Blur」(1995)에서 발표한 움직임에 맞는 폴리곤의 변형 처리를 응용한다.
이것은, 각 버텍스에 주목해, 그 방향(노멀 벡터)이, 진행 방향에 가까울수록 현재의 상태에 가까운 버텍스 좌표로 하고, 달라 있으면 달라질수록 과거의 버텍스 좌표로 하도록 버텍스을 변위시킨다……라고 하는 처리로 실현된다.
즉,이 처리에서는 원래 가지고 있던 현재 위치의 버텍스과 이전 위치에 새롭게 버텍스을 생성하여 새롭게 폴리곤을 생성 할 필요가 나온다. 그래, 여기서 지오메트리 셰이더가 활약하는 것이다.
그림
그림
덧붙여 지오메트리 쉐이더를 가지지 않는 그 때문에 DirectX 9세대 SM3.0 대응 GPU로, 이 2.5D 블러 기법을 하기 위해서는, 전회 위치에 늘이기 위한 버텍스을, 3D모델측에 넣어 두는……라고 하는 궁리가 필요했다. 정확히 스텐실 섀도우 볼륨 기술의 그림자 생성에서 그림자 영역 생성을위한 늘이기 꼭지점을 넣어 두는 것과 매우 유사합니다.
캡콤 「로스트 플래닛」에서는 폴리곤 궤적 생성을 위한 더미 폴리곤(축퇴 폴리곤)이 3D 모델에 담겨 있었다. 지오메트리 셰이더가 사용 가능한 GPU라면 이 사전 처리는 불필요하다. 그런 의미에서이 2.5D 흐림 기법에서는 지오메트리 셰이더의 가속적 활용이라고 할 수 없습니다. (계속)
왼쪽은 퇴색 폴리곤없이 12,392 폴리곤. 오른쪽이 축퇴 폴리곤 있어 17,765 폴리곤. 이 차이만이 모션 블러 생성을 위한 쓸데없는 버텍스 처리 부하가 될 수 있다
(트라이Z 니시카와 젠지)