본문 바로가기
개인 성장 일지/언리얼 엔진

언리얼 엔진 : 텍스처 최적화

by 류 진 2023. 10. 23.
728x90

언리얼 엔진에서 텍스처가 어떻게 사용되는 지 보는 방법

툴 → 검사 → 통계 를 연다.

열어서 '텍스처 통계'를 선택하여 확인할 수 있다.

 

여기서 다양한 정보를 파악할 수 있다. 상단의 정보들을 클릭하여 오름차순과 내림차순을 토글할 수 있다.

  • 씬에 있는 텍스처의 최대 치수와 현재 치수
  • 현재 메모리
  • 완전 로드된 메모리
  • 텍스처가 사용된 횟수

다양한 정보들이 있는데, 최적화하는 방법은 여러 개가 있다.

 

씬에서 사용하는 텍스처의 개수를 줄이거나, 텍스처의 크기를 줄이는 방법이 있다.


텍스처 크기를 줄이는 법

더 높은 해상도의 텍스처를 샘플링하면 GPU 비용이 높아진다.

 

화면에서 우리 눈에 잘 안보이는 것들도 있을 거고, 엄청 많이 보이는 것도 있을 텐데, 모든 오브젝트의 해상도가 전부 높을 필요는 없을 것이다. 그러니, 텍스처의 크기를 줄여보자.

 

각 텍스처를 개별적으로 조정할 수 있다.

 

텍스처를 눌러 열면 디테일 부분에 최대 텍스처 크기가 존재한다.

 

최대 텍스처의 크기가 너무 크다고 생각되면 해당 부분에서 텍스처 크기를 지정하면 된다.

 

 

바꿔야 할 텍스처가 많다면, 이렇게 하나씩 작업하면 시간이 오래 걸릴 것이다.

 

그렇다면, 하나씩 변경하기 보다는 콘텐츠 브라우저에서 텍스처를 모두 선택해서 동일하게 바꾸는 방법도 있다.

  1. 컨텐츠 브라우저에서 '컨텐츠' 폴더를 클릭하여 이동한 후, 필터로 '레벨에서 사용 중', '텍스처' 를 통하여 사용중인 모든 텍스처를 전체 선택
  2. 에셋 액션 → 프로퍼티 매트릭스를 통한 대량 편집 선택

그러면 엄청나게 복잡한 것이 뜬다.

우측 디스플레이의 Compression을 보면 '최대 텍스처 크기'가 있는데, 저것을 통해 한 번에 변경할 수 있다.

 

텍스처를 선별적으로 조정해야할 수도 있다.

그런 경우, 디스플레이 좌측에 '핀 모양'을 누르면 바로 옆에 개별로 조절할 수 있는 칸이 뜬다.

 

최대 텍스처 크기 수정 시 유의할 점

일반적으로 좋은 방법은

  • 알베도 : 전체 해상도
  • 노멀 맵 : 절반 해상도
  • 퍼르니스 맵 : 4분의 1 해상도

텍스처 크기로 사용해야 하는 숫자는 2의 제곱이어야 한다. 512×512, 1024×1024 등.

 

이 원칙은 밉 생성에 매우 중요하다.

밉에 대한 자세한 설명은 여기를 참조

 

그렇게 하지 않으면 언리얼 엔진이 해당 텍스처의 밉맵을 생성할 수 없다.

 

밉이 없는 텍스처는 VRAM 로딩에 영향을 미치지만, 스트리밍은 되지 않는다. 그래서 너무 많은 텍스처를 불러오려고 하면 충돌이 발생할 수도 있다.


밉맵 체인

언리얼 엔진에서 밉맵은 텍스처를 임포트하는 중에 생성되며 텍스처에 대한 밉맵 체인을 생성한다.

 

밉맵 체인은 여러 레벨의 샘플 이미지로 구성되며 각 레벨의 해상도는 이전 레벨의 절반이다.

 

그래서 낮은 밉을 사용하면 그래픽 카드의 렌더링이 빨라지고, 텍스처의 에일리어싱이나 떨림도 줄어든다.

 

생성되는 밉은 해상도에 따라 다르다.

 

해상도가 높은 텍스처에는 더 높은 밉이 필요하다.

 

이제 엔진이 밉 체인을 따라 내려가면서 각종 필요 해상도나 스트리밍 풀 등 각종 휴리스틱을 만족하는 해상도를 찾는다.

그래서 프로젝트에 흐린 텍스처가 생길 수 있다.

 

때로는 엔진이 바람직한 수준보다 낮은 밉을 사용하는데, 모든 텍스처를 스트리밍 풀 용량 이내로 맞추려 하기 때문이다.

밉맵을 생성하고 싶지 않을 때도 있지만, 이 경우에 대해서는 다음에 다룬다.