Blog

ENGINEERING NOTE

[ Rendering ] 1. Terms and Definitions

해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.게임을 개발하다보면 화려한 그래픽을 책임지는 TA라는 직군에 대해 항상 듣곤 합니다.하지만 막상 관련 직무에 대한 인사이트나 공부를 하고 싶어도 접근하기 쉽지 않았습

rendering
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.

0. 들어가며

게임을 개발하다보면 화려한 그래픽을 책임지는 TA라는 직군에 대해 항상 듣곤 합니다. 하지만 막상 관련 직무에 대한 인사이트나 공부를 하고 싶어도 접근하기 쉽지 않았습니다.

그러던 와중 Com2us에서 진행된 TA Campus의 귀중한 자료를 발견하게 되어 매우 감사할 따름입니다.

흔히 Graphics Pipeline, Shader, Material 등과 같은 키워드는 자주 보이지만 막상

  • "그래서 실제로 무슨 방법으로 개발하고 사용하는데?"
  • "최적화는 어떤 식으로 할거야?"
  • "최신 그래픽 동향은 알고 있어?"

라고 묻는다면 상당히 어려운 난제와 막막함들을 경험하게 됩니다.

이번 시리즈와 학습과정을 통해서 이러한 어려움들이 조금이나마 해소되기를 바랍니다.



1. Terms and Definitions

컴퓨터는 어떤 과정을 거쳐 우리의 모니터에 여러 가지 그래픽을 출력하게 될까? 게임 화면, UI, 이펙트, 텍스트까지, 이 모든 결과물은 여러 하드웨어와 소프트웨어 계층을 거쳐 만들어진다.

이 과정을 이해하기 위해서는 렌더링 파이프라인에 직접적으로 관여하는 하드웨어인 CPU, GPU, 그리고 Memory가 각각 어떤 역할을 담당하고 있는지부터 짚고 넘어갈 필요가 있다.

CPU

CPU는 단일 고속 연산에 특화된 하드웨어로 프로그램의 전반적인 흐름을 제어하고, 게임 로직, 입력 처리, 물리 연산, 그리고 렌더링 명령을 생성하는 역할을 담당한다.

렌더링 관점에서 CPU는

  • 어떤 오브젝트를 그릴지 결정하고
  • 어떤 셰이더와 리소스를 사용할지 설정하며
  • GPU에게 "무엇을 그려라"라는 명령(Command)을 전달한다

즉, CPU는 직접 픽셀을 그리지는 않지만, GPU가 올바르게 동작할 수 있도록 렌더링 작업을 준비하고 지시하는 역할을 한다.

GPU

GPU는 병렬처리 연산에 특화된 하드웨어로 CPU로부터 전달받은 렌더링 명령을 바탕으로, 실제 화면에 출력될 픽셀을 계산하고 그려내는 역할을 수행한다. 텍스트 버텍스 셰이더, 픽셀 셰이더, 컴퓨트 셰이더와 같은 셰이더 프로그램은 모두 GPU에서 병렬적으로 실행된다.

렌더링 파이프라인에서 GPU는

  • 수많은 정점(Vertex)을 변환하고
  • 픽셀 단위로 색상을 계산하며
  • 최종 이미지를 프레임 버퍼에 기록한다.

즉, GPU는 화면에 보이는 결과물을 실제로 만들어내는 주체라고 볼 수 있다.

CPU와 GPU의 동작 차이를 시각적으로 보여주는 영상
- CPU
- GPU

Memory

Memory는 CPU와 GPU가 작업을 수행하는 데 필요한 데이터나 리소스를 저장하고 전달하는 역할을 한다.

Shader

셰이더는 GPU에게 어떤 일을 어떻게 수행할지 지시하는 코드이다. GPU는 이미 정해진 그래픽스 파이프라인을 따라 동작하며, 그 중 일부 단계(Vertex Shader, Pixel Shader 등)를 개발자가 직접 커스터마이징할 수 있다.

셰이더는 이 커스터마이징 가능한 지점에서 실행되며, 정점 변환, 색상 계산, 조명 처리와 같은 연산을 담당한다.

주로

  • HLSL (DirectX)
  • GLSL (OpenGL)
  • usf (Unreal Engine 기준)

과 같은 파일 형식으로 이루어져 있다.

Material

머티리얼은 셰이더에서 사용되는 설정값(파라미터)을 묶어둔 데이터 집합이다. 색상, 텍스처, 수치 값과 같은 값들을 조합하여 같은 셰이더 로직을 사용하면서도 서로 다른 결과를 만들어낼 수 있다.

- 셰이더와 머티리얼의 차이

Primitive & Mesh

GPU가 일을 한다면, 도대체 뭘 그리는걸까. 이때 등장하는 개념이 바로 Primitive이다.

프리미티브는 GPU가 실제로 그릴 수 있는 가장 기본적인 도형 단위이다. GPU는 복잡한 메시를 직접 이해하지 못하며, 결국 메시를 프리미티브들의 집합으로 분해하여 렌더링한다.

Culling

Culling은 렌더링 과정에서 화면에 보이지 않거나 굳이 그릴 필요가 없는 객체를 미리 제거하는 최적화 기법이다.

GPU는 매우 빠르지만, 모든 메시와 프리미티브를 무조건 렌더링하는 것은 불필요한 비용을 발생시킨다. 따라서 실제로 화면에 기여하지 않는 객체는 여러 그래픽 파이프라인 과정에서 Culling을 통해 불필요한 연산 과정을 줄인다.