Game Dev/Article

Introducing DirectX 11

AKer 2008. 8. 17. 01:55
반응형
원문 :
http://www.gamasutra.com/view/feature/3759/sponsored_feature_introducing_.php

번역 :
최유표



Microsoft는 Gamefest Conference에서 DirectX 11에 대한 API를 발표하였다. 이에 따르면 개발자는 CPU와 GPU를 통한 개발을 보다 쉽게 할 수 있는데, DirectX 11의 주요 사항은 다음과 같다.

Feature Highlights
  1. Down-level hardware and operating system support
  2. Improved multithreaded device
  3. New hardware stages for tessellation
  4. Improved texture compression
  5. Shader Model 5.0
  6. Compute shader
  7. Additional features


1. Down-level hardware and operating system support
Windows Vista와 DX 10은 Windows 하부의 Windows Display Driver Model과 드라이버의 성능을 향상시키도록 설계되었다. 또 DX 10의 API는 명확하고 간단하게 디자인되어 프로그램 제작을 용이하게 만들엇다. DX 11은 이러한 DX 10의 많은 부분을 업그레이드 하였으며 DX 10과 DX 10.1에 익숙한 사람들도 무리없이 받아들일 수 있을 것이다. 개발자들은 DX 11의 한두가지 조작을 통하여 DX 10, 10.1, 11 등 다양한 하드웨어 타겟에 대한 코드를 작성할 수 있다. DX 11의 최종 릴리즈는 차기 Windows에 초점을 두었지만, Windows Vista에서도 무난하게 작동할 것이다.

2. Improved multithreaded device
이전 버전의 Direct3D는 단일 CPU 환경과 제한된 수의 Thread에 초점을 두고 디자인되었으나 DX 11은 GPU와 Multi-Core CPU 선택이 가능하다. API 모델과 드라이버 모델의 수정을 통하여 CPU를 통한 연산을 향상시켰고, 비동기적인 장치 접근도 가능하게 되었다.

- Direct3D 장치와 드라이버의 동기화 성능을 향상시켜, 비동기적인 API 호출과 자원 할당이 가능하다.
- Direct3D 장치는 현재 다중 렌더링을 지원하고 있다. 1) 수행해야 할 명령을 가지고 있는 컨텍스트 2) 개발자가 추가적으로 생성한 연기된 컨텍스트. 연기된 컨텍스트에 대한 작업은 여러 Thread와 Core에서 이루어질 수 있다. 이러한 점은 GPU 명령들이 병렬적으로 렌더링 작업으로 한꺼번에 보내어질 수 있게하며, 메인 컨텍스트가 작업이 가능할 때 보내어진다.

사용자 삽입 이미지

3. New hardware stages for tessellation
DX 11에서는 렌더링 파이프라인에 3가지 새로운 Stage가 추가되었다. (Hull Shader, Tessellator, Domain Shader) 이 Stage들은 유연하며 조작 가능한 Tessellation이 가능하게 한다. Hull과 Domain Shader가 프로그래밍할 수 있으며 Tessellator는 고정된 역할을 한다. 하지만 Tessellator는 이미 생성된 위치 정보를 조작할 수 있는 많은 세팅들을 가지고 있다.
사용자 삽입 이미지

- Hull Shader
입력 데이터를 매우 빠르게 수정할 수 있다. 종종 파이프라인에 대해 논할 때, 이 Shader의 변경된 점을
(예를 들어 Catmull-Clark 사각형 메쉬에서 Bezier Patch로의 변경) 언급한다.
- Tessellator
이 고정된 유닛은 간단하게 데이터 확장자, 혹은 IHVs가 사용자의 조작을 쉽게 병렬화할 수 있는 위치에 있는 것 쯤으로 이해할 수 있다. 이 유닛은 Tessellation 인자를 입력으로 받아 UV 공간에 정점들을 삽입한다.
- Domain Shader
이 유닛은 생성된 모든 정점에 대해 실행되며 표면의 공식들이 구해지는 단계에 위치한다. 이 Stage의 입력은 UV 표면이다. 개발자들이 여러가지 공식에 적용시킬 수 있도록 이 파이프라인에서는 여러가지 입력 타입을 지원한다. (Quad, Triangle, Poly-Line)

