한주만 쉰다는 것이, 죄송스럽게도 긴 휴식을 가지고 다시 등장습니다.
지난 시간까지 DirectX11 의 기본 API 를 간단히 언급했었습니다.
쉬는 사이에 안승근님께서 DirectX11과 관련된 기본적인 API 에 대한 글을 작성하기 시작하셨기 때문에
앞으로 기본적인 API 위주로 내용을 언급하지 않습니다.
< DirectX9 까지의 특징 >
DirectX는 Windows95 운영체제와 함께 처음 공개된 후에,
어느덧 현세대까지 발전을 거듭했습니다.( 세월 참 빠르죠? ^^ )
너무 오랜 시간 전은 저도 잘 몰라서 DirectX7 버전부터의 가장 큰 변화를 하나씩 언급해 보겠습니다.
DirectX7 버전부터 변환과 라이팅(T&L) 을 위한 GPU가 활용되기 시작했고,
DirectX8 버전부터는 'Shader' 라는 GPU 를 활용한 프로그래밍이 도입되어서
현재 가장 개발자에게 주목받는 영역이 되었습니다.
개인적인 견해차이가 있겠지만, 저는 DirectX9 까지의 발전 과정 중에
가장 큰 변화로 바로 이 'GPU 의 활용'이라고 생각하고 있습니다.
그러면 DirectX9 까지의 발전에서 변심(?)하지 않고,
저희를 언제나 반갑게(?) 맞이해 주었던 부분은 어떤 것이 있을까요? ^^
그것은 바로 API 를 설계할 때 항상 싱글 코어를 고려하고 만들었다는 것입니다.
또 다른 부분은 API 자체가 GPU 의 정점 처리 기능을 규정하고 있다는 것입니다.
언제나 '정점입력-->래스터라이즈-->픽셀처리-->디스플레이' 라는 큰 단계를
API 레벨에서 정의하고 있었습니다.
그 동안 우리는 이것은 Fixed pipeline 이라고 불렀습니다.
아래 이미지는 DirectX8 & 9 의 파이프라인입니다.
이미지 출처 : http://pc.watch.impress.co.jp/docs/column/kaigai/20090804_306876.html
사실 DirectX8 & 9 는 크게 차이가 없습니다.
파이프라인상에서 굳이 찾아야 한다면, 텍스쳐 메모리를 버텍스 쉐이더 단계에서도
참조할 수 있다는 정도일 뿐입니다.
간단히 제가 하고 싶은 말을 정리해 보자면,
'싱글코어 기반의 DirectX 의 시대는 이제 역사의 뒤로 사라지게 될 것이며,
GPU 는 더욱 복잡한 기능을 요구하게 될 것이다' 정도로 정리하겠습니다.
( 예언은 아니고, 이미 이렇게 되고 있는 상황이죠..^^ )
< 새로운 시대를 여는 DirectX11 >
아래는 DirectX11 의 파이프라인입니다.
잘 보시라고 그냥 크게 띄웁니다..^^
이미지 출처 : http://pc.watch.impress.co.jp/docs/column/kaigai/20090804_306876.html
DirectX11 의 가장 큰 특징을 저는 크게 3가지로 나누어 보았습니다.
- GPU Tessellation.
- Compute Shader.
- Multi-threaded rendering.
사실 DirectX11 의 많은 부분은 X-Box360 에서 이미 사용되고 있습니다.
X-Box360 의 ComputeShader 지원은 모르겠으나, 나머지 두가지는 지원하고 있습니다.
X-360을 언급한 이유는 이들 기능이 이미 어느 정도 검증을 받은 기능이라는 점을 강조하고 싶어서 입니다.
( 물론 최신 버전이기 때문에 더 빨라지고, 더 좋아진 부분이 많습니다.^^ )
DirectX11 의 큰 패러다임은 '놀지마' 입니다.
이제는 멀티코어(CPU)와 GPU에게 최대한 많은 일을 시킬 수 있는 구조로
하드웨어를 구성했고, 그것을 기반으로 해서 런타임과 API 를 설계하고 만들었습니다.
DirectX9 까지는 API 가 변화를 주도했다면,
이제는 DirectX API 변화를 하드웨어가 주도하고 있다고 볼 수 있습니다.
그러다보니 자연스럽게 API 도 더욱 하드웨어에 가깝게 설계되었습니다.
대표적으로 OutputMerge 를 지칭하는 OMxxxx 계열과
InputAssembler 를 지칭하는 IAxxxx 계열 등이 있습니다.
혹시 DirectX8-->9 로 포팅 작업을 하셨던 분들이 이 글을 읽으시는지 모르겠습니다만,
8-->9 의 변화는 API 차원에서 변화가 컸기 때문에 매우 단순했습니다.
하지만 이제는 하드웨어가 크게 변했기 때문에,
단순 포팅 작업 정도로 생각하시면 큰 오산입니다.
물론 단순히 API 만 교체해도 성능 향상을 얻을 수 있습니다.
DirectX11 은 하드웨어 오버헤드를 줄이기 위해 많은 최적화 작업을 수행했다고 합니다.
새로운 DirectX 의 시대가 왔다는 느낌이 드시나요? ^^
'DirectX 11' 카테고리의 다른 글
| [DX11_#4]텍스트, 버튼 출력 (0) | 2009/11/10 |
|---|---|
| [JumpToDX11-6] 커맨드(Command)... (0) | 2009/11/09 |
| [JumpToDX11-5] 새로운 시대를 여는 DirectX11... (6) | 2009/11/02 |
| [DX11_#3]기본적인 설정 (0) | 2009/10/22 |
| [DX11_#2]D3D Buffer( 2 / 2 ) (0) | 2009/10/13 |
| [DX11_#1]D3D Buffer( 1 / 2 ) (0) | 2009/09/22 |




댓글을 달아 주세요
중요한 것은 XP 유저가 더 많은데 XP 유저는 DirectX 10 이상의 게임을 돌릴 수 없다는 것이죠. DX8->9 업그레이드는 해도 그만 안해도 그만이었지만 9->10,11은 하면 XP 유저를 잃습니다. 새로운 DirectX 가 온 것은 맞을지 몰라도 새로운 시대는 아직 아네요.
현재 DX9가 가장 많은 유저를 포용할 수 있다는 것에
저도 부정하지는 않습니다.^^
단어 선정에 문제가 있다면,
앞으로 주의하도록 하겠습니다.^^
단어 선정의 문제는 핵심이 아니고.. MS 를 압박해서 XP에서 DX11 지원을 요구하는 것이 본질 아닐까요.. 혹은 XP 는 DX11 이 정말 안되는가에 대한 분석 기사 라든지.. 현실은 무시한채 DX11 좋아염~ 하면 또 MS 제품 프로모션하는구나 라고 느낌이 듭니다. (하긴 원래 그러려고 만든 사이트에 와서 헛소리하는 저도 좀 미친놈이네요;
안녕하세요. 유익한 포스팅 잘 보고 갑니다만, 조금 아쉬운 부분이 있어 comment 를 남깁니다. 명색이 '공식 팀 블로그' 인데 조금은 formal 한 용어와 분위기의 포스팅이 되었으면 좋겠습니다. (구체적으로 "이미지 출처 : (아마도)ATI"
앞으로도 계속 좋은 포스팅 부탁드립니다.
좋게 봐주셨다니, 감사합니다.
해당 이미지의 출처는 정확하게 수정했습니다.
지적해 주지 않으셨다면,
모르고 지나칠뻔 한 문제가 있었습니다.
( ATI 가 아니였더군요..^^ )
감사드립니다.^^
포스팅의 분위기에 대한 조언은
적극적으로 개선하도록 하겠습니다.^^
대체 왜 DX10 부터 XP에 대한 지원을 하지 않는 것인가?
뭐 결론부터 따지자면 "지원이 불가능 해서" 가 아니라
"새 운영체제 판매를 위해서" 가 아닐까 싶다..
GPU Tessellation.
Compute Shader.
Multi-threaded rendering.
이 세가지 XP에서 충분히 구현 가능하다..
(안될게 없지 않은가? 있다면... 왜 안되는지 말을 해보라)
새로운 OS가 나오면 최대한 팔아먹어야 하니까..
M$는 이래서 안된다.. 물론 나도 회사에서 M$의 노예가 되어
어쩔수 없이 M$기반의 프로그램을 짜야 하지만..
솔직히 가끔 아니다 싶을때가 많다..ㅎㅎ