5.3 하드웨어의 근본적 혁신: 셰이더(Shader)의 진화
학계의 해커(Hacker)들이 어떻게든 자신들의 기괴한 연구 공식을 시각 데이터로 위장하여 속여 넘기며 GPU에게 구걸하고 있을 때, 정작 그 야수 같은 칩을 설계한 원작자 엔비디아(NVIDIA)의 코어 엔지니어들도 그래픽 처리 장치의 거대한 한계, 즉 닫힌 파이프라인(Pipeline)의 질식할 것 같은 답답함을 절감하고 있었다. 기존의 딱딱한 배관처럼 굳어버린 하드웨어 회로는 3D 게임 개발자들이 요구하는 다이내믹한 렌더링(Rendering)을 소화해 내기에 너무나 구시대적이고 관료주의적이었다.
이 5.3장에서는 고장난 시계처럼 정해진 반사 효과와 색칠 공부만 수동적으로 반복하던 ‘고정 기능 파이프라인(Fixed-Function Pipeline)’ 의 철옹성 같은 굴레가 어떻게 박살 나게 되었는지 그 하드웨어적 대혁신을 다룬다. 2001년, 엔비디아가 세계에 던진 충격적인 선언, 게임 개발자 스스로 GPU의 연산 세포를 직접 통제하고 코딩(Coding)할 수 있는 이른바 ‘프로그래머블 셰이딩(Programmable Shading)’ 기술을 품은 지포스(GeForce) 3의 등장을 조명한다.
나아가 오직 미학적인 목적을 위해 허락되었던 이 그래픽 파이프라인의 ‘유연성(Flexibility)’ 확보가, 뜻밖에도 범용 과학 컴퓨팅(General-Purpose Computing)을 갈망하던 외부 해커 연구자들의 열망과 완벽하게 스파크를 일으키며 빚어낸 거대하고 운명적인 하드웨어의 나비효과(Butterfly Effect)를 입체적으로 해부해 본다.
5.3.1 고정 기능 파이프라인(Fixed-Function Pipeline)의 굴레를 벗어나다
초기 3D 그래픽(3D Graphics) 시대의 GPU들은 엄청난 클럭(Clock) 속도를 지닌 괴물이었지만, 그 두뇌 구조는 속이 꽉 막힌 거대한 콘크리트 공장의 컨베이어 벨트(Conveyor Belt)와 같았다. 다이렉트X(DirectX)나 OpenGL 같은 소프트웨어가 점(Vertex)과 폴리곤(Polygon)을 GPU 입구에 달칵 밀어 넣으면, 그 데이터들은 반도체 회로 깊숙이 물리적으로 ’고정(Fixed)’되어 있는 논리 연산 장치만을 차례대로 거쳐 화면으로 떨어졌다. 이 답답한 구조를 ‘고정 기능 파이프라인(Fixed-Function Pipeline)’ 이라 불렀다.
개발자들은 칩 제조사(엔비디아나 3dfx)가 미리 세팅해 둔 몇 가지 메뉴얼 된 조명 효과나 껍데기(Texture) 입히기 수준만 선택할 수 있을 뿐이었다. 만약 몬스터의 피부가 용암처럼 일렁이며 특이한 난반사를 일으키게 하고 싶다면? 안타깝게도 고정된 회로 안에는 그런 기발한 변칙 수식이 없었기에 결코 불가능했다.
아무리 게임 디렉터의 상상력이 폭발해도, 그 미학적 표현은 딱딱하게 얼어붙은 철제 파이프라인(Pipeline)이라는 잔인한 하드웨어의 굴레(Shackles)에 갇혀 플라스틱 같은 인형놀이에 머물러야 했다. 그래픽 기술이 원시적인 단계를 넘어 ’극사실주의(Hyperrealism)’의 갈증으로 치달을 무렵, 업계는 공장의 고정된 기계 팔을 뜯어내고 개발자가 직접 붓과 물감을 쥐고 자유자재로 그림을 덧칠할 수 있는 철학적 자유, 즉 하드웨어의 완벽한 해방(Liberation)을 피 토하듯 부르짖기 시작했다.
5.3.2 지포스(GeForce) 3의 등장과 프로그래머블 셰이딩(Programmable Shading)의 도입
고정된 회로의 질식할 것 같은 압박을 뚫고, 2001년 젠슨 황(Jensen Huang)과 엔비디아(NVIDIA)는 마이크로소프트의 다이렉트X 8(DirectX 8)의 등판이라는 시대적 파도에 완벽하게 올라타 역사에 방점을 찍는 ‘지포스(GeForce) 3’ 칩셋을 세상에 폭격했다. 이 칩이 지닌 가장 끔찍하고도 매혹적이며 혁명적인 무기는 단순히 클럭 속도가 아니라, 바로 GPU 연산 코어의 멱살을 개발자가 직접 쥐고 통제할 수 있도록 자물쇠를 산산조각 낸 ‘프로그래머블 셰이딩(Programmable Shading)’ 기술의 도입이었다.
이제 개발자들은 GPU 내부 깊숙이 일종의 작은 미니 프로그램인 ‘셰이더(Shader)’ 코드를 작성하여 직접 쑤셔 넣을 수 있게 되었다. 버텍스(Vertex), 즉 물체의 뼈대 좌표를 수학적으로 실시간 일그러트려 파도치는 물결을 만들고, 픽셀(Pixel) 셰이더를 통해 그 표면에 반사되는 빛의 각도를 개발자 맘대로 재조합해 금속이나 흐르는 땀방울, 사람의 피부톤 반사율(Subsurface Scattering)까지 극사실적으로 창조해 냈다.
고정된 컨베이어 벨트에 끌려가던 데이터들은 이제, 개발자가 짜놓은 수만 줄의 커스텀 알고리즘(Custom Algorithm)이 미친 듯이 병렬로 돌아가는 수천 개의 소형 계산기 코어 군단 속을 마음대로 헤엄치게 되었다. 지포스 3의 이 셰이더 도입은 비디오 게이밍 렌더링(Rendering) 수준을 당시 헐리우드(Hollywood) 컴퓨터 그래픽스(CG) 영화의 스케일로 단숨에 멱살 쥐고 끌어올린, 가장 위대하고도 파괴적인 그래픽 철학의 쿠데타(Coup d’état)였다.
5.3.3 그래픽 파이프라인의 유연성 확보가 가져온 나비효과
엔비디아(NVIDIA)가 지포스(GeForce) 3에 프로그래머블 셰이더(Programmable Shader)를 장착한 본래의 의도는 철저하게 순수했다. 오직 3D 비디오 게임(Video Game)을 더 징그럽게 현실적으로, 더 화려하게 렌더링(Rendering)하여 게이머들에게 더 비싼 카드를 팔아치우겠다는 게임용 유연성(Flexibility) 확보가 유일한 타깃이었다.
하지만 기술 발전의 역사에는 언제나 전혀 예상치 못한 거대한 오류, 즉 긍정적인 ‘비의도적 나비효과(Butterfly Effect)’ 가 태동하기 마련이다. 개발자가 마음대로 짧은 코드 알고리즘(Algorithm)을 짜서 GPU의 코어에 입력할 수 있다는 이 놀라운 ‘프로그래머블(Programmable)’ 개방성은, 픽셀 생태계 외곽에서 굶주린 하이에나처럼 GPU를 노리고 있던 과학계 학자들과 해커(Hacker)들에게 가장 완벽하고도 달콤한 성배(Holy Grail)가 되어버렸다.
graph TD
A[엔비디아의 본래 타깃<br>Original Target] --> B[비디오 게임의 극사실주의 렌더링<br>Photorealistic Gaming]
B --> C[GeForce 3: 셰이더 도입<br>Programmable Shader]
C --> D{비의도적 파급력<br>Unintended Consequence}
D --> E[게임 개발자의 자유도 폭발<br>Graphic Freedom]
D --> F[학계 데이터 과학자들의 환호<br>Scientist's Jubilee]
F --> G[복잡한 과학, 수학 알고리즘을<br>픽셀 셰이더 연산으로 완벽히 위장 통제]
G --> H[GPGPU 시대의 실질적 폭발<br>The Real Dawn of GPGPU]
style H fill:#f9f,stroke:#333,stroke-width:2px,color:#fff
과거에는 오직 빨간색을 입히라는 둥 고정된 수식만 겨우 허용되던 GPU 코어가, 이제는 조건문이나 복잡한 곱셈 루프(Loop) 등 개발자가 짜준 수식을 그대로 이행해 주는 일종의 ’소형 범용 논리 칩’으로 진화한 것이다. 비록 여전히 그래픽 API(OpenGL 등)라는 변태적 우회로를 통해 텍스처(Texture) 모양으로 속여 코드를 입력해야 하는 고통은 남았지만, 셰이더(Shader)가 활짝 열어젖힌 이 논리 제어권의 유연성(Flexibility) 확보는 GPGPU(범용 GPU) 연산을 막연한 꿈의 영역에서 실질적인 실험대 위로 완벽하게 끌어내린, 세계 컴퓨팅 역사상 가장 위대한 비의도적 혁명의 기폭제(Catalyst)였다.