Appearance
GPU와 셰이더 기술의 기초 지식 (6)
[칼럼 핵심 요약]
DirectX 10/SM4.0은 Windows Vista에 독점적으로 공급되는 방침도 발표되어 Windows XP 이전에는 제공되지 않게 되었다. 실질적으로 실시간 3D 그래픽스의 진화는 Windows Vista 이후에 맡겨진다. 실은, 이 DirectX 10/SM4.0의 Windows Vista에의 전용 공급은, 드라이버 모델의 대폭 개변이 이유의 하나가 되고 있다.🌐 원문 링크: GPUとシェーダ技術の基礎知識(6) (Mynavi News)
📅 원문 발행일: 2008-02-29 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 고정 기능에서 완전 프로그래머블로: 본문에서 다루는 플랫 셰이딩(Flat Shading)과 초기 고정 파이프라인(Fixed-Function Pipeline) 시대는 이후 DirectX 8/9의 버텍스/픽셀 셰이더 분리 시대를 거쳐, 현재는 컴퓨트 셰이더, 메시 셰이더(Mesh Shader), 레이트레이싱 파이프라인(DXR/Vulkan Ray Tracing)으로 완전히 통합·진화했습니다.
- 하드웨어 인터페이스의 진화: AGP 및 초기 PCI 인터페이스에서 현대의 PCIe 4.0/5.0 및 고대역 메모리(HBM3 / GDDR6X) 구조로 발전하여, 초당 수 테라바이트급의 메모리 대역폭을 소화하고 있습니다.
- 소프트웨어 래스터라이저의 부활: 최신 언리얼 엔진 5의 Nanite는 GPU 하드웨어 래스터라이저의 한계를 극복하기 위해, 매우 미세한 마이크로 폴리곤 클러스터에 대해 컴퓨트 셰이더 기반의 고속 소프트웨어 래스터라이저를 병행 사용하는 등 기술이 나선형으로 진보하고 있습니다.
📖 본문 해설
[원문 리드문] > DirectX 10/SM4.0은 Windows Vista에 독점적으로 공급되는 방침도 발표되어 Windows XP 이전에는 제공되지 않게 되었다. 실질적으로 실시간 3D 그래픽스의 진화는 Windows Vista 이후에 맡겨진다. 실은, 이 DirectX 10/SM4.0의 Windows Vista에의 전용 공급은, 드라이버 모델의 대폭 개변이 이유의 하나가 되고 있다.
DirectX 10/SM4.0은 Windows Vista 전용. 엄격한 버전 제어로 아류 버전 없음
DirectX 10/SM4.0은 Windows Vista에 독점적으로 공급되는 방침도 발표되어 Windows XP 이전에는 제공되지 않게 되었다. 마이크로소프트는 Windows Vista 발매 직전에 「Windows XP의 지원 연장」을 발표했지만, 「DirectX 10/SM4.0이 Vista 이후 전용」이라고 하는 방침은 바꾸고 있지 않다. 실질적으로 실시간 3D 그래픽스의 진화는 Windows Vista 이후에 맡겨지게 되었다.
실은, 이 DirectX 10/SM4.0의 Windows Vista에의 전용 공급은, 드라이버 모델의 대폭 개변이 이유의 하나가 되고 있다.
DirectX가 제공해 온 그래픽 서브 시스템의 Direct3D는, 복수의 어플리케이션으로부터 동시 이용되는 것을 상정하고 있지 않았다. Windows Vista에서는, 그 GUI가 Direct3D 9(Ex)에 의해 실현되고 있어 이것과는 별도로 Direct3D 10도 구현되고 있다. 동시에 복수의 3D 어플리케이션을 동작시키거나, GPGPU 용도에의 대응까지를 시야에 넣으면, 낡은 싱글 태스크 전제의 설계에서는 형편이 나빴던 것이다. 거기서 Windows Vista라고 하는 큰 변혁에 탑재해 릴리스되는 DirectX 10/SM4. 0에서는, 멀티스레드에 대응해, 한층 더 동작 안정도도 향상시킨 새로운 GPU 드라이버 소프트웨어의 아키텍쳐를 채용했다. 그것이 "WDDM : Windows (Vista) Display Driver Model"이다.
WDDM에서는 드라이버 소프트웨어가 유저 모드와 커널 모드로 나뉘어, 어플리케이션으로부터의 부당한 드라이버 제어등으로 시스템 크래쉬가 일어나기 어려운 설계로 하고 있다. 또, GPU의 하드웨어적인 멀티스레드 대응도에 따라 WDDM 1.0/2.0/2.1이라고 하는 버젼 분할이 이루어지고, WDDM 1.0은 DirectX 9세대 이전의 구 설계의 GPU를 WDDM 실장한 것, 그리고 미리 DirectX 10을 타겟으로 해 개발된 GPU는 WDDM 2.0 이후의 실장 1.0과 2.0/2.1의 차이는 실질적으로는 멀티스레드의 대응 레벨의 차이를 나타내고 있으며, 1.0은 비선점형(*1)인 멀티스레드에 대응하고, 2.0/2.1은 선점형인 멀티스레드(*2)에 대응한다. 2.0과 2.1의 차이는 주로 멀티스레드 입도의 차이에 있으며, 2.1이 더 세세한 타겟 단위로 스레드 전환을 할 수 있다.
Windows Vista 그래픽 서브시스템
🔍 [인포그래픽 도해 한국어 번역: Windows Vista 그래픽 아키텍처]
- 좌측 (어플리케이션 계층): 3D 어플리케이션 (게임, WPF, 윈도우 데스크톱)
- 중앙 (DirectX 런타임 & DWM): Direct3D 10 / 9Ex API 런타임
데스크톱 창 관리자(DWM) 합성 - 하단 (WDDM 커널 드라이버): Windows 디스플레이 드라이버 모델(WDDM) 스케줄러
GPU 하드웨어 직접 제어
Windows Vista 그래픽 서브시스템
(*1,*2)논프리엠프티브와는 자발적으로 thread 전환을 실시해 실현하는 멀티 thread 실장 방법. 선점은 타임 쉐어링 등의 수법을 이용하여 자동으로 스레드를 전환하는 멀티 스레드 구현 방법.
DirectX 8에 시작된 프로그래머블 쉐이더이지만, SM1.x/2.0/3.0라고 하는 버전 책정은 있었지만, GPU 메이커마다의 독자 확장이 있어 아무래도 최종적으로는 혼돈으로서 버리고 있었다. 이러한 아류 버전의 혼재는 사용자의 제품 선택을 어렵게 만들었을 뿐만 아니라 소프트웨어 업계에서의 반발도 컸다. 그래서 마이크로소프트에서는 DirectX 10 이후에서는, DirectX 9 이전에 존재한 Caps(Capability Bits Test)라고 불리는, 그 그래픽 서브 시스템의 서포트 기능을 시험하는 구조를 폐지해, 엄밀한 버젼 컨트롤을 실시하는 방책을 내세우고 있다. 이에 따라 DirectX 10세대/SM4.0 대응을 구한 GPU는 DirectX 10/SM4.0의 모든 기능을 실현할 수 없어야 했다. DirectX 9/SM3.0 시대의 NVIDIA:VTF 지원, ATI:VTF 비지원과 같은 것은 DirectX 10/SM4.0 시대에서는 일어나지 않는다는 것이다.
이는 실시간 3D 그래픽의 기본 기능 구현에 있어서 단락을 한 것과 앞으로의 기능 강화가 몹시 복잡한 고도로 업계 단체 내에서 엄중한 논의를 거쳐야 한다는 것도 관계가 깊다.
(트라이Z 니시카와 젠지)