주제
그래픽스 OT – CPU vs GPU 구조 이해와 렌더링 파이프라인 전체 흐름

개념
● 컴퓨터 구조에 GPU가 더해진다
기존의 컴퓨터 구조는 CPU 중심으로 설계되어 있었지만, 그래픽스와 같이 병렬 연산이 많은 분야에서는 GPU(Graphics Processing Unit) 가 함께 사용된다. GPU는 CPU의 부담을 줄이고, 병렬 연산을 담당함으로써 전체 시스템의 성능과 효율을 향상시킨다.
● CPU와 GPU의 구조적 차이

-
CPU
- 직렬 처리(순차적) 구조
- 소수의 강력한 제어 장치(Control Unit) 및 연산 장치(ALU)
- 대용량 Cache 메모리를 통해 빠른 데이터 접근
- 복잡한 연산, 논리 흐름, 제어 중심의 작업에 최적화
- 예: 운영체제 처리, 게임 로직 처리 등
-
GPU
- 병렬 처리 구조
- 다수의 단순한 ALU들로 구성
- 소형 Cache, 대용량 DRAM 기반 처리
- 단순하지만 연산량이 큰 작업을 고속으로 처리
- 예: 그래픽 렌더링, AI 학습, 암호화 등
🧠 비유: 울트라(소수의 정예) vs 저글링(수많은 단순 유닛)
→ 복잡한 계산은 CPU에게, 반복적인 대규모 연산은 GPU에게!
● GPU가 쓰이는 대표적 분야
- 게임 그래픽스
- 암호화폐 채굴
- 인공지능 학습 (딥러닝)
이들 분야는 공통적으로 연산량이 크지만, 각 연산이 독립적이어서 병렬 처리에 최적화되어 있다.
● 서버에서는 GPU를 사용할까?
→ NO. 서버 프로그래밍, 특히 MMORPG 서버는 GPU를 사용하지 않는다.
- 이유:
- 작업 간의 의존성이 크고 병렬처리하기 어렵다.
- GPU에서 병렬로 계산한 결과를 다시 수집하고 동기화하는 비용이 크다.
- 반대로 클라이언트(게임 화면을 출력하는 쪽)에서는 GPU가 필수다.
● ALU, Cache, RAM 간의 관계
- ALU: 연산을 실제로 수행하는 장치 (코어라고도 함)
- Cache: 반복 접근되는 데이터를 빠르게 처리하기 위한 고속 임시 저장소
- RAM / DRAM: 메인 메모리. CPU와 GPU 모두 사용함
● GPU가 게임에서 필요한 이유
- 예: 해상도 1920x1080 = 207만 픽셀
- 60FPS 기준, 1초당 약 1억 2천만 개의 픽셀 연산이 필요함
- 각 픽셀마다 어떤 색상인지 계산 → 조명, 텍스처, 뷰 정보, 각도 등 반영
- 이 모든 걸 실시간으로 처리하려면 GPU가 필수
● 영화 vs 게임의 그래픽 처리
- 영화: 사전 렌더링 (미리 계산된 이미지를 재생)
- 게임: 실시간 렌더링 (사용자의 입력에 따라 바로 연산 및 출력)
→ GPU는 실시간 반응형 그래픽 처리의 핵심
● Unity에서의 좌표계 변환
- 로컬 좌표(Local): 물체 자체의 기준 위치
- 월드 좌표(World): 게임 씬 전체 기준으로 위치 이동
- 뷰(View): 카메라 시점 기준으로 다시 재배열
- 투영 좌표(Projection): 3D를 2D로 바꿔서 화면에 출력하는 좌표
→ 이 모든 변환 과정을 GPU의 Vertex Shader가 처리한다.
용어 정리
| 용어 | 의미 |
|---|
| 렌더링(Rendering) | 3D 데이터를 2D 화면에 시각적으로 출력하는 과정 |
| 픽셀(Pixel) | 화면을 구성하는 최소 단위 |
| 병렬 처리 | 여러 연산을 동시에 수행하는 방식 |
| ALU | 산술 논리 연산 장치. 계산을 직접 수행 |
| Cache | 빠른 데이터 접근을 위한 임시 저장소 |
| DRAM | GPU/CPU가 사용하는 메인 메모리 |
| Input Assembler | 정점 데이터를 GPU로 넘기는 첫 단계 |
| Vertex Shader | 정점 위치를 행렬 변환 등으로 연산 |
| Rasterizer | 정점 정보를 픽셀로 변환하며 보간 처리 |
| Pixel Shader | 각 픽셀의 최종 색상, 조명 등을 결정 |
| Output Merger | 렌더링 결과를 하나의 이미지로 병합 |
코드 분석
→ 코드 예제 없음. Pass
개념 - GPU 렌더링 파이프라인

🔷 GPU에게 연산을 맡기기 위해 반드시 따라야 하는 정해진 흐름(파이프라인)
- 정점(Vertex) 데이터를 GPU로 넘긴다
- 삼각형의 꼭짓점, 색상, 텍스처 좌표 등
2. Vertex Shader (VS)
- 정점 하나하나를 연산
- 로컬 → 월드 → 뷰 → 투영 공간 변환
- 행렬 곱을 통해 화면에 보일 수 있는 위치로 변환
3. Rasterizer
- 삼각형의 꼭짓점들을 픽셀로 바꾸는 작업
- 삼각형 내부 픽셀들을 보간하여 색상, 텍스처 좌표 등도 보간함
4. Pixel Shader (Fragment Shader)
- 픽셀마다 최종 색상을 계산
- 조명, 그림자, 텍스처, 재질 반영
- 셰이더 코드에 따라 카툰풍, 실사풍 결정
5. Output Merger (OM)
- 모든 픽셀 데이터를 하나의 이미지로 병합
- Z버퍼, 스텐실 테스트 등 수행하며 최종 렌더링
🔵 파이프라인의 색상 구분
- 파란색 단계: 코딩 불가. 옵션(설정값)으로만 제어 가능
- 초록색 단계: 코딩 가능. 개발자가 직접 셰이더 등을 작성함
참조 문서:
Direct3D 11 Graphics Pipeline Overview
핵심
- ✅ GPU는 병렬 처리에 최적화된 구조로, 게임, AI, 채굴처럼 단순하지만 연산량이 큰 분야에서 강력하다.
- ✅ CPU는 소수의 강력한 코어, GPU는 수천 개의 단순 코어(ALU)
- ✅ 서버에서는 GPU를 쓰지 않는다. 병렬 처리된 값을 다시 모으고 동기화하는 구조가 맞지 않기 때문
- ✅ 렌더링 파이프라인 5단계(Input Assembler → Vertex Shader → Rasterizer → Pixel Shader → Output Merger)는 반드시 외우자
- ✅ Unity/Unreal 같은 게임 엔진은 이 렌더링 과정을 추상화하여 도구로 제공한다
- ✅ 셰이더(특히 Pixel Shader)는 게임의 그래픽 스타일을 결정하는 가장 핵심적인 부분이다