.
.
유니티 리드 에반젤리스트 오지현님의
"유니티 그래픽스 최적화 스타트업"
오랜만에 다시 읽기 시작해서 내용 정리 중입니다.
이전에 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 로 작동.
.
.
'유니티 엔진 (Unity Engine)' 카테고리의 다른 글
유니티 그래픽스 최적화 - 5.라이팅 (Lighting) (0) | 2019.09.16 |
---|---|
유니티 그래픽스 최적화 - 4. 드로우콜과 배칭 (Draw Call & Batching) (1) | 2019.09.04 |
유니티 그래픽스 최적화 - 2.렌더링 파이프라인 (0) | 2019.08.30 |
유니티, 업스케일 샘플링(Upscale Sampling) 데모 (0) | 2019.08.27 |
유니티 그래픽스 최적화 - 3.병목 (0) | 2019.08.26 |
[Unity] 유니티 엔진 사용 팁 몇 가지 (0) | 2019.07.03 |
[Unity] 시각적 코딩 도구 PlayMaker (0) | 2019.07.02 |