■ 하드웨어 스펙의 제한
많은 게이머들은 가정용 콘솔 게임과 PC 게임의 그래픽이 어째서 그렇게 큰 차이를 보이는지 의문을 표시한다. 사실 일반적인 콘솔 게임기의 경우, 멀티태스킹과 호환성 위주로 만들어진 PC와는 CPU의 형태와 운영체제의 구조가 다르기 때문에 그래픽 효율이 훨씬 뛰어나다.
그러나 최근에 출시되는 CPU나 그래픽 카드들은 XBOX360에 들어있는 하드웨어보다 훨씬 높은 성능을 보이는 제품들이 대부분이다. 그럼에도 불구하고 PC용 게임들의 그래픽 수준이 떨어지는 이유가 바로 PC 하드웨어의 중구난방인 스펙 때문이다.
PC 게임 개발자들은 언제나 이 문제로 시달림을 당하고 있다. 유저들의 PC에 어떤 그래픽 카드가 내장되어 있는지 알 수 없기 때문에, 그래픽을 어느 정도 포기하더라도 범용성에 중점을 두어 게임을 개발할 수밖에 없다. 물론 그래픽 옵션을 두어 해상도나 셰이더 효과 등을 끌 수 있는 여지를 마련해주고는 있지만, 그럼에도 불구하고 최소 수준의 그래픽 성능을 보장받을 수 있어야 개발자들도 안심하고 고사양의 게임을 만들 수 있는 것이다.
▲ XBOX360에는 3.2GHz의 파워PC 970 CPU가 세 개 들어있다
이전까지의 다이렉트X는 하드웨어의 사양에 비교적 너그러운 편이었다. 유저들 입장에서야 어느 컴퓨터에서나 최신 게임을 구동할 수 있으니 그다지 나쁜 이야기는 아니었지만, 게임 개발자 입장에서 보면 이는 상당히 골치 아픈 문제였다. 하드웨어의 최소사양이 정해진 바가 없는 바람에, 어느 유저의 어느 컴퓨터가 얼마나 힘든(?) 상황에서 자사의 게임을 구동하게 될지 감을 잡을 수 없었기 때문이다.
다이렉트X 10에는 하드웨어의 최소사양이 규정되어 있는 것은 바로 그런 이유에서이다. 사실 개발자들의 고민을 해결해 주기 위해서라기보다는 다이렉트X 10과 셰이더 4.0의 그래픽 자체가 약간은 고사양의 하드웨어를 필요로 했기 때문에 생긴 제한이지만, 결과적으로는 개발자들의 시름을 덜어주는 역할을 하게 되었다.
유저들 입장에서도 이는 반가운 소식이 될 수 있다. 다이렉트X 10을 지원하는 그래픽 카드를 구입하면 최소한의 그래픽 수준은 보장받을 수 있다는 이야기기도 하기 때문이다. 물론 새로 그래픽 카드를 구입해야 한다는 부담이 있기는 하지만, 어차피 윈도우 운영체제를 윈도우 비스타로 업그레이드하려는 유저들이라면 그 정도의 부담은 참아 넘길 수 있지 않을까?
다이렉트X 10에 하드웨어의 최소사양이 규정된 덕에, 유저들은 XBOX360 수준의 그래픽을 구현하는 게임을 PC에서 즐길 수 있게 되었다. 마이크로소프트는 이에 발맞추어 XBOX360으로 발매되는 게임들을 그대로 PC로 옮기는 작업을 계속하고 있다. XBOX360도 다이렉트X를 기반으로 하는 콘솔 게임기이기 때문에, PC로의 이전 작업은 크게 어려운 일이 아니기 때문이다. PC와 XBOX360에서 같은 게임을 온라인으로 연결해 즐길 수 있는 날도 멀지 않은 셈이다.
▲ 분리된 셰이딩 유닛의 연산 능력
▲ 통합된 셰이딩 유닛의 연산 능력
마이크로소프트가 다이렉트X 10용 그래픽 카드의 최소사양으로 제시한 스펙은 파이프라인의 구조나 스토리지 포맷 등 내부적인 형태에 대해 정의하고 있는데, 제조사 입장에서는 의외로 까다로운 부분들이다. 하지만 유저들과는 직접적인 연관이 별로 없으므로 자세한 설명은 생략하도록 하겠다.
▲ 마이크로소프트에서 발표한 다이렉트X 10의 요구사양이다
넓이
범위
unourmN, snorm
8,16
[0, 1] & [-1, 1]
floatN
32, 16, 11, 10
S32e8, S10e5, 6e5, 5e5
UnitN, sintN
8, 16, 32
[0, 2n-1], [2n-1, 2n-1-1]
RBGE
32
9/9/9e5
SBPG
8
[0, 1], non-linear
▲ 다이렉트X의 스토리지 포맷
■ 연산 사이클의 축소로 속도 증가
다이렉트X 10에서는 다이렉트X 9.0에 적용되었던 연산 단계를 크게 줄여 그래픽 처리 속도를 높이는 데 성공했다. 이는 결국 윈도우 XP보다 윈도우 비스타에서 게임의 처리 속도가 더 빨라졌음을 의미한다.
하지만 이는 어디까지나 다이렉트X 10 기반으로 만들어진 게임에 국한된 이야기이다. 다이렉트X 9.0로 만들어진 게임을 구동할 때는 이야기가 달라진다. 물론 ‘상위버전은 하위버전과 호환된다’는 원칙에 따라 윈도우 비스타에서도 다이렉트X 9.0 기반으로 만들어진 게임을 구동할 수 있는 것은 사실이지만, 윈도우 비스타의 다이렉트X 9.0 호환 모드, 즉 다이렉트X 9.0EX는 윈도우XP의 다이렉트X 9.0보다 속도가 떨어질 우려가 있다. 마이크로소프트는 이에 대비해 윈도우 비스타상에서 다이렉트X 9.0용 게임을 원활하게 구동하기 위한 지침서를 발표했지만, 이미 출시된 게임들에 대해서는 딱히 손쓸 방법이 없는 것이 사실이다. 실제로 이것이 어떤 영향을 미치는지는 다음 기회에 좀 더 자세히 살펴보기로 하자.
Operation
Dirext3D 9
Direct3D 10(Reference)
Draw
1470
154
Bind vs Shader
6636
416
Set Constant
3297
916
Set Blend Function
787
530
▲ 마이크로소프트에서 발표한 다이렉트X 10 백서에 실린, 펜티엄4 기반의 PC에서 다이렉트X 9.0과 10을 구동했을 때의 프레임당 명령 사이클이다. 다이렉트X 10의 연산 단계가 크게 줄어들었음을 확인할 수 있다
■ 스트림 I/O의 도입
다이렉트X 9.0까지는 모든 명령어가 하나의 함수 셋으로 고정되어 있었기 때문에, 고정함수 파이프라인에서 모든 처리가 끝나야만 비로소 그래픽 카드의 메모리에 데이터를 저장할 수 있었다. 하지만 다이렉트X 10부터는 지오메트리 프로세싱에서 처리 중인 데이터를 바로 그래픽 메모리에 저장할 수 있게 되었는데, 이것을 스트림 I/O라 한다.
버텍스 프로세싱을 거쳐 지오메트리로 만들어진 데이터는, 전체 프로세싱 중 어느 곳에서든 불러들일 수 있다. 따라서 비슷한 모양의 데이터를 반복적으로 처리하는 작업에서는 처음부터 연산을 할 필요 없이 메모리에 저장된 데이터를 불러들이기만 하면 되는 것이다.
운동장에 꽉 들어찬 수천 명의 관객을 3D로 표현하는 과정이 있다고 생각해 보자. 다이렉트X 9.0까지는 관객 한 사람 한 사람을 모두 따로 처리해야 하는 바람에, 일반인들은 꿈도 꿀 수 없는 엄청난 사양의 PC에서만 이런 그래픽을 구현할 수 있었다. 그러나 다이렉트X 10에서는 몇 사람의 샘플만 만들어 놓은 뒤, 그 데이터를 메모리에 저장해 두었다가 필요한 수만큼 불러오기만 하면 된다. 물론 사람의 얼굴이나 옷 색상 등의 텍스처를 처리하는 픽셀 프로세싱은 여전히 따로 처리해야 하지만, 지오메트리를 저장하는 것만으로도 처리 속도는 크게 빨라질 수 있는 것이다.
■ 다이렉트X 10에 대한 궁금증 몇 가지
Q) 다이렉트X 10은 윈도우 비스타에서만 돌아간다는데, 사실인가?
A) 사실이다. 마이크로소프트는 윈도우 비스타 이하의 버전에 다이렉트X 10을 적용할 생각이 없다는 사실을 명확히 밝힌 바 있다. 항간에 다이렉트X 9.0L이 윈도우 비스타용으로 출시될 것이라던가, 다이렉트X 9.0EX 버전이 다이렉트X 10과 호환될 것이라는 루머가 떠돌았지만, 이는 사실이 아니다.
이는 윈도우 비스타의 그래픽 처리 API의 구조가 윈도우 XP의 것과는 크게 다르기 때문이다. 다음 그림을 참조하기 바란다.
▲ 윈도우 XP의 그래픽 API
▲ 윈도우 비스타의 그래픽 API
Q) 다이렉트X 10은 다이렉트X 9.0과 호환이 안 된다던데?
A) 그렇지 않다. 윈도우 비스타에는 다이렉트X 9와의 호환성을 유지하기 위해 다이렉트X 9.0EX(또는 다이렉트X 9.0L)이 내장되어 있다. 개발자 입장에서는 몇 가지 명령어가 다른 명령어로 교체되었기 때문에 호환이 안 된다고 볼 수도 있겠지만, 유저들의 입장에서는 속도가 아주 조금 느려지는 것 외에는 큰 차이를 느끼지 못할 것이다. 사실 개발자 입장에서도 표준안을 지켜준다면 큰 문제가 되지 않을 부분이다.
Q) XBOX360도 다이렉트X 10을 쓴다는데?
A) 엄밀히 말하면, XBOX360은 다이렉트X 10을 쓰는 게 아니라 다이렉트X 9.0.L과 D3D 10을 쓰는 것이다. D3D 10은 다이렉트X 10의 일부이므로 그래픽적인 측면에서는 호환이 되지만, 그 외의 다른 다이렉트X의 부분들은 버전이 다르므로 100% 호환된다고는 볼 수 없다.
하지만 가장 중요한 그래픽적인 측면이 동일하므로, 마이크로소프트가 마음만 먹는다면 XBOX360과 PC에서 동일한 게임을 온라인으로 연결해 구동하는 것도 어려운 일은 아니다. XBOX360용 게임들은 앞으로 PC용으로 컨버전되어 출시될 확률이 매우 높으므로, 한 번 기대해보는 것도 좋겠다.
Q) 다이렉트X 10을 지원하는 AGP용 그래픽 카드는 없나?
A) PC 관련 기사를 다루는 영국의 미디어인 ‘The Inquirer’지에 따르면, G84 프로세서를 탑재한 엔비디아의 지포스 8600 그래픽 카드가 지포스 7600GS에 이어 AGP 슬롯을 지원하게 될 예정이라 한다. 이 그래픽 카드는 20만원 아래의 가격으로 금년 4월 중에 출시될 것으로 예상된다.
(출저:게임메카)