4.3 프로그래머블 파이프라인의 도입: 규칙을 깨다

4.3 프로그래머블 파이프라인의 도입: 규칙을 깨다

지포스(GeForce) 256이라는 세계 최초의 GPU를 선언하며 인텔(Intel)의 CPU로부터 그래픽 연산 권력을 강탈하는 데 성공한 엔비디아(NVIDIA). 하지만 이들의 진화 본능은 고작 고속 하드웨어 제조사에 머무는 것을 허락하지 않았다. 2000년대 초반, 게임 그래픽의 패러다임이 또 한 번 뒤틀리며 극도의 현실성을 추구하는 단계에 다다르자, 엔비디아는 다시금 컴퓨터 공학 파이프라인(Pipeline)의 낡은 관성을 무자비하게 박살 내는 두 번째 기술적 혁명 작전에 돌입한다.

4.3장에서는 당시까지 그래픽 데이터가 흐르던 딱딱한 일방통행 배관, 즉 ’고정 기능 파이프라인(Fixed-function Pipeline)’이 만들어내던 질식할 것 같은 치명적인 한계와 갑갑함을 진단한다.

그리고 2001년 지포스 3(GeForce 3)의 출시와 함께 엔비디아가 세상에 던진 가장 충격적이고 파괴적인 무기, 바로 개발자들 스스로 GPU 코어 내부의 연산 방식을 마음대로 뜯어고칠 수 있도록 통제권을 쥐여 준 ‘프로그래머블 파이프라인(Programmable Pipeline)’, 즉 셰이더(Shader) 아키텍처의 영광스러운 도입 선언을 조명한다. GPU가 그저 공장에서 찍어 나온 대로만 그리는 바보 같은 고정식 도장(Stamp)을 벗어나, 어떻게 스스로 논리를 코딩(Coding)할 수 있는 완벽하고 강력한 캔버스 창조의 두뇌(Creative Brain)로 미친 듯이 진화해 나갔는지 그 궤적을 낱낱이 파헤쳐 본다.

4.3.1 고정 기능(Fixed-function) 파이프라인의 한계

초창기 3D 비디오 게임(Video Game) 시대를 지배했던 그래픽 카드들의 연산 구조는 매우 훌륭하고 강력했지만, 그 속살을 들여다보면 실상 공장의 딱딱한 일방통행 폭넓은 컨베이어 벨트(Conveyor Belt) 같은 철저한 ‘고정 기능 파이프라인(Fixed-function Pipeline)’ 구조였다.

게임을 만드는 소프트웨어 개발자들이 다이렉트X(DirectX)를 통해 폴리곤(Polygon) 덩어리와 텍스처 껍데기를 GPU 입구에 달칵 밀어 넣으면, GPU 내부에 하드웨어적으로 꽁꽁 얼어붙어 설계된 논리 회로의 정해진 수식(광원 조절, 안개 효과 정도)만을 거쳐 모니터 밖으로 그대로 뚝 떨어져 출력되는 식이었다. 제조사가 미리 규격화해 놓은 효과 공식을 벗어나, 개발자 임의로 독특한 조명 반사나 물방울이 맺히는 등의 기이한 왜곡 효과를 원한다면 이를 하드웨어 구조상 구현할 수 있는 길은 완벽하게 닫혀 있었다.

결국 어느 회사의 게임이든 상관없이 거의 비슷비슷하게 딱딱한 플라스틱 같은 질감만을 화면에 욱여넣어야 하는 창작의 질식 상태에 이르렀다. 개발자들은 플라스틱 질감을 벗어나, 사람의 피부에 맺힌 땀방울, 반짝거리는 자동차의 메탈릭한 금속 질감, 잔물결이 일렁이는 바다의 일렁임(Refraction) 등, 진짜 현실 세계(Real World)와 구분이 가지 않는 극강의 물리적 광학 디테일(Optical Detail)을 갈구하기 시작했다.

단순히 속도만 뒤지게 빠르고 정해진 대로만 그리는 고정 회로(Hard-wired Circuit) 덩어리 그래픽 카드의 수명은 이미 미쳐버린 3D 게임 개발자들의 압도적 욕구 앞에서 시한부를 선고받고 있었다. 그래픽 카드 안으로, 개발자의 자유로운 코드 의지를 직접 심어 넣기 위한 위대한 파이프라인 파괴(Pipeline Destruction)가 필연적으로 필요한 시점이었다.

4.3.2 버텍스 셰이더와 픽셀 셰이더: 개발자에게 통제권을 부여하다

고정 파이프라인의 지루한 벽에 갇혀 절망하던 전 세계 수만 명의 그래픽 개발자들 앞에, 2001년 엔비디아(NVIDIA)는 마이크로소프트의 다이렉트X 8(DirectX 8)의 등판과 발맞춰 역사적인 ‘지포스(GeForce) 3’ 아키텍처(Architecture)를 던져 넣으며 완전한 해방의 불씨를 지폈다. 바로 GPU 파이프라인 내부의 회로를 뜯어고쳐, 개발자가 직접 원하는 형태의 짧은 C언어 문법 코드를 작성하여 그래픽 결과 값을 마음대로 왜곡하고 통제할 수 있는 ‘프로그래머블 셰이더(Programmable Shader)’ 기술의 전격적인 도입이었다.

가장 대표적인 두 축이 바로 버텍스 셰이더(Vertex Shader)픽셀 셰이더(Pixel Shader) 였다.
’버텍스 셰이더’를 통해서 개발자들은 3D 형태의 꼭짓점 위치와 기하학적 뼈대를 자유롭게 일그러트리고 수학적으로 조작하여 펄럭이는 춤을 추는 깃발이나, 파도가 치며 울렁거리는 바다의 역동성을 물리 엔진처럼 계산해 낼 수 있었다. 이어지는 ‘픽셀 셰이더’ 권한을 통해서는 단순히 색을 칠하는 것을 넘어, 금속에 비치는 묘한 무지개빛 난반사, 인간 피부 아래로 비치는 혈관의 질감(Subsurface Scattering), 요동치는 물안개 같은 극사실주의 명암 코드를 픽셀 조각 하나하나에 미친 듯이 불어넣을 수 있게 된 것이다.

이제 엔비디아의 GPU는 단순히 모니터에 점을 찍어대던 수동적인 멍청이 하드웨어가 아니라, 픽셀마다 개별적으로 수십 가지의 미적 코드를 자체 연산하는, 수천 개의 소형 컴퓨터 군단이 박혀 있는 진정한 ‘지능형 병렬 컴퓨터(Intelligent Parallel Computer)’ 로 완벽하게 탈바꿈했다. 개발자들에게 렌더링(Rendering)의 붓과 물감을 쥐여 준 이 프로그래머블 파이프라인의 엄청난 철학적 해방 덕분에, 엔비디아는 당대 그래픽 테크 데모를 영화 컴퓨터 그래픽(CG) 수준으로 단번에 진격시키며 시장에서 그 어떤 하드웨어도 넘볼 수 없는 진정한 제국의 권좌에 영원히 오를 수 있었다.