
요즘 같은 시대에 왜 옛날 방식으로 그래픽을?
혹시 "둠(Doom)"이나 "퀘이크(Quake)" 같은 90년대 게임을 아세요? 지금이야 GPU(그래픽 카드)가 알아서 3D를 그려주지만, 1993년에는 그런 게 없었거든요. 그때 개발자들은 CPU만으로 화면의 픽셀 하나하나를 직접 계산해서 3D 화면을 만들어냈어요. 이걸 "소프트웨어 렌더링(software rendering)"이라고 불러요. 그래픽 카드한테 일을 맡기지 않고 프로그래머가 직접 다 계산한다는 뜻이에요.
이번에 소개할 글은 바로 그 1993년 감성으로, GPU를 전혀 쓰지 않고 3D 엔진을 처음부터 만들어가는 과정을 다룬 시리즈예요. "Catlantean"이라는 이름의 엔진인데요, 요즘처럼 OpenGL이나 Vulkan 같은 그래픽 API를 부르는 게 아니라, 화면 버퍼에 픽셀을 직접 찍는 방식이에요. 왜 굳이 이렇게 하느냐면, 사실 3D 그래픽이 "내부적으로 어떻게 동작하는지"를 가장 잘 배우는 방법이거든요.
핵심: 화면은 그냥 숫자 배열이에요
이게 뭐냐면, 우리가 보는 화면은 사실 거대한 숫자 배열일 뿐이에요. 가로 320, 세로 200짜리 화면이라면 64,000개의 픽셀이 있고, 각 픽셀은 색깔 값을 가져요. 소프트웨어 렌더링은 이 배열(프레임버퍼라고 불러요)을 매 프레임마다 우리가 직접 채우는 일이에요.
3D 물체를 그리려면 보통 이런 단계를 거쳐요. 먼저 3D 공간의 점(정점, vertex)들을 화면의 2D 좌표로 바꿔요. 이걸 "투영(projection)"이라고 하는데, 멀리 있는 건 작게, 가까운 건 크게 보이도록 원근감을 계산하는 거예요. 그다음엔 세 점으로 이루어진 삼각형 내부를 색으로 채우는 "래스터화(rasterization)"를 해요. 3D 모델은 전부 삼각형 수천 개로 쪼개져 있거든요. 마지막으로 어떤 면이 앞에 있고 뒤에 있는지를 판단해서 가려진 부분은 안 그리는 "깊이 테스트(depth test)"를 해요.
흥미로운 점은 옛날 방식에서는 소수점 연산(부동소수점)이 너무 느려서, 고정소수점(fixed-point) 연산을 많이 썼다는 거예요. 이게 뭐냐면, 3.14 같은 소수를 그냥 정수 314로 다루고 "나중에 100으로 나눈 셈 친다"는 식의 트릭이에요. 정수 연산이 훨씬 빨랐던 시절의 지혜죠. 또 매 픽셀마다 곱셈을 다시 하지 않고, 한 줄을 그릴 때 값을 조금씩 더해가는 "증분 계산" 같은 최적화도 등장해요.
업계 맥락에서 보면
요즘은 Unity나 Unreal Engine을 쓰면 이런 걸 전혀 몰라도 멋진 3D 게임을 만들 수 있어요. 그런데 그 엔진들도 결국 내부에서는 이 똑같은 원리로 동작하거든요. 다만 그 계산을 GPU가 병렬로 수백만 번 동시에 처리할 뿐이에요. 비슷한 결의 학습 프로젝트로는 "tiny renderer"나 "raytracing in one weekend" 같은 유명한 시리즈가 있어요. 이번 Catlantean 시리즈는 거기서 한발 더 나아가 "실제 게임처럼 동작하는 엔진"을 목표로 한다는 점이 특징이에요.
한국 개발자에게 주는 시사점
실무에서 소프트웨어 렌더러를 직접 만들 일은 거의 없어요. 하지만 게임 클라이언트 개발자나 그래픽 관련 직무를 노린다면, 이 원리를 이해하는 사람과 그냥 엔진 버튼만 누르는 사람의 실력 차이는 꽤 커요. 렌더링 파이프라인이 머릿속에 그려져 있으면 성능 문제가 생겼을 때 "아 여기서 정점이 너무 많아서 느린 거구나" 하고 바로 감이 오거든요. 주말 사이드 프로젝트로 작은 래스터라이저를 만들어보는 걸 강력 추천해요. C나 Rust로 시작하면 메모리와 성능 감각도 같이 길러져요.
마무리
결국 핵심은 이거예요. 3D 그래픽은 마법이 아니라, 화면이라는 숫자 배열을 똑똑하게 채우는 수학이라는 거죠. 옛날 방식을 따라 만들어보면 그 본질이 손에 잡혀요.
여러분은 어떠세요? 추상화된 엔진만 쓰는 게 편할까요, 아니면 한 번쯤은 바닥부터 만들어봐야 진짜 실력이 늘까요?
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공