
화면에 멋진 3D 장면을 실시간으로 그려내는 사람들, 바로 그래픽스 프로그래머예요. 게임, 영화 CG, 요즘은 시뮬레이션·자율주행 시각화까지 손이 안 닿는 데가 없죠. 그런데 막상 시작하려면 '대체 뭐부터 봐야 하지?' 하고 막막해지거든요. 이번에 한 베테랑 그래픽스 개발자가 정리한 학습 로드맵이 좋아서, 주니어도 따라갈 수 있게 풀어볼게요.
1단계: 수학은 피할 수 없어요
가장 먼저 나오는 건 역시 수학이에요. 근데 겁먹지 마세요. 대학 수학 전부가 아니라 선형대수(벡터와 행렬)와 삼각함수 이 두 개가 핵심이에요. 왜냐면 3D 공간에서 물체를 옮기고(이동), 돌리고(회전), 크기를 바꾸는(스케일) 모든 게 결국 벡터와 행렬 곱셈이거든요. 카메라가 세상을 바라보는 것도, 빛이 표면에 반사되는 각도를 구하는 것도 다 이 수학이에요. 이게 뭐냐면, 화면 속 모든 움직임을 숫자로 계산하는 문법 같은 거예요. 이걸 손에 익히면 나머지가 훨씬 수월해져요.
2단계: 언어는 C++, 그리고 GPU와 대화하는 법
성능이 생명인 분야라 주력 언어는 여전히 C++예요. 메모리를 직접 다루고 하드웨어에 가깝게 최적화할 수 있어야 하거든요. 그다음이 진짜 그래픽스의 시작인데, GPU가 어떻게 그림을 그리는지(렌더링 파이프라인)를 이해해야 해요. 아주 거칠게 말하면, 3D 점들의 위치를 계산하는 '버텍스 셰이더' 단계와, 각 픽셀의 색을 칠하는 '프래그먼트(픽셀) 셰이더' 단계를 거쳐 화면이 만들어져요. 셰이더(shader)라는 건 GPU 위에서 돌아가는 작은 프로그램인데, 수천·수만 개가 동시에 병렬로 실행돼요. 이걸 HLSL이나 GLSL 같은 셰이더 전용 언어로 짜는 거죠.
3단계: API는 쉬운 것부터, 그리고 직접 만들기
GPU에게 명령을 내리려면 그래픽 API가 필요해요. 여기서 초보들이 흔히 하는 실수가 처음부터 불칸(Vulkan)이나 DirectX 12 같은 최신 저수준 API에 뛰어드는 거예요. 이것들은 강력하지만 삼각형 하나 띄우는 데 코드 수백 줄이 필요할 만큼 복잡하거든요. 그래서 추천되는 순서는 OpenGL이나 WebGPU처럼 비교적 친절한 API로 개념을 잡고, 그다음에 저수준 API로 넘어가는 거예요. 그리고 가장 중요한 조언은 이거예요. 직접 작은 렌더러를 만들어보라는 것. 삼각형 하나 띄우기 → 텍스처 입히기 → 조명 넣기 → 작은 3D 씬 그리기 순으로 손으로 만들어봐야 진짜 실력이 붙어요. 이때 RenderDoc 같은 그래픽 디버깅 툴로 GPU가 프레임을 어떻게 그리는지 뜯어보는 습관도 큰 도움이 돼요.
업계 흐름과 함께 보면
요즘 그래픽스는 예전과 결이 좀 달라졌어요. 실시간 레이트레이싱(빛의 경로를 실제로 추적해 사실적인 반사·그림자를 만드는 기법)이 게임에 들어왔고, 순수 그리기용이 아니라 계산 자체를 GPU로 돌리는 컴퓨트 셰이더의 비중도 커졌어요. 재밌는 건, GPU로 대규모 병렬 연산을 다루는 이 감각이 요즘 AI·머신러닝 쪽과도 뿌리가 같다는 거예요. 그래서 그래픽스를 제대로 공부해두면 GPGPU(그래픽 카드로 일반 연산하기) 영역으로 확장하기도 좋아요. 언리얼·유니티 같은 엔진을 '쓰는' 것과, 그 엔진 밑바닥을 이해하는 건 완전히 다른 레벨의 이야기고요.
한국 개발자에게
국내 게임사가 많다 보니 그래픽스·엔진 프로그래머 수요는 꾸준해요. 그런데 지원자는 상대적으로 적어서, 제대로 파면 희소성이 큰 포지션이에요. 핵심은 포트폴리오예요. 말로 '안다'가 아니라, 내가 밑바닥부터 짠 렌더러나 셰이더 데모를 깃허브에 올려두는 게 백 마디 자소서보다 강력하거든요. 수학→C++→셰이더→작은 렌더러, 이 순서대로 하나씩 만들어가며 기록을 남겨보세요.
마무리
정리하면 수학(선형대수)부터 다지고, C++와 셰이더로 GPU와 대화하는 법을 익힌 뒤, 직접 렌더러를 만들어보는 것이 그래픽스 프로그래머로 가는 왕도예요. 여러분은 화면에 처음 삼각형 하나 띄웠을 때의 그 감동, 기억나세요? 그래픽스에 도전한다면 가장 먼저 뭘 만들어보고 싶으세요?
🔗 출처: Hacker News