유니티 엔진 (Unity Engine)

유니티 그래픽스 최적화 - 1.최적화 개요

원소랑 2019. 8. 30. 19:29
728x90

.

.

유니티 리드 에반젤리스트 오지현님의

"유니티 그래픽스 최적화 스타트업"

오랜만에 다시 읽기 시작해서 내용 정리 중입니다.

이전에 3챕터 다뤘고 이번엔 1챕터. 그냥 읽고 넘겨도 될 부분이 많아서 1챕터 정리는 짧네요.

제가 읽으면서 스터디 목적으로 간략하게 정리한 포스트입니다. 자세한 설명은 책 본문에서 확인해주세요.

 

 


 

1. 최적화 개요

최적화의 가장 중요, 병목 제거

 

1-1 최적화 이해

 

1-2 렌더링의 이해

 

슈렉의 법칙

기술 발전과 시간의 지남에 따라 렌더링 시간이 더 늘어남.

2001년 슈렉 1 렌더링 500만시간 데이터 크기 6TB

2004년 슈렉 2 렌더링 1000만시간

2007년 슈렉 3 렌더링 2000만시간

2010년 슈렉포에버 렌더링 4500만시간

 

슈렉1 데이터 크기 6TB

드래곤 길들이기 90TB

쿵푸팬더2 100TB

 

04 Frames per second

극장 영화 애니메이션은 24FPS

대부분 모니터 주사율도 60정도만 지원하고 그 이상은 인지하는 사람이 적다.

그래서 게임은 보통 40~60FPS 를 목표치로 삼는다.

 

05 모바일 디바이스의 성능

쓰로틀링(throttling)

기기의 발열이 심해져서 온도가 일정 이상 높아지면 자동으로 기기 성능을 낮추는 기능

모바일 기기는 발열 문제를 해결하기 어려워서 빈번하게 쓰로틀링 상태에 진입. 최적화 중요.

 

1-3 그래픽스 API

 

01 엔진과 그래픽스 API

DirectX 는 MS OS

OpenGL 은 MS Windows, Mac OS, Linux 등

OpenGL ES 는 주로Android, iOS 등 휴대용 기기 OS 록은 WebGL 을 통해 Web browser

Metal 은 iOS 의 차세대 그래픽 API

Vulkan 은 Android 차세대 그래픽 API

 

여러 플랫폼 GAPI를 지원하면 멀티플랫폼 엔진. 자체 엔진은 위 GAPI 들을 직접 사용.

 

Graphics API 외에도 공통적 시스템과 기능들.

- 씬, Hierarchy 구조

- Animation System

- Assets management

등등

 

유니티 문서 링크 : https://docs.unity3d.com/kr/2019.1/Manual/GraphicsAPIs.html

 

02 OpenGL & OpenGL ES

모바일 환경의 2D, 3D 그래픽스를 위해 더 작고 가벼운 표준 = OpenGL ES (Embedded System)

OpenGL 표준을 축소하여 만든 서브셋(Subset). 경량화 버전.

2003년 v1.0 발표.

~

2012년 v3.0

2014년 v3.1

2015년 v3.2 (최신)

https://ko.wikipedia.org/wiki/OpenGL_ES

 

03 Metal

WWDC 2014에서 발표

애플 iOS 전용 그래픽스 API

OpenGL ES 는 렌더링 파이프라인이 Multi Threading 안정성을 고려하지 않음.

Metal은 Multi Threading 활용. 드로우콜 오버헤드 줄임.

 

메모리 관리도 효율적. OpenGL 은 GPU메모리 CPU메모리 영역 구분.

모바일 디바이스는 물리적으로 하나의 메모리를 논리적으로 CPU영역 GPU영역 나눈다.

OpenGL ES 는 전통적인 방식으로 CPU 영역 메모리를 GPU영역 메모리로 복사하는 오버헤드.

Metal 은 구분 없이 메모리를 사용해서 효율적.

 

04 Vulkan

크로노스 그룹이 발표한 차세대 API. OpenGL 의 차세대 버전. 애플의 Metal 과 동급.

 

멀티쓰레딩 지원 설계. Metal 은 iOS만 지원, Vulkan 은 안드로이드, 타이젠 등 많은 기기 지원.

유니티 5.6 부터 Vulkan 지원.

 

05 유니티에서의 그래픽스 API 설정

Menu > Edit > Project Settings > Player 에서 설정.

안드로이드 아이콘 > Other Settings > Auto Graphics API

지원 가능한 디바이스에서 OpenGL ES2, OpenGL ES3 로 작동.

 

아이폰 아이콘 > Other Settings > Auto Graphics API

마찬가지로 OpenGL ES 나 Metal 중 지원하는 API 로 작동.

.

.

728x90
반응형