유니티(Unity)/최적화 4

그래픽스 퍼포먼스 최적화(3) GPU 최적화

모델 지오메트리 최적화 - 필요 이상으로 삼각형을 사용하지 않습니다. - UV매핑의 경계 부분과 하드 에지(버텍스 2배)의 수를 최소화 합니다. GPU가 처리해야할 실제 버텍스의 숫자는 3D 응용 프로그램에서 알려주는 숫자와 보통 일치하지 않습니다. 모델링 응용 프로그램은 일반적으로 지오메트리 버텍스 수(모델을 구성하는 각 모서리 지점의 수)를 나타냅니다. 하지만, GPU에서 일부 지오메트리 버텍스는 렌더링 목적으로 둘 또는 그 이상의 논리 버텍스로 나눌 필요가 있습니다. 버텍스는 다수의 노멀, UV좌표나 버텍스 컬러가 있다면 분리돼야 합니다. 따라서 Unity에서의 버텍스 숫자는 보통 3D응용 프로그램에서 계수하는 것보다 클 수 밖에 없습니다. 모델의 지오메트리의 수가 GPU에 가장 중요하지만 Unit..

그래픽스 퍼포먼스 최적화(2) CPU 최적화

화면에 오브젝트를 렌더링 하려면 CPU가 많은 작업을 처리해야 합니다. CPU가 하는 작업 - 광원 계산 - 셰이더, 셰이더 파라미터 설정 - 드로잉 커맨드를 그래픽 드라이브에 전송 - 커맨드가 그래픽 카드에 전송되도록 준비 - 등등... 오브젝트 별 CPU 사용은 리소스를 많이 사용하는데 보이는 오브젝트가 많다면 CPU에 무리가 갈 수 있습니다. 예시) 1000개의 삼각형을 그릴때, 하나의 삼각형을 하나의 메시에 넣는 것(메시 1000개를 그림)보다 모든 삼각형을 하나의 메시(메시를 결합하여 1개만 그림)에 넣는 것이 CPU를 효율적으로 사용할 수 있습니다. 두 경우 GPU 코스트는 비슷함 CPU 작업량을 줄이는 방법 1. 가까이 있는 오브젝트를 수동이나 Unity의 드로우 콜 배칭을 활용해 결합 2...

그래픽스 퍼포먼스 최적화(1) 개요

게임을 제작하거나, 플레이하면서 최적화라는 이야기를 많이 들어보셨을텐데요. 이번 포스팅에서는 유니티에 최적화 관련 매뉴얼을 보기 편하게 정리하고 테스트까지 해보려고 합니다. 게임에서 훌륭하게 최적화를 했다는 것은 게임의 렌더링 속도를 최대로 끌어올리면서 그래픽 수준은 유지하는 것을 말합니다. 낮은 사양에서도 훌륭한 그래픽을 끊김 없이 표시할 수 있다면 최적화가 잘 되어있다고 할 수 있을 겁니다. 게임 그래픽은 CPU와 GPU가 주로 담당을 하고 있습니다. 어떠한 기법으로 최적화를 할지 정하기 전에, 먼저 어디에서 퍼포먼스 문제가 발생하는지 찾아야 합니다. CPU와 GPU 최적화는 전략이 완전히 다르기 때문입니다. GPU 최적화를 위해 CPU의 작업을 늘리거나 그 반대의 경우가 흔히 발생하기 때문입니다. ..

오브젝트 풀링(Object Pooling)이란?

이번 포스팅에서는 다양한 최적화 기법들 중에서 오브젝트 풀링(Object Pooling)에 관해서 알아보겠습니다. 간단하게 오브젝트 풀링을 설명하자면, 오브젝트의 Pool 즉 웅덩이를 만들어두고, 그 웅덩이 안에서 필요할 때마다 객체를 꺼내서 사용하는 것을 뜻합니다. 게임에서는 엄청나게 많고 다양한 오브젝트를 사용하는데, 이런 오브젝트들을 실시간으로 생성하고, 파괴하고를 반복하면 어떻게 어떻게 될까요? 수천수백의 오브젝트들이 게임상에서 등장하고 사라질 때, 새로 오브젝트들을 생성하고 거기에 파괴하면 메모리를 할당하고 해제하는 일이 반복될 것입니다. 할당과 해제는 CPU가 담당하고, CPU에 부담이 오브젝트가 많아질수록 더해지게 됩니다. 게다가 유니티에서 메모리 해제를 하며 가비지 컬렉터가 발생하는데, 많..