GPU Rendering — 정의, 원리 및 하드웨어 렌더링 작동 방식

저자: IT Sectr 게시일: 2026-06-11 읽는 시간: 8 분

GPU Rendering(하드웨어 렌더링)은 그래픽 프로세서를 사용하여 이미지를 생성하는 프로세스로, 특수 컴퓨팅 유닛을 통해 래스터화, 텍스처링 및 후처리 작업을 수행합니다. CPU Rendering과 달리 하드웨어 렌더링은 수천 개의 셰이더 코어를 사용하여 픽셀을 병렬 처리합니다. NVIDIA Developer Blog(2025)에 따르면 GPU Rendering은 모바일 SoC에서 최대 2400 GFLOPS의 성능을 제공하며, 복잡한 3D 장면을 렌더링할 때 CPU 성능보다 10~15배 높습니다.

핵심 사항

  • GPU Rendering — 수천 개의 병렬 코어를 갖춘 그래픽 프로세서를 통한 하드웨어 렌더링.
  • 그래픽 파이프라인에는 정점 변환, 래스터화, 텍스처링 및 픽셀 처리가 포함됩니다.
  • 장점: 3D 그래픽에서 높은 성능, 에너지 효율성 및 복잡한 셰이더 효과 지원.
  • 모바일 GPU는 하드웨어 렌더링 중 전력 소비를 줄이기 위해 Tile-Based Rendering을 사용합니다.
  • API: Vulkan, Metal 및 OpenGL ES가 모바일 플랫폼에서 GPU 파이프라인에 대한 액세스를 제공합니다.

GPU Rendering이란?

GPU Rendering은 그래픽 파이프라인의 모든 단계가 그래픽 프로세서에서 실행되는 이미지 형성 방법입니다. 로직과 계산이 혼합된 CPU와 달리 GPU에는 각 단계별 전용 블록(정점 프로세서, 래스터라이저, 텍스처라이저, 출력 병합 블록)이 있습니다.

GPU Rendering의 역사는 최초의 3D 가속기인 3dfx Voodoo(1996)와 NVIDIA RIVA 128(1997)의 등장과 함께 시작되었습니다. 이 장치들은 래스터화를 담당하고 변환은 CPU에 맡겼습니다. 2001년(NVIDIA GeForce 3)부터 GPU는 프로그래밍 가능한 셰이더(정점 및 픽셀 처리를 위한 사용자 정의 프로그램)를 포함하여 전체 파이프라인을 완전히 담당하게 되었습니다.

Jon Peddie Research(2025)에 따르면 모든 모바일 장치의 92%가 게임 및 3D 애플리케이션의 기본 모드로 GPU Rendering을 사용합니다. UI 프레임워크에서 GPU Rendering은 레이어 합성(여러 텍스처에서 최종 프레임을 조립)에 사용됩니다.

최신 GPU Rendering은 두 가지 접근 방식으로 나뉩니다: 포워드 렌더링(직접)과 디퍼드 렌더링(지연). 포워드 렌더링에서는 각 객체가 모든 광원을 고려하여 한 번의 패스로 렌더링됩니다. 디퍼드 렌더링에서는 지오메트리가 중간 버퍼(G-buffer)로 렌더링되고 조명이 별도로 계산됩니다 — 이는 여러 광원이 있을 때 더 효율적입니다.

하드웨어 대 소프트웨어 렌더링

GPU Rendering은 CPU와 근본적으로 다릅니다: GPU는 SIMT(단일 명령어, 다중 스레드) 모드로 작동합니다. 하나의 명령어가 다른 데이터에 대해 수백 개의 스레드에 의해 실행됩니다. CPU는 MIMD(다중 명령어, 다중 데이터)를 사용합니다 — 각 스레드는 다른 명령어를 실행할 수 있습니다. 이는 GPU를 래스터화와 같은 동종 작업에 효율적으로 만들지만 분기 로직에는 약하게 만듭니다.

실제로 GPU Rendering은 수천 개의 폴리곤이 있는 3D 장면을 렌더링할 때 CPU보다 10~30배 뛰어납니다. 그러나 단순한 2D 그래픽의 경우 GPU 드라이버 오버헤드로 인해 차이가 CPU에 유리할 수 있습니다. Google Android Performance Guide(2025)에 따르면 최적 임계값은 500개 이상의 드로우 콜이며, 이후 GPU Rendering이 CPU보다 효율적이 됩니다.

GPU 그래픽 파이프라인

