Blog

ENGINEERING NOTE

[ Rendering ] 10. Optimization & Bandwidth Management

해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.그래픽 처리에서 성능과 발열에 영향을 주는 요소는 크게 연산량(Compute)과 메모리 대역폭 사용량(Bandwidth)으로 나눌 수 있다.이 중에서도 실제 전력 소

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

10. Optimization & Bandwidth Management

그래픽 처리에서 성능과 발열에 영향을 주는 요소는 크게 연산량(Compute)메모리 대역폭 사용량(Bandwidth)으로 나눌 수 있다. 이 중에서도 실제 전력 소모와 발열에 더 직접적인 영향을 주는 요소는 메모리 대역폭 사용량이다.

GPU는 렌더링을 위해 텍스처, 버텍스 데이터, 프레임버퍼 등을 지속적으로 메모리에서 읽고 쓰게 된다. 이 과정에서 데이터 이동량이 많아질수록 메모리 컨트롤러와 버스가 더 많은 전력을 소모하게 되고, 결과적으로 발열이 크게 증가한다.

따라서 텍스처 해상도, 드로우콜, 렌더링 해상도 등 GPU가 렌더링하기 위해 전송해야하는 데이터 크기 관리가 필요하다.

10-1. Render Resolution Scaling(limiting)

렌더링 해상도는 GPU가 한 프레임에서 처리해야 하는 픽셀 수를 직접적으로 결정하는 요소이다. 해상도가 높아질수록 화면을 구성하는 픽셀 수가 증가하고, 그만큼 GPU와 메모리 사이에서 전송해야 하는 데이터 양도 함께 늘어난다.

렌더 해상도가 높아지면 렌더 타겟(Render Target)의 픽셀 수 자체가 증가하여 대역폭 사용량이 커진다.

이 과정에서 프레임버퍼 읽기/쓰기, 후처리 패스, 안티앨리어싱 등 여러 단계에서 더 많은 메모리 접근이 발생하게 되고, 결과적으로 전력 소모와 발열이 증가한다.

예를 들어,

  • 1080p 해상도 → 1920 × 1080 = 약 207만 픽셀
  • 75% 스케일 적용 (약 900p 수준) → 전체 픽셀 수 약 56% 수준으로 감소

즉, 해상도를 75%로 낮추면 한 프레임에서 처리해야 할 픽셀 수와 대역폭 사용량이 약 56% 수준으로 감소하게 된다.

따라서 렌더 해상도를 적절히 제한하거나 스케일링하는 것은 대역폭 절감과 발열 관리에 매우 효과적인 최적화 방법이다.

하지만 무작정 렌더 해상도를 낮추게 되면 플레이 경험이 좋지 않을 수도 있다.

따라서 렌더링 비용이 큰 화면의 경우 해상도를 큰 폭으로 줄이되 사용자가 직접 보는 UI나 Text만 따로 고해상도를 그대로 유지하여 품질 저하 체감을 잘 느끼지 못하도록 하는 방법도 있다.

10-2. Upscaling Solution (DLSS)

DLSS(Deep Learning Super Sampling)는 PC와 콘솔 환경에서 고해상도(예: 4K) 화면을 효율적으로 출력하기 위한 업스케일링 기술이다.

기본 원리는 간단하다. 게임을 실제로는 더 낮은 해상도로 렌더링한 뒤, 이를 GPU와 AI 기반 알고리즘으로 보간(재구성)하여 높은 해상도로 출력하는 방식이다.

이 과정을 통해 GPU는 처음부터 4K 해상도를 직접 렌더링하는 것보다 훨씬 적은 픽셀만 계산하면 되므로, 전체적인 성능 부담을 크게 줄일 수 있다.

10-3. Frame Rate Limiting

프레임 레이트(Frame Rate)는 초당 GPU가 처리해야 하는 프레임 수를 의미하며, 이는 곧 메모리 대역폭 사용량과 전력 소모에 직접적인 영향을 준다.

예를 들어,

  • 60 FPS에서 동작하던 게임을 → 30 FPS로 제한하면

