개발/언리얼 엔진
[UE4] 텍스쳐 스트리밍 시스템(Mipmap)
김디트
2021. 9. 29. 17:54
728x90
개요
메모리에 이슈가 있어 최적화가 필요할 때, 쉽게 떠올릴 수 있는 방법은 텍스쳐의 품질을 낮추는 것입니다.
하지만 무턱대고 저품질 텍스쳐를 사용하면 비주얼적으로 만족스럽지 않습니다.
상황에 따라서 고품질과 저품질을 취사선택할 수 있다면 좋을 것 같습니다.
그리고 밉맵의 역할이 바로 그것입니다.
텍스쳐 스트리밍 시스템
언리얼에서는 텍스처 스트리밍 시스템(스트리머)이 밉맵 기능을 제공합니다.
가용 메모리를 효율적으로 관리하면서 시각적인 퀄리티를 보장해줍니다.
좀 더 자세히 알아보도록 하겠습니다.
밉맵(Mipmap)
텍스쳐 스트리밍 시스템은 밉맵(혹은 Mips (밉))들로 텍스쳐 메모리를 관리합니다.
여기서 밉맵이란 무엇일까요.
밉맵이란 텍스처 해상도에 따라 미리 계산된 이미지 시퀀스들을 뜻합니다.
비유하자면 텍스처의 LOD라고 할 수 있습니다.
밉맵의 업데이트 과정
텍스쳐 스트리밍 시스템은 월드 뷰를 업데이트 할 때마다 아래의 과정을 처리합니다.
1. 밉맵 텍스쳐의 해상도를 결정
2. 밉맵들을 업데이트
아래는 좀 더 상세한 업데이트 과정입니다.
- 월드 뷰 업데이트
- 각 텍스처에 이상적인 해상도 계산
- 스트리밍 풀 크기에 따라 실제로 가능한 해상도 선택
- 업데이트할 텍스처 선택
- 로드 / 언로드 요청 생성
밉맵 텍스쳐 해상도 결정 순서
위에서 2번 과정, 각 텍스처에 이상적인 해상도 계산의 경우 아래 우선순위로 결정됩니다.
- 랜드스케이프(지형) 텍스쳐, 강제 로드 텍스쳐, 이미 해상도가 없는 텍스쳐는 현상을 유지합니다.
- 화면상에 보이는 밉은 현상을 유지합니다.
- 메모리를 많이 차지하지 않는 텍스처, 캐릭터 텍스처는 현상을 유지합니다.
- 현재는 보이지 않으면서 최근에 마지막으로 보였던 것부터 낮춥니다.
해상도가 결정된 텍스쳐 업데이트 순서
텍스쳐 해상도를 결정한 후, 해당 해상도 밉맵을 업데이트하는 순서(우선 순위)입니다.
- 보이는 밉을 로드합니다.
- 강제 로드 텍스처, 랜드스케이프 텍스처, 캐릭터 텍스처를 로드합니다.
- 목표 해상도와 가장 멀리 떨어진 텍스처를 로드합니다.
- 보이지 않는 것의 경우, 가장 최근에 보였던 것부터 로드합니다.
텍스쳐 해상도 한계
언리얼 엔진 4 는 텍스처 밉의 최대 수를 13 으로 제한하는 것을 기본으로 하고 있습니다.
즉 렌더링 가능한 최대 텍스처의 크기의 제한은 사실상 8192입니다. (1x1 에서 8192x8192 까지가 14 밉입니다).
728x90