그래픽 파이프라인은 GPU Rendering 중 각 프레임이 거치는 일련의 단계입니다. 파이프라인은 프로그래밍 가능 단계와 고정 단계로 나뉘며, 각각 전문화된 GPU 블록에서 처리됩니다.

입력 어셈블러

첫 번째 단계 — 입력 어셈블러는 버퍼(VBO, IBO)에서 정점 데이터를 읽고 프리미티브(점, 선, 삼각형)를 조립하는 고정 GPU 블록입니다. GPU는 이 단계에서 초당 최대 1억 개의 삼각형을 처리할 수 있으며, 비디오 메모리에서 직접 데이터를 읽습니다.

정점 셰이더

정점 셰이더는 각 정점을 처리하는 프로그래밍 가능 단계입니다. 셰이더는 행렬을 통해 좌표를 월드 공간에서 화면 공간으로 변환하고, 퐁 조명을 계산하며 데이터를 전달합니다. 정점 셰이더는 각 정점에 대해 실행됩니다 — 100,000개의 삼각형의 경우 프레임당 300,000번 호출됩니다.

glsl
#version 300 es
layout(location = 0) in vec4 position;
uniform mat4 u_mvpMatrix;

void main() {
    gl_Position = u_mvpMatrix * position;
}

간단한 정점 셰이더는 정점 위치를 MVP(모델-뷰-프로젝션) 행렬과 곱합니다. 모바일 GPU에서는 내장 행렬 곱셈 유닛 덕분에 이 연산이 정점당 1~2 사이클이 소요됩니다.

래스터화

래스터라이저는 프리미티브를 픽셀로 변환하는 고정 GPU 블록입니다. 각 삼각형에 대해 무게 중심 보간을 통해 덮인 픽셀(프래그먼트) 집합이 결정됩니다. 모바일 GPU에서는 래스터화가 타일 메모리(칩 내 고속 SRAM, 전역 DRAM 아님)에서 수행됩니다.

프래그먼트 셰이더

프래그먼트 셰이더는 각 프래그먼트(픽셀 후보)를 처리하는 프로그래밍 가능 단계입니다. 여기서 색상, 텍스처, 조명 및 투명도가 계산됩니다. 프래그먼트 셰이더는 가장 리소스 집약적인 단계로, 프레임 렌더링 시간의 60~80%를 차지합니다.

프래그먼트 셰이더 최적화는 GPU Rendering의 핵심 작업입니다. 계산 정밀도에는 lowp/mediump을 사용하고, 동적 분기를 피하고 텍스처 페치를 최소화하세요. Qualcomm Adreno SDK(2025)에 따르면 mediump 정밀도는 highp에 비해 25~40%의 성능 향상을 제공합니다.

하드웨어 렌더링의 장점

GPU Rendering은 세 가지 주요 장점을 제공합니다: 성능, 에너지 효율성 및 이미지 품질. 모바일 개발 맥락에서 각각을 살펴보겠습니다.

성능

GPU 병렬성은 프레임당 수백만 개의 프래그먼트를 처리할 수 있게 합니다. 모바일 GPU Qualcomm Adreno 750은 1.5 TFLOPS(초당 1.5조 부동소수점 연산)를 제공합니다. CPU Snapdragon 8 Gen 3은 약 200 GFLOPS를 제공합니다. 7.5배의 차이는 8개의 CPU 코어에 비해 1024개의 셰이더 코어를 통해 달성됩니다.

실제 애플리케이션에서 GPU Rendering은 CPU Rendering이 5~15 FPS를 제공하는 게임 및 3D 장면에서 60 FPS를 제공합니다. 90 FPS, 눈당 2K 해상도의 VR 애플리케이션의 경우 GPU가 유일하게 가능한 렌더링 방법입니다.

에너지 효율성

GPU Rendering은 동일한 계산 부하에서 CPU보다 에너지 효율이 높습니다. GPU는 0.5~1W를 소비하여 100만 개의 프래그먼트를 처리합니다. CPU는 동일한 작업에서 더 복잡한 제어 로직과 낮은 전문화로 인해 3~5W를 소비합니다. ARM(2025)에 따르면 GPU는 처리된 프래그먼트당 와트당 CPU보다 4~6배 효율적입니다.

파라미터GPU RenderingCPU Rendering
FLOPS1500 GFLOPS200 GFLOPS
스레드10248
FPS(3D)605–15
프래그먼트/W100만/0.5W100만/3W
지연 시간2–5ms15–30ms

모바일 GPU의 Tile-Based Rendering

