원문

니시카와 젠지의 3D 게임 팬을 위한 차세대 PSP - GPU 강좌

"타일 기반 지연 렌더링(Tile Based Deferred Rendering"이란 무엇인가?

소니 컴퓨터 엔터테인먼트의 차세대 휴대 게임기가 될 것으로 예상되는……본 기사에서는 가칭「PSP2」라고 해두지만, 해외 사이트 등에서는 한때 「PSP2의 GPU로 SGX543MP4이 쓰인다!」고 소란스러웠던 적이 있었다.

그것이 사실인지 아닌지 확인할 방법은 없지만, 「PowerVR」이라고 하면 iPhone 3GS도「PowerVR」이니 설마?……하는 꿈이 퍼지는 것도 당연할 것이다.

GPU라고 하면 「NVIDIA인가 ATI(AMD)인가」하는 것이 요즘에, 분야는 다르다고 하지만 최근 들어 대두되고 있는 「PowerVR」에 관해서 알아보는 것도 나쁘지 않다고 생각하여, GDC 기간 중에 출전했던 「PowerVR」 개발원 Imagination Technologies Group의 부스에 찾아가 보았다. 그랬더니 다행히도 최신 「PowerVR」에 관한 기본자료를 받을 수 있었기에, 이것을 읽어보면서 「PowerVR」이 어떤 물건인지 이해해보도록 하겠다.

「PowerVR」이라고 하면, 게임 팬에게 있어 친숙한 것은 드림캐스트에 채용되었던 「PowerVR2」일 것이다. 그 시대에는 아직 텍스처를 붙이는 것과 극히 기본적인 조명처리만을 할 수 있었던 GPU로, 현재의 GPU의 모습과 비교하면 아직 많이 원시적인 모습이었다.

그럼, 최신의 「PowerVR」시리즈는 어떤 모습으로 진화해왔을까.

「PSP2」에 탑재된다는 소문이 있는 SGX543MP4의 시리즈인 「PowerVR SGX5」 시리즈를 주제로 그 속을 탐구해볼까 한다.

소문 속의 GPU는 어떤 물건?

본 기사의 대상은 주로 「PSP2(가칭)」에 탑재된다는 소문이 있는 SGX543MP4 시리즈로 하겠다.

「SGX543MP」의 MP는 멀티프로세서의 약자로, MP4는 4코어 프로세서라는 의미가 된다.

아키텍처상으로는 MP16의 16코어까지 대응할 수 있으며, NVIDIA의 SLI처럼 코어를 늘리면 늘릴 수록 퍼포먼스가 높아지는 구조로 되어있다. 각 코어는 긴밀하게 상호연대를 취하면서 병렬동작하므로, 1코어를 증가시킬 때만다 퍼포먼스가 90%는 상승한다고 한다. 멀티코어는 기수 코어에도 대응하므로 MP3같은 3코어 솔루션 등도 있다.

1코어 당 코어 면적은 2.6mm2, 16코어면 32mm2. PSP2용이라는 소문이 돌고 있는 MP4에서도 한편의 전용면적은 3mm 남짓한 것이 4개라는 극소 코어라는 이야기이다.

200MHz 동작시 4코어 당 스루풋은 초당 1억3300만 폴리곤, 초당 40억 픽셀정도라고 한다. MP4의 스펙을 과거의 PC용 GPU에 견주어보면, 픽셀 필레이트로 봐서 2003년의 NVIDIA의 울트라 하이엔드 GeForce FX 5900 Ultra(초당 36억 픽셀) 정도일까.

「SGX543」 시리즈의 대응 그래픽 API는 OpenGL/ES2.0(혹은 OpenGL/ES1.1+Extention Pack)으로, DirectX 세대로 말하자면 DirectX 9세대 프로그래머블 셰이더 3.0 사양(SM3.0)에 상당하는 포텐셜을 가진 것이 된다.

프로그래머블 셰이더 아키텍처로는 통합형 셰이더 아키텍처를 채용하고 있으며, 각 범용 셰이더 유닛은 정점 셰이더로, 혹은 픽셀 셰이더로 기용되거나 한다. 1코어 당 셰이더 유닛 수(파이프라인 수)는 4. MP4라면 4배인 16개가 된다.

PowerVR 아키텍처의 특별한 렌더링 방법이란?

「PowerVR」시리즈의 렌더링 엔진은 NVIDIA나 ATI의 GPU와는 달리, Z 버퍼를 이용하지 않는 방법을 채용하고 있다.

Z버퍼란, 가장 최근에 묘화한 (폴리곤을 구성하는) 픽셀 시점에서 본 깊이값을 기록하는 버퍼로, 폴리곤의 묘화순서가 엉망이라도, 묘화해갈 폴리곤군의 앞쪽과 안쪽의 관계성을 판별해가면서 묘화하는데 빼놓을 수 없는 구조이다.

