개발/Unreal Engine / / 2022. 4. 2. 20:08

Learning Unreal 4 언리얼 공부일지 - 언리얼 엔진 최적화에 대해서

반응형

언리얼에서 최적화 작업을 하기 위해서 FPS를 확인할 수 있다.

 

~를 이용해서 커맨드를 열어 Stat FPS를 확인할 수 있다.

 

모델을 최적화 하기 위해서 LOD를 줄이는 방법을 사용해보자.

이렇게 와이어프레임 뷰를 통해서 거리에 따라 LOD가 달라지는 것을 확인할 수 있고, LOD개수를 설정하여 거리에 따라 설정되는 LOD를 조절할 수 있다. 만약 고퀄리티의 LOD만을 사용해서 중간에 LOD가 변경하지 않아야한다면 LOD를 1개만 사용하는 방법이 있다.

 

미리 LOD세팅이 되어있는 경우에는 위와 같이 LOD개수가 설정되어있지만, LOD가 처음에 하나만 세팅되어있는 경우 LOD개수를 늘려 설정함으로써 더 낮은 퀄리티의 LOD를 생성해주어 최적화할 수 있다.

 

이번에는 텍스처를 보자.

Albedo 텍스처의 디테일을 보면 텍스처의 해상도가 몇 * 몇 픽셀인지 확인할 수 있다. 텍스처 사이즈는 프레임보다는 로딩할 때 리소스를 불러오는 시작시간에 영향을 미친다.

 

텍스처의 디테일에서도 LOD를 볼 수 있다. LOD Bias를 조절하면

이렇게 인게임에서 표시되는 해상도가 변한 것을 확인할 수 있다. 리소스 크기 또한 줄어들었다.

 

Albedo뿐만 아니라 Normal, Roughness 등 텍스처가 필요한데, 4K 텍스처 하나에 적어도 30MB이상 들어가므로 최적화는 상당히 중요하다.

 

임포트하는 텍스처 자체의 용량을 줄일 때, ORM 텍스처를 사용한다. 

ORM Texture

일반적으로 텍스처는 RGBA의 컬러채널을 가지고 있다. 즉 각 채널마다 따로 연결할 수 있는데, 

앰비언트 오클루전은 오브젝트 사이의 경계에 발생하는 음영 처리를 세부적으로 나타내는 것이다. 이러한 앰비언트 오클루전에 해당하는 텍스처맵도 있다.

ORM은 ambient Occlusion, Roughness, Metalic 세 가지의 텍스처 맵을 사용하는 방식이다.

 

일반적으로 ORM 텍스처를 사용하는 방법은 이렇다.

Red 채널에는 ambient Occlusion, Green 채널에는 Roughness, Blue 채널에는 Metalic 맵을 사용한다.

 

stat RHI라는 커맨드를 입력하면 위 그림과 같은 상태표가 나온다. 이 표의 Triangles drawn column에 그리고 있는 삼각형의 개수를 표시한다. usedMax를 확인하면 대략 130만 개의 폴리곤을 사용하고 있는데, 이는 높은 수치는 아니며 대략 천만이나 억 단위로 증가할 경우 최적화가 필요하다.

DrawPrimitive call는 언리얼 엔진에서 돌아가는 실행 명령의 개수이다. 예를 들어 블루프린트에서 node사이의 간선이나 개별 오브젝트 하나하나 단위로 이루지는 것들 모두가 Draw call이다.

 

stat UNIT 명령어를 통해 frame rate 아래쪽에 다양한 정보가 나온다.

Frame은 프레임 한 개를 그리는데 걸리는 시간이다.

Game은 CPU의 속도, GPU는 GPU의 속도이다.

엔진을 최적화하는 과정에서 병목현상 등을 처리하는 행위를 프로파일링이라고 한다. 

 

위와 같은 표를 stat GPU 커맨드를 이용해서 할 수 있다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유