Tile-Based Rendering(TBR)은 프레임을 16×16 또는 32×32 픽셀의 작은 블록(타일)으로 나누는 모바일 GPU 아키텍처입니다. 각 타일은 칩 내 고속 SRAM에서 완전히 렌더링된 후 결과가 외부 DRAM에 기록됩니다.

TBR은 메모리 대역폭 문제를 해결합니다. 즉시 모드(데스크톱 GPU)에서는 각 프래그먼트가 프레임당 수십 번 DRAM을 읽고 씁니다. TBR은 모든 읽기/쓰기를 타일 메모리(20~50 사이클 액세스)에서 수행하고 최종 결과만 DRAM(2~4 사이클)에 복사합니다. Imagination Technologies(2025)에 따르면 TBR은 메모리 트래픽을 70~80% 줄입니다.

모든 최신 모바일 GPU는 TBR을 사용합니다: Qualcomm Adreno(FlexRender — 즉시 및 타일 하이브리드), ARM Mali(Bifrost/Valhall — 순수 TBR), Apple GPU(TBDR — 타일 기반 디퍼드 렌더링), Imagination PowerVR(가장 오래된 TBDR, 1998년부터).

TBDR — 타일 기반 디퍼드 렌더링

TBDR(Tile-Based Deferred Rendering)은 GPU가 셰이딩 전에 숨겨진 표면 제거를 수행하는 TBR의 확장입니다. 각 타일에 대해 GPU는 가시 프래그먼트 목록을 작성하고 지오메트리에 의해 가려진 것을 폐기합니다. 이는 프래그먼트 셰이더 호출을 30~70% 줄입니다.

Apple(2025)에 따르면 자사 GPU의 TBDR은 불필요한 계산 없이 반투명 객체가 있는 복잡한 장면을 렌더링할 수 있습니다. 개발자는 최적화 시 TBDR 특성을 고려해야 합니다: 그리기 순서와 초기 Z 테스트는 즉시 모드와 다르게 작동합니다.

GPU 렌더링 기술

최신 GPU Rendering은 품질과 성능을 향상시키기 위해 고급 기술을 사용합니다. 모바일 개발에서 사용되는 주요 방법을 살펴보겠습니다.

디퍼드 셰이딩

디퍼드 셰이딩은 지오메트리가 G-buffer(위치, 법선, 색상, 재질)로 렌더링되고 조명이 전체 화면 쿼드에서 별도로 계산되는 기술입니다. 이는 객체 수와 광원 수를 분리합니다. Epic Games(2025)에 따르면 모바일 GPU의 디퍼드 셰이딩은 FPS 저하 없이 장면당 최대 64개의 광원을 허용합니다.

가변 속도 셰이딩

가변 속도 셰이딩(VRS)은 프레임의 다른 영역을 다른 해상도로 셰이딩하는 기술입니다. 주변 영역과 그림자는 저해상도(2×2 블록)로 처리하고 포커스 중심은 전체 해상도로 처리합니다. Microsoft DirectX Team(2025)에 따르면 VRS는 눈에 띄는 품질 저하 없이 20~40%의 성능 향상을 제공합니다.

멀티스레드 렌더링

최신 GPU는 비동기 명령 큐(async compute)를 지원합니다. 다양한 작업(그래픽, 컴퓨트, 복사)이 다른 GPU 블록에서 병렬로 실행됩니다. Vulkan과 Metal은 비동기 렌더링 메커니즘을 제공하며, 이는 물리 및 후처리가 있는 모바일 게임에 중요합니다.

kotlin
// Android에서 Vulkan을 통한 GPU 렌더링 구성
val device = physicalDevice.createDevice(
    deviceCreateInfo {
        queueCreateInfos += listOf(
            deviceQueueCreateInfo {
                queueFamilyIndex = graphicsQueueIndex
                queuePriorities += 1.0f
            },
            deviceQueueCreateInfo {
                queueFamilyIndex = computeQueueIndex
                queuePriorities += 1.0f
            }
        )
    }
)

코드는 두 개의 큐를 생성합니다: 하나는 그래픽용, 다른 하나는 컴퓨트 작업용입니다. 비동기 실행을 통해 GPU는 다음 프레임 렌더링과 병렬로 후처리 효과를 처리하여 전체 성능을 15~25% 향상시킵니다.

GPU Rendering 실제 활용

GPU Rendering 애플리케이션은 모바일 앱에서 네 가지 주요 영역을 다룹니다: UI 합성, 게임, AR/VR 및 이미지 처리. 각각의 실용적인 측면을 살펴보겠습니다.

UI 합성

Android HWUI(하드웨어 UI)는 모든 UI 레이어를 GPU에서 렌더링합니다. 각 View는 텍스처(DisplayList)로 렌더링되고 HWUI가 이를 최종 프레임으로 합성합니다. GPU Rendering은 CPU 부하 없이 부드러운 애니메이션과 그림자를 보장합니다. Google(2025)에 따르면 GPU의 HWUI는 60 FPS 애니메이션에서 소프트웨어 렌더링보다 3배 빠릅니다.

모바일 게임

게임은 GPU Rendering의 주요 소비자입니다. Unity와 Unreal Engine은 지형에서 후처리 효과까지 모든 그래픽에 GPU를 사용합니다. 최적화에는 LOD(Level of Detail), 폐색 컬링 및 텍스처 아틀라싱이 포함됩니다. Unity Technologies(2025)에 따르면 GPU Rendering에서 적절히 최적화된 게임은 중간급 기기에서 30 FPS로 실행됩니다.

이미지 처리

GPU는 컴퓨트 셰이더를 통해 필터, 변환 및 객체 감지를 가속화합니다. iOS의 Metal Performance Shaders와 Android의 RenderScript는 GPU 가속 처리를 위한 라이브러리를 제공합니다. Apple(2025)에 따르면 GPU 필터는 동일한 데이터에서 CPU 대응 제품보다 5~10배 빠르게 실행됩니다.

자주 묻는 질문

GPU Rendering과 CPU Rendering의 차이점은 무엇인가요?

GPU Rendering은 대규모 픽셀 처리를 위해 수천 개의 병렬 코어를 사용하는 반면, CPU Rendering은 4~12개의 범용 코어를 사용합니다. GPU는 3D 그래픽에서 10~30배 빠르지만 버스를 통한 데이터 전송에 추가 리소스가 필요합니다.

모바일 GPU의 Tile-Based Rendering이란 무엇인가요?

TBR은 프레임을 16×16 픽셀 타일로 나누는 아키텍처입니다. 각 타일은 고속 SRAM 메모리에서 렌더링되어 DRAM 액세스를 70~80% 줄이고 전력 소비를 낮춥니다. TBR은 모든 최신 모바일 GPU에서 사용됩니다.

모바일 기기에서 GPU Rendering에 가장 좋은 API는 무엇인가요?

Vulkan은 낮은 오버헤드와 GPU 메모리 제어 덕분에 Android에 가장 적합합니다. Metal은 최소 드라이버 지연 시간으로 iOS에 필수입니다. OpenGL ES는 이전 기기와의 하위 호환성을 위한 것입니다.

모바일 기기에서 GPU Rendering이 느려지는 이유는 무엇인가요?

주요 원인: 과열로 인한 스로틀링, 과도한 드로우 콜, 분기가 있는 최적화되지 않은 셰이더, 높은 텍스처 해상도. 진단을 위해 Android의 Profile GPU Rendering 또는 Xcode GPU Report를 사용하세요.

디퍼드 렌더링이란 무엇이며 언제 사용해야 하나요?

디퍼드 렌더링은 지오메트리가 G-buffer로 렌더링되고 조명이 별도로 계산되는 기술입니다. 장면당 8개 이상의 광원이 있을 때 사용하세요. 단순한 장면의 경우 포워드 렌더링이 메모리 사용량이 적어 더 효율적입니다.

요약

  • GPU Rendering은 그래픽 프로세서의 수천 개 병렬 코어를 사용하는 하드웨어 렌더링 방법입니다.
  • 그래픽 파이프라인에는 프로그래밍 가능 단계(정점 및 프래그먼트 셰이더)와 고정 기능 블록(래스터라이저, 출력 병합기)이 포함됩니다.
  • GPU 장점: 1500+ GFLOPS 성능, CPU보다 4~6배 높은 에너지 효율성, 사실적인 효과 지원.
  • Tile-Based Rendering은 모바일 GPU의 기초로, 작은 타일 처리를 통해 메모리 트래픽을 70~80% 줄입니다.
  • 기술: 디퍼드 셰이딩, VRS, async compute가 GPU 렌더링 품질과 성능을 향상시킵니다.
  • 적용 분야: 게임, UI 합성, AR/VR 및 GPU 가속 이미지 및 비디오 처리.
  • GPU Rendering 최적화에는 드로우 콜 관리, 셰이더 정밀도 및 TBR 특화 기술 사용이 포함됩니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기