스토리텔링 개발자

[UE4] 텍스쳐 스트리밍 시스템(Mipmap) 본문

개발/언리얼 엔진

[UE4] 텍스쳐 스트리밍 시스템(Mipmap)

김디트 2021. 9. 29. 17:54
728x90

개요

메모리에 이슈가 있어 최적화가 필요할 때, 쉽게 떠올릴 수 있는 방법은 텍스쳐의 품질을 낮추는 것입니다.

하지만 무턱대고 저품질 텍스쳐를 사용하면 비주얼적으로 만족스럽지 않습니다.

 

상황에 따라서 고품질과 저품질을 취사선택할 수 있다면 좋을 것 같습니다.

 

그리고 밉맵의 역할이 바로 그것입니다.

 

 

 

텍스쳐 스트리밍 시스템

언리얼에서는 텍스처 스트리밍 시스템(스트리머)이 밉맵 기능을 제공합니다.

가용 메모리를 효율적으로 관리하면서 시각적인 퀄리티를 보장해줍니다.

 

좀 더 자세히 알아보도록 하겠습니다.

 

밉맵(Mipmap)

 

텍스쳐 스트리밍 시스템은 밉맵(혹은 Mips (밉))들로 텍스쳐 메모리를 관리합니다.

 

여기서 밉맵이란 무엇일까요.

밉맵이란 텍스처 해상도에 따라 미리 계산된 이미지 시퀀스들을 뜻합니다.

 

비유하자면 텍스처의 LOD라고 할 수 있습니다.

 

밉맵의 업데이트 과정

 

텍스쳐 스트리밍 시스템은 월드 뷰를 업데이트 할 때마다 아래의 과정을 처리합니다.

 

1. 밉맵 텍스쳐의 해상도를 결정

2. 밉맵들을 업데이트

 

아래는 좀 더 상세한 업데이트 과정입니다.

  1. 월드 뷰 업데이트
  2. 각 텍스처에 이상적인 해상도 계산
  3. 스트리밍 풀 크기에 따라 실제로 가능한 해상도 선택
  4. 업데이트할 텍스처 선택
  5. 로드 / 언로드 요청 생성

 

밉맵 텍스쳐 해상도 결정 순서

 

위에서 2번 과정, 각 텍스처에 이상적인 해상도 계산의 경우 아래 우선순위로 결정됩니다.

  1. 랜드스케이프(지형) 텍스쳐, 강제 로드 텍스쳐, 이미 해상도가 없는 텍스쳐는 현상을 유지합니다.
  2. 화면상에 보이는 밉은 현상을 유지합니다.
  3. 메모리를 많이 차지하지 않는 텍스처, 캐릭터 텍스처는 현상을 유지합니다.
  4. 현재는 보이지 않으면서 최근에 마지막으로 보였던 것부터 낮춥니다.

 

해상도가 결정된 텍스쳐 업데이트 순서

 

텍스쳐 해상도를 결정한 후, 해당 해상도 밉맵을 업데이트하는 순서(우선 순위)입니다.

  1. 보이는 밉을 로드합니다.
  2. 강제 로드 텍스처, 랜드스케이프 텍스처, 캐릭터 텍스처를 로드합니다.
  3. 목표 해상도와 가장 멀리 떨어진 텍스처를 로드합니다.
  4. 보이지 않는 것의 경우, 가장 최근에 보였던 것부터 로드합니다.

 

텍스쳐 해상도 한계

 

언리얼 엔진 4 는 텍스처 밉의 최대 수를 13 으로 제한하는 것을 기본으로 하고 있습니다.

즉 렌더링 가능한 최대 텍스처의 크기의 제한은 사실상 8192입니다. (1x1 에서 8192x8192 까지가 14 밉입니다).

728x90
Comments