4. Improved texture compression
게임에 쓰이는 텍스쳐들은 종종 가장 많은 메모리 영역을 사용한다. 따라서 실시간 렌더링을 위해 이 사이즈를 줄여 작업 영역과 메모리 대역폭을 줄이는 것이 필요하다. DX 11에서는 개발자들에게 BC6(Block Compressed)과 BC7이라는 새로운 압축 포맷을 제공하며, 효율과 성능 그리고 품질에 대한 이슈를 해결하였다.

1) Compression of High Dynamic Range (HDR) Image Sources
HDR (High Dynamic Range) 리소스는 요새 게임에서 빈번하게 사용되고 있다. 적절한 Tone Map 연산을 이용해 HDR을 보다 사실적으로 표현할 수 있다. 새로운 BC6 포맷은 고해상도의 6:1 압축을 지원하며, 하드웨어를 통하여 해제할 수 있다.
사용자 삽입 이미지

사진의 왼쪽이 HDR 오른쪽이 BC6이다. 가운데는 Absolute Error 이미지인데 크게 번지거나 깨진 부분이 없다는 것에 주목하라. 이는 사람의 눈에서는 두 이미지의 차이를 느끼기 힘들다는 것을 말해준다.

2) Low Dynamic Range (LDR) / Normal Map Compression
BC7 포맷은 3:1 비율의 8-Bit Low Dynamic Range를 지원한다. 아래에 BC3과 BC7을 비교한 사진이 있다. Abs Error를 보지 않고 양쪽 측면의 사진만 보더라도 BC3 이미지에서는 큰 노이즈가 존재하는 것을 알 수 있다. 반면 BC7에서는 노이즈가 확연하게 줄었다. 따라서 개발자와 아티스트들은 보다 적은 메모리를 사용하는 Linear Texture나 Normal Map을 만들 수 있다.
사용자 삽입 이미지

5. Improved texture compression
DX 10에서는 정수형 타입과 비트연산 등을 지원하는 Shader 모델 4.0이 소개되었으며, DX 10.1에서는 MSAA 샘플이 접근 가능한 Shader 모델 4.1이 추가되었다. DX 11에서는 개발자의 편의성을 향상시키고 2배의 정밀도를 가진 Shader 모델 5를 지원한다.

6. Compute Shader
GPGPU에 대한 아이디어는 이미 많은 사람에게 친숙할 것이다. DX 11에서는 Compute Shader가 추가됨으로써 GPU를 렌더링이 아닌 다른 용도로 사용하는 일이 보다 쉬어졌다.

7. Additional Features
1) Conservative oDepth
Shader가 oDepth 레지스터를 통하여 Depth 버퍼에 값을 쓸 때 IHVs는 Z Acceleration Structure들과 알고리즘을 중단해야 했다.  견고한 DX 11의 oDepth 보장된 영역에서만 Shader가 값을 쓰도록 하며, 이는 하드웨어가 퍼포먼스 하락 없이 가속화가 가능하도록 한다.
2) 16K Texture Limits and Texture Clamps
DX 11에서는 최대 텍스쳐 크기를 4K에서 16K로 늘렸으며 GPU에서 Mipmap 레벨을 조정하기 위한 MIP-LOD 컨트롤도 추가되었다.

Reference
http://msdn.microsoft.com/directx/presentations
http://msdn.microsoft.com/en-us/library/bb173477.aspx

반응형

'Game Dev > Article' 카테고리의 다른 글

rand 함수의 올바른 사용  (0) 2008.09.09
Texture Blending  (0) 2008.09.08
정밀도가 높은 수행시간 측정  (0) 2008.08.07
Internal Reference Count  (0) 2008.08.06