「PowerVR」는 이 Z버퍼를 이용하지 않고 렌더링하는 것이 최대의 특징으로, 특히 이 수법을 「타일 기반 지연 렌더링(Tile Based Deferred Rednering)」(TBDR)이라고 부른다. 기본적인 개념으로서, TBDR은 반복묘화를 하지 않는다는 이점이 있다.

「타일 기반(Tile Based)」 부분은, 관리상 묘화 대상 화면을 적당한 타일(블럭)으로 분할하여 관리하는 것을 의미하며, 묘화 그 자체는 각 타일별로 1번 밖에 하지 않는다. 기본설정된 타일 사이즈는 16×16 픽셀이라고 하지만, GPU의 설정에서 바꿀 수도 있다고 한다.

그래픽 응용 프로그램(게임 엔진 등)에서 그 장면의 묘화 커맨드군이 들어오면, 그것을 해석하여 정점 셰이더 처리를 하고, 어느 폴리곤의 어느 부분이 어느 타일에 대응하는지를 산출해간다(폴리곤이 복수 타일에 걸쳐있을 경우도 있지만, 그것도 당연히 배려한다).

이때, 들어온 폴리곤이 이미 그 타일에 할당되어 있던 폴리곤보다도 안쪽에 있을 경우에는 가려졌다고 판단하여 제거한다(이미 그 타일에 할당되어 있던 폴리곤이 반투명이었을 경우에는 살아남는다).

이렇게 그 장면의 폴리곤이 모두 들어오면 묘화 페이즈로 이행된다.

묘화는 타일 단위로 병렬처리된다. GPU 코어측의 파이프라인이 복수 있으면 한번에 묘화되는 타일 수가 늘어난다……라는 이미지이다.

그럼 타일 내의, 어떤 픽셀을 그릴 때를 생각해보도록 하자.

그 픽셀에 할당되어있던 몇개인가의 폴리곤 중, 시점 방향에 대해 가장 가까운 폴리곤의 픽셀만 채택되어 픽셀 셰이더에서 픽셀 음영처리되어 묘화용으로 출력된다. 반투명이 포함된 경우에는 더욱 안쪽 방향에 있는 폴리곤의 픽셀 음영처리를 위해 다시 픽셀 셰이더가 가동되게 된다. 반투명이 포함되면 무거워지는 것은 「PowerVR」도 마찬가지인 것이다.

타일 단위로 처음 폴리곤의 할당이나 기초처리를 해버리고, 정점 단위의 조명처리는 물론 픽셀 단위의 조명까지를 나중으로(Deferred) 돌리므로 「타일 기반 지연 렌더링(Tile Based Deferred Rendering)」이라는 이름이 붙은 것이다.

「PowerVR」아키텍처의 이점은?

오른쪽 그림은 「PowerVR SGX5」시리즈의 내부 블럭 다이어그램이다.

「Vertex Data Master」는 폴리곤을 구성하는 정점 데이터를 갖춘 블럭, 「Coarse Grain Scheduler(CGS)」는 이후의 범용 셰이더 유닛 「Universal Scalable Shader Engine(USSE)」의 기용을 관리하거나 발주하거나 하는 블럭이다.

「Tiling Co-Processor」는 화면 좌표계로 변환된 폴리곤들을 타일에 할당하고, 실제 픽셀 렌더링을 위한 각종 준비를 하는 곳.

「Pixel Data Master」는 실제 픽셀 묘화를 위해 관련 데이터를 모아둔 블럭이다. 여기서 「CGS」를 거쳐 「USSE」의 범용 셰이더 유닛을 픽셀 셰이더로 기용하여 픽셀 음영처리를 한다. 「Texturing Co-Processor」는 텍스처 유닛이다. 출력된 픽셀 값은 Pixel Co-Processor에서 모아서 쓰게된다.

「TBDR」의 이점은,

  1. Z버퍼가 없어서 메모리 이용효율이 높다.
  2. Z버퍼 접근이 없으므로 버스 소비가 적다.
  3. 묘화순서를 신경쓰지 않아도 올바르게 반투명처리된다.

는 것 정도로, 1. 과 2. 에 관해서는 낮은 소비전력으로 이어진다. 이 절전성능이야말로 「PowerVR」이 요즘 휴대기기나 임베디드 기기로의 채률이 높아진 것과 연결된 원인이라고 할 수 있다.

그 대신, 일반적인 GPU 보다도 묘화가 되기 전의 계산량이 많아진다는 인상이 있다. 하지만 「메모리 접근이 많아지는 것보다는 낫다」라는 철학 하에, 「PowerVR」은 이 아키텍처를 지켜서 진화해온 것이다.

iPhone에서의 채용이 기폭제가 되어, 임베디드 기기용 GPU로서 일약 주목을 받게 된「PowerVR」. 정말로 「PSP2(가칭)」에 채용되게 될지는 모르지만, 앞으로 그 동향을 주목할 필요가 있을 듯 하다

+ Recent posts