Appearance
GPU와 셰이더 기술의 기초 지식 (4)
[칼럼 핵심 요약]
DirectX 8시대의 프로그래머블 셰이더는, GPU 메이커 마다의 약간의 아류 버젼이 몇몇 혼재한 관계로 버젼 1.x라고 규정된다. 그리고 2002년에는 새로운 프로그래머블 셰이더인, 버전 2.0 사양을 서포트한 DirectX 9가 발표되게 된다.🌐 원문 링크: GPUとシェーダ技術の基礎知識(4) (Mynavi News)
📅 원문 발행일: 2008-02-15 | ✍️ 저자: 西川善司 (니시카와 젠지 / 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 8시대의 프로그래머블 셰이더는, GPU 메이커마다의 약간의 아류 버젼이 몇개인가 혼재한 관계로 버젼 1.x라고 규정된다. 그리고 2002년에는 새로운 프로그래머블 셰이더인, 버전 2.0 사양을 서포트한 DirectX 9가 발표되게 된다.
2002년/2003년~프로그래머블 쉐이더 2.0과 제1기 DirectX 9시대
DirectX 8시대의 프로그래머블 셰이더는, GPU 메이커 마다의 약간의 아류 버젼이 몇몇 혼재한 관계로 버젼 1.x라고 규정된다. 그리고 2002년에는 새로운 프로그래머블 셰이더인, 버전 2.0 사양을 서포트한 DirectX 9가 발표되게 된다.
프로그래머블 셰이더 사양은, Shader Model(약해서 SM)의 키워드의 뒤에 버젼 번호를 붙이는 것으로 아키텍쳐 세대를 가리키는 것이 요즘부터 일반화하게 된다. 즉, 예를 들어, DirectX 9세대는 「SM2.0」대응 GPU가 대두하는 시대가 되었다……라고 하는 것이다.
SM2.0에서는, SM1.x와 비교하면 보다 긴 쉐이더 프로그램을 실행할 수 있게 되어, 명령의 종류가 늘어나, 사용할 수 있는 명령의 조합의 제한도 저감되었다. 또, 지금까지 버텍스 쉐이더만 활용되고 있던 부동소수점(Floating-Point) 연산 정밀도가 픽셀 쉐이더에 있어서도 이용할 수 있게 되어, 픽셀 단위의 셰이딩(Shading)의 연산 정밀도라고 표현할 수 있는 다이나믹 레인지도 넓어지게 되었다. 이 확장이 "하이 다이내믹 레인지 렌더링"(High Dynamic Range Rendering : HDR Rendering)이라고 불리는 후속 실시간 3D 그래픽에서 새로운 트렌드를 만들어내는 계기가 된다.
DirectX 7/하드웨어 T&L 시대의 제1호 GPU, 그리고 DirectX/첫 프로그래머블 쉐이더 대응 GPU가 함께 NVIDIA로부터 리리스 되고 있었던 것에 대해, DirectX 9/SM2.0 대응 GPU의 초호기는 ATI로부터 릴리스된 Radeon 9700이 된 것도 감개 깊은 일 NVIDIA도 이에 대항하는 GeForce FX를 부딪쳐 오지만, 제조상의 문제를 안고 있던 것에 퍼포먼스적으로도 고전해, 이 SM2.0 시대는 ATI 우세인 채 경과해 가게 된다.
SM2.0 대응 최초의 GPU는 ATI에서 리리스된 Radeon 9700이었다. 후의 9800, 하위의 9600/9500 시리즈도 인기를 얻었다
「하프라이프 2 (Half-Life 2)」(VALVE). SM2.0 셰이더 세대 GPU의 연산 능력을 극대화하여 3D 게임 그래픽의 패러다임을 바꾼 명작 타이틀
그리고 SM2.0 시대 ATI 우세를 결정한 것은 요즘 가장 등장하는 것이 기다려진 VALVE 사의 대작 게임 '하프 라이프 2'가 ATI의 Radeon 9500/9600/9700/9800 시리즈를 최적의 GPU로 마케팅 전략을 전개한 것이다.
!['하프라이프2'(VALVE)는 당초 2003년 발매 예정이었지만, 연기에 연기가 잇따라 결국 발매된 것은 2004년 말이었다. 하지만 좋든 나쁘든 하프 라이프 2가 SM2.0 세대 GPU를 담아내는 데 기여했다. (C)2004 Valve Corporation. All rights reserved. '하프 라이프 2'(VALVE)는 당초 2003년 발매 예정이었으나 연기로 연기가 0년 하지만 좋든 나쁘든 하프 라이프 2가 SM2.0 세대 GPU를 담아내는 데 기여했다. (C)2004 Valve Corporation. All rights reserved. registered trademarks of Valve Corporation in the United States and/or other countries. All other trademarks are property of their respective owners.*
2004/2005/2006년~프로그래머블 쉐이더 3.0과 제2기 DirectX 9시대
SM2.0은 "2.0"이라고 하면서도 실은 1.x 때와 마찬가지로 몇 가지 사소한 아류를 낳았다. NVIDIA는 GeForce FX로 프로그래머블 버텍스 쉐이더 2.0a와 프로그래머블 픽셀 쉐이더 2.0a를 자칭해 구현하고 있다.
DirectX 9의 등장으로부터 약 2년이 지난 2004년, 마이크로소프트는 DirectX 10은 발표하지 않고, 새로운 DirectX 9의 마이너 버전 업판을 발표해, 프로그래머블 쉐이더 사양 3.0, 즉 SM3.0에의 대응을 완수한다.
SM 버전이 1.0 오른데 DirectX 버전을 올리지 않은 것은 "나중에 나오는 Windows Vista에 맞추기 위해" "나중에 나오는 ATI제 SM3.0"미"대응 GPU를 배려했기 때문" 등 여러 설이 있지만 자세한 것은 불명하다.
SM3.0에서는 사실상 셰이더 프로그램의 프로그램 길이 제한이 철폐되어 버텍스 셰이더, 픽셀 셰이더 양쪽의 명령 세트의 확충도 이루어지고 있다. SM2.0에서는 동적인 조건 분기 반복은 버텍스 쉐이더에 한정되어 있었지만, SM3.0에서는 픽셀 쉐이더에서도 서포트되게 되어, 사실상, 프로그래머빌리티면에 있어서 버텍스 쉐이더와 픽셀 쉐이더의 격차가 없어졌다. 또, 버텍스 쉐이더로부터도 텍스처에의 액세스를 가능하게 하는 신기능 「Vertex Texture Fetching:VTF」(일명 버텍스 텍스처링)의 서포트도 이때 강하게 어필되고 있다.
SM3.0 대응의 최초의 GPU는 NVIDIA로부터 발표된 GeForce 6800 시리즈가 되어, 의외로 ATI는 같은 2004년에 등장시킨 새로운 GPU, Radeon X800 시리즈에 있어서 SM2.0 대응에 머무르는 선택을 한다.
NVIDIA GeForce 6800 시리즈. 최초의 SM3.0 대응 GPU는 다시 NVIDIA로부터 등장했다
Radeon X800 시리즈는, 버텍스 쉐이더를 2.0a, 픽셀 쉐이더를 2.0b로 확장한 개량판 SM2.0 대응 GPU가 되어, 2004년은 2대 거두의 발길이 갖추어지지 않고, 유저가 혼란하는 해가 되었다. SM2.0도 "2.0"이라고 하면서도, 이렇게 ATI와 NVIDIA가 독자적으로 확장해 버린 것으로 세세한 버전 번호의 불일치도 나오고 버리고 있다.
2004년은 신버스 인터페이스 「PCI-Express」도 제공되기 시작한 해이며, 그래픽 카드의 버스도 지금까지의 AGP에서 PCI-Express x16 버스로의 이행기를 맞이하게 된다. 2004년~2005년 유저는 그래픽카드 교체 시 'SM2.0(ATI)인가, SM3.0(NVIDIA)인가'의 선택과 동시에 'AGP인가 PCI-Express인가'라는 궁극의 선택을 해야 했던 것이다.
그런데, NVIDIA는 다음 2005년에는 2세대째의 SM3.0 대응 GPU 「GeForce 7800」시리즈를 투입. 「2004년은 SM2.0의 숙성에 철저해야 한다」를 지론하고 있던 ATI도, 2005년에는 NVIDIA에 늦는 것 약 1년 반, ATI 최초의 SM3.0 대응 GPU 「Radeon X1800」시리즈를 투입한다. 다만, Radeon X1800은 SM3.0의 기본 피쳐는 모두 억제하고 있었지만, VTF에는 미대응이었다.
계속되는 2006년에는 NVIDIA는 제3세대의 SM3.0 대응 GPU 「GeForce 7900」시리즈를 발표, 이것에 대항한 ATI는 Radeon X1900 시리즈를 투입. 양사, 모두 선대의 형번에 "+100"했을 뿐의 퍼포먼스 향상판이라고 하는 포지셔닝의 제품으로, 성능면 이외에서 다루어 눈을 끄는 부분은 없었다. 덧붙여 ATI는 Radeon X1900 시리즈에서도 VTF에는 미대응의 자세를 무너뜨리지 않고.
SM3.0 대응 GPU가 ATI, NVIDA의 2대 거두에서 나온 것은 좋지만, VTF 기능의 서포트에 대해서는 양사의 발길이 갖추어지지 않고, SM3.0에 있어서의 VTF 기능은 마이너인 기능이 되어 버렸다. 이러한 근간기능의 서포트한다/하지 않지만 유저나 실시간 3D 그래픽스 기술의 진화 그 자체에 준 영향은 적지 않고, 와야 할 DirectX 10을 맞이하는데 있어서의 큰 과제가 된 것 같다. (계속)
SM3.0만의 특수 기능으로 어필된 "VTF". 그러나 ATI가 VTF를 지원하지 않았기 때문에 VTF의 효과는이 NVIDIA가 만든 샘플 데모 정도에서만 볼 수있었습니다.
(트라이Z 니시카와 젠지)