그래픽스 OT

Jaemyeong Lee·2024년 7월 14일
0

주제

그래픽스 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빠른 데이터 접근을 위한 임시 저장소
DRAMGPU/CPU가 사용하는 메인 메모리
Input Assembler정점 데이터를 GPU로 넘기는 첫 단계
Vertex Shader정점 위치를 행렬 변환 등으로 연산
Rasterizer정점 정보를 픽셀로 변환하며 보간 처리
Pixel Shader각 픽셀의 최종 색상, 조명 등을 결정
Output Merger렌더링 결과를 하나의 이미지로 병합

코드 분석

→ 코드 예제 없음. Pass


개념 - GPU 렌더링 파이프라인

🔷 GPU에게 연산을 맡기기 위해 반드시 따라야 하는 정해진 흐름(파이프라인)

1. Input Assembler (IA)

  • 정점(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)는 게임의 그래픽 스타일을 결정하는 가장 핵심적인 부분이다

profile
李家네_공부방

0개의 댓글