초당 처리해야 할 프레임 수가 절반으로 줄어들기 때문에,프레임버퍼 읽기/쓰기, 텍스처 접근, 후처리 등 모든 렌더링 작업이 감소한다. 그 결과 대역폭 사용량과 전력 소모도 거의 절반 수준으로 감소하게 된다.

특히 모바일 플랫폼에서는 발열과 전력 제약이 매우 크기 때문에 프레임 레이트 설정이 성능 안정성에 큰 영향을 준다. 따라서 모바일 환경에서는 단순히 목표 FPS를 맞추는 것보다, 장시간 동안 안정적으로 유지 가능한 성능 수준을 설정하는 것이 중요하다.

10-4. Dynamic Performance Management System

모바일과 같은 발열 제약이 큰 환경에서는 단순히 고정된 그래픽 설정으로 게임을 실행하는 것보다, 기기의 상태에 따라 성능과 품질을 동적으로 조절하는 방식이 더 효과적이다.

이를 위해 사용하는 것이 동적 성능 관리 시스템(Dynamic Performance Management System)이다.

이 시스템은 디바이스의 온도, GPU/CPU 사용률, 프레임 유지 상태 등을 실시간으로 모니터링하고, 상태에 따라 그래픽 옵션을 자동으로 조정한다.

10-5. Bandwidth Budgeting

렌더링에서 사용할 수 있는 메모리 대역폭은 무한하지 않다. 하드웨어마다 한 프레임에서 처리할 수 있는 대역폭 용량에는 분명한 한계가 존재한다.

따라서 게임을 설계할 때는 한 프레임에서 어떤 요소가 얼마나 많은 대역폭을 사용하는지를 고려하고, 그 안에서 적절하게 분배하는 개념이 필요하다.

예를 들어,

  • 보스 스킬 연출 시

- 이펙트 품질 유지 - 대신 배경 LOD 감소 - 원거리 오브젝트 디테일 축소

  • 컷씬 연출 시

- 캐릭터 품질 유지 - 환경 텍스처 해상도 감소

  • 대규모 전투 상황

- 파티클 수 제한 - 후처리 단계 축소

위 예시처럼 모든 요소를 동시에 최고 품질로 유지하기보다는, 현재 장면에서 중요한 요소에 대역폭을 우선 배분하는 전략이 필요하다.

10-6. Resource Sharing(Recycling) & Draw Call Optimization

렌더링 성능과 대역폭 사용량을 줄이기 위해서는 GPU로 전달되는 데이터의 양 자체를 줄이는 것도 중요하다. 이를 위해 가장 효과적인 방법 중 하나가 리소스를 공유하거나 재활용하여 드로우콜을 줄이는 것이다.

Texture 리소스의 재활용 기법 예시

  • Trim Texture

- 실제로 사용되지 않는 텍스처 영역을 제거하여 텍스처 용량과 메모리 전송량을 감소시키는 방법

  • Texture Atlasing

- 여러 개의 작은 텍스처를 하나의 큰 텍스처에 합치는 방식

  • Texture Array

- 동일한 크기와 포맷의 텍스처들을 하나의 배열로 묶는 방식 셰이더에서 인덱스를 통해 텍스처 선택

10-7. Texture Resolution & Format Settings

GPU로 전송되는 텍스처 데이터의 크기를 최소화하는 것이 중요하다. 이를 위해 각 텍스처의 용도에 맞는 해상도 설정과 적절한 압축 포맷의 활용이 필수적이다.

10-8. Texture Mipmaps

Mipmap은 원본 텍스처를 여러 단계의 축소 해상도로 미리 생성해 두는 기능이다. 하나의 텍스처에 대해 1/2, 1/4, 1/8 크기와 같은 다양한 해상도의 버전을 함께 저장해 두고, 상황에 따라 적절한 해상도를 선택해 사용하는 방식이다.

렌더링 시 화면에서 멀리 있거나 작게 보이는 오브젝트는 굳이 원본 해상도의 텍스처를 사용할 필요가 없다. 이 경우 GPU는 자동으로 축소된 Mipmap 레벨의 텍스처를 선택해 